2016-08-22 4 views
1

私が作成した場合、単一のtable(またはdocument databasesdocumentaggregate typeごとに、私は、データベースをマージしたり、私がwrite側のmicroservices、とをリファクタリングするたびにそれらをシャードすることができ、結果アプリケーションとしてよりスケーラブルになり、ロードの速度も向上しますeventsどのイベントソーシングイベントを保存するためにMongoDBのデータモデルを設計する

私はevent storeのように設計していますが、注意すべきことはありますか?

編集:

私は現在MongoDbを使用しています。

collectionaggregate idごとに作成するとどうなりますか? aggregate typeあたりdatabase、およびcollection1,aggregate id ...?

パフォーマンス、データ管理の容易性、保守性、またはスケーラビリティに問題がありますか?

+1

役立つかもしれないあなたは、テーブルごとの集約型(テーブル内のすべてのイベント行)について話していますか集計インスタンスごとのドキュメント(インスタンスごとに1つのドキュメント、ドキュメント内の配列としてイベント、すべての集計に対して1つのコレクション) –

+0

「MongoDBデータモデルを設計してイベントソーシングイベントを保存するにはどうすればよいのですか? – guillaume31

+0

@ guillaume3:この種のイベントデータ設計は、非線形のイベントストア(すべての集合体が単一のテーブルやドキュメント、ファイルには順序付けられていません)に書き込み側でつながります。異なる状況(特にMongoDb)で提供できる問題。たとえば、おそらくそのようなデザインはSQLデータベースではOKですが、MongoDbでは問題ありません。 – Mohsen

答えて

1

単一のテーブル(またはドキュメントデータベース内のドキュメント)を作成すると、書き込みマイクロサービスをリファクタリングするたびにデータベースをマージまたはシャードできます。その結果、アプリケーションのスケーラビリティが向上します。

このようなイベントストアを設計する際に気をつけなければならない副作用はありますか?

私はそのデザインの権威ある議論を見たことがありません。

イベントソーシングコミュニティでは、それぞれタイプの個別テーブルが集約されたという議論がありました。議論hereを見つけることができます。エグゼクティブサマリー:経験豊富な開業医は、誰でもその目的のためにそれをやり遂げるようになったようです。

あなたが念頭に置いておくべきことの1つは、イベントが実際のものです(彼らはビジネスにとって興味深いものを記述します)。集約境界を再設計するには、イベントをどこにでも移動する必要がある場合は、おそらく不幸になるでしょう。

以下は

+0

:ありがとうございます。その答えは十分にはっきりしていません。明瞭に説明してください。 「そのデザインの権威ある議論は見たことがない」という文章の中で、「それ」とはどういう意味ですか?あなたを驚かせる。 – Mohsen

+0

私はちょうど質問を明確にした。 – Mohsen

関連する問題