3

複雑なプラットフォームを構築していますが、その「モジュール」ごとに専用のデータベースが必要です。しかし、usersテーブルのようないくつかの一般的なテーブルを持つ「マスター」データベースが必要です。複数のデータベースのテーブル間に外部キーを設定できる必要があります。(user_idのように)

データベースが現在のサーバーと同じサーバーにある場合は、データベース間の関係を築くことができますが、アプリケーションが大幅に大きくなると、データベースを複数のサーバーに分割する必要がある可能性があるため、これに制限されたくありません。

ですから、決断を下す前に、すべての選択肢を検討しています。

これについてどう思いますか?

私はmysqlを使用しています。

4

1 に答える 1

4

これは、 FEDERATEDストレージエンジンを使用して行うことができます。FEDERATEDエンジンを使用してローカルテーブルを作成します。このエンジンは、リモートシステムに接続してクエリを解決します。しかし、これのパフォーマンスについてはわかりません。


より良いアプローチは、アプリケーションデータモデルを再考することかもしれません。複雑なシステムのモジュールごとに個別のデータベースが必要な理由は理解できますが、テーブルデータの一部を共有する場合は困難になります。あるモジュールで適用されているが別のモジュールでは適用されていないデータにいくつかの制限を導入すると、保守がさらに難しくなります。

解決策は、データに関する関心の分離です。各モジュールに独自のデータベースを持たせますが、モジュールが他のモジュールにデータを照会しないようにします。モジュールがユーザーに関するデータを必要とする場合は、モジュールを介してデータをフェッチしuserます。

于 2012-06-04T10:48:19.270 に答える