135

モノリシック アプリケーションをマイクロサービスに分割しようとしている人にとって、データベースを分割するという難問にどのように対処していますか。私が取り組んできた典型的なアプリケーションは、パフォーマンスと単純さの理由から多くのデータベース統合を行っています。

論理的に異なる 2 つのテーブル (場合によっては境界付けられたコンテキスト) があるが、そのデータの大量の集計処理を頻繁に行う場合、モノリスではオブジェクト指向を避け、代わりにデータベースの標準を使用する可能性が高くなります。 JOIN 機能を使用して、集計されたビューをアプリ層に戻す前にデータベース上のデータを処理します。

データベースではなくAPIを介してデータを「結合」する必要があると思われるマイクロサービスにそのようなデータを分割することをどのように正当化しますか。

私は Sam Newman の Microservices book を読みました。モノリスの分割に関する章で、彼は「Breaking Foreign Key Relationships」の例を挙げており、API を介した結合を行うと遅くなることを認めていますが、とにかくあなたのアプリケーションは十分に高速ですが、以前よりも遅くても問題はありませんか?

これは少しばかげているようですか?人々の経験とは?API 結合を適切に実行するために使用した手法は何ですか?

4

5 に答える 5

3

使用領域、たとえば運用とレポートのソリューションを分けます。

他のマイクロサービスからのデータを必要とする単一のフォームにデータを提供するために動作するマイクロサービス (これは運用上のケースです) の場合、API 結合を使用することが道だと思います。大量のデータを取得する必要はありません。サービス内でデータ統合を行うことができます。

もう 1 つのケースは、集計などを行うために大量のデータに対して大きなクエリを実行する必要がある場合です (レポート ケース)。この必要性のために、共有データベースを維持することを考えます。元のスキームと同様に、マイクロサービス データベースからのイベントで更新します。この共有データベースでは、労力を節約し、データベースの最適化をサポートするストアド プロシージャを引き続き使用できます。

于 2018-04-03T07:45:14.690 に答える