これまでのストーリー:最初に、1つのWebアプリケーションと1つのデータベースを取得しました。次に、製品所有者は最初のアプリケーションのスピンオフを行うことを決定しました(最初のアプリケーションが衣料品のサイトである場合、2番目のサイトはベビー服専用のサイトです)。2番目のアプリ用に2番目のデータベースを作成しました。そして3番目、4番目、n番目。データベースの情報が交差していなかったので、私はその決定を正当化することができます。
現在:プロダクトオーナーは、スーパーアプリケーションを作成することを決定しました。1つのアプリケーションですべてを統治します。一般的な話:ユーザーがいくつかの製品に対してクエリを実行し、その結果には、さまざまなデータベースからの集約データが含まれている必要があります(すべてではありませんが、nからのk)。
質問:私たちの前に発生する一般的な問題を解決するためのいくつかの一般的なパターンはありますか?
最初のアプローチ:スーパーデータベース(すべてのデータベースデータ、1つの巨大なデータベースにコピー)
- 長所:必要なクエリは1つだけです。並べ替えやその他のフィルタリングを適用する方が簡単です
- 短所:アイテムのオリジンデータベースをどのように区別するか。IDの競合の可能性があります。時間のかかる危険な情報のコピーを実行する必要があります。古いアプリケーションとの下位互換性はありません
2番目のアプローチ:同じデータベース(変更なし)
- 長所:アプリケーションには下位互換性があります。危険な対処法はありません
- 短所:1つのクエリが複数のクエリになります(遅く、集約が困難)