ほとんどの企業でかなり一般的な要件を実行するために、そこにある最良の、試行され、テストされた(そして新しい?)方法についての私の質問。すべての会社には顧客がいます。そして、会社Aがそのビジネスニーズのために約10の異なるシステムを持っているとしましょう。顧客はすべてのシステムにとって重要です。顧客はどのシステムでも独立して維持できますが、同期が取れていない場合は良くありません。私は、顧客の記録のために1つの大きなマスターの場所/システムを保持し、他のすべてのシステムにその単一の場所/システムからその情報を取得させることが理想的であることを知っています。このようなものをどのように構築しますか..SOA?ETL?ウェブサービス?など。他の新しいアイデア…そして古い方法を忘れないでください。私たちはMS/.NETショップです。これは主に私の知識と学習のためです。正しい方向に私を向けてください。私のすべての選択肢を認識したいと思います。
2 に答える
理想的には、すべての異なるシステムが同じデータベースを共有します。その場合、そのデータベースがマスターになります。しかし、それはほとんどありません。
したがって、私が見た中で最も一般的な方法は、10の異なるシステムからフィードを取得し、それらを集約して、顧客の「マスター」ビューを形成するさらに別のシステム(データウェアハウスと呼びます)を用意することです。
私はこのようなことは何もしていませんが、ここでのアイデアで遊んでいるのが私の考えです。おそらく何かが役立つでしょう。
これは難しい質問であり、主に10のシステムのそれぞれで利用できる開発能力とインターフェイスに依存すると思います。次の段落で説明するように、関連する10のシステムのさまざまなタイプのインターフェイスすべてに対応するさまざまなプラグインを使用して動作するデータウェアハウスマネージャーのソフトウェアが必要になる場合があります。
データウェアハウスのアイデアから考える:理想的には、各システムの各顧客にLastModified
フィールドがありますが、それはおそらくありそうもないことです。したがって、ほとんどの場合、各ソースから顧客レコードをシリアル化し、プログラムがそのレコードを最後に更新したときにデータウェアハウスデータベースに保存する必要があります。このアイデアにより、10のシステムのいずれかで何かが変更されたときはいつでも、どのレコードが最新であるかを正確に知ることができ、それに基づいてフィールドを更新できます。これは、一部のシステムを開発しておらず、何らかの方法のインターフェイスからしか読み取れない場合に実行できる最善の方法です。
すべてのシステムを開発している場合は、他のすべてのシステムに(おそらくマスターハブアプリケーションを介して)更新を伝達するためのWCFインターフェイス(一般にWebサービスよりも接続オプションが多いためWCFについて言及します)が最も簡単かもしれません。オプション。保存ボタンのイベントから、またはLastModified
1時間/日ごとにフィールドをチェックして、新しい値と更新された日付を渡します。
もう1つの問題は、1つのCustomerオブジェクトにAddressフィールドがあり、別のオブジェクトにはない場合にどうなるかということです。これら2つのオブジェクト間の更新は、どのような場合でも相互に上書きされますか?または、ある人が持っていてCustomerName
、別の人が持っていてCustomerFirstname
、CustomerLastname
可変データ構造とキャッシュされた値をダーティとしてマークする機能に関するNoSQLのアイデアも多少思い浮かびますが、これらのコンセプトが実際にどれほどのメリットをもたらすかはわかりません。