私はhttp://highscalability.com/の大ファンです。現在の開発では、サーバー側、特にデータベース層をスケールアウトできるようにするためのルートとして、機能境界に沿ってアプリケーションを分解することを検討しています。これには、アプリケーションのさまざまな機能コンポーネント (顧客が使用できるいくつかの個別のモジュールがあります) をサーバー上の独自の独立したアプリケーションとして実装することが含まれます。サーバーに接続するクライアントは、さまざまなデータのために接続する必要がある個別のサービスを認識しています統一されたビューがユーザーに表示されます。問題は、異なるコンポーネント内のデータ間にリンクがある場合に発生します。つまり、1 つのコンポーネントがすべてのユーザー データを保持しているが、別のコンポーネントがデータの一部の所有者としてユーザーを参照する必要がある場合です。私' m 現在、リンクの各サイドの主キー情報を保持することでこれを行っています (それらがすべて単一のデータベースに存在する場合と同様)。ただし、このリンク テーブルは両方のコンポーネントに存在して、どちらの方向でもルックアップを実行できるようにする必要があります。 、つまり、「特定のユーザーが所有するものを取得する」と「この特定のものの所有者を取得する」は、それぞれ異なるコンポーネントを使用します。これに代わる方法は、リンク データをコンポーネントの 1 つだけに格納することですが、その場合、逆引き参照には 1 回ではなく 2 回の呼び出しが必要になります。
私の質問はこれです.これらのリンクテーブルの重複は、私が避けるべきある種のコードの臭いですか、それとも、このような機能ラインに沿ってアプリを分割するときの方法ですか?