質問

組織が多くの部門やアプリケーション間で重要なデータを共有するための良い方法は何でしょうか?

例として、顧客データを管理するための主要なアプリケーションとデータベースが 1 つあるとします。組織内には、そのデータを読み取り、それを独自のデータに関連付けるアプリケーションとデータベースが他に 10 個あります。現在、このデータ共有は、データベース (DB) リンク、マテリアライズド ビュー、トリガー、ステージング テーブル、再キーイング情報、Web サービスなどを組み合わせて行われています。

データを共有するための他の良いアプローチはありますか?また、次のような懸念に関して、あなたのアプローチは上記のアプローチとどう比較されますか?

  • 重複データ
  • エラーが発生しやすいデータ同期プロセス
  • タイト vs.疎結合 (依存関係/脆弱性/テスト調整の軽減)
  • アーキテクチャの簡素化
  • 安全
  • パフォーマンス
  • 明確に定義されたインターフェース
  • 他に関連する懸念事項はありますか?

    共有顧客データは、単純な単一レコードのクエリから、複雑な複数述語、複数ソート、異なるデータベースに保存されている他の組織データとの結合まで、さまざまな方法で使用されることに留意してください。

    ご提案やアドバイスをありがとうございます...

  • 役に立ちましたか?

    解決

    私はあなたが「これは依存」、これが来るのを見ています。

    これは、すべてのものに依存します。そして、部門Aのために顧客データを共有するソリューションは、部門Bで顧客データを共有するための完全に異なる場合があります。

    年間で立ち上がった私のお気に入りのコンセプトは「結果整合性」の概念です。用語は、分散システムの話をアマゾンから来ています。

    が前提分散企業全体のデータの状態は、現在完全に一貫性がないかもしれないが、それは「最終的に」となることである。

    たとえば、顧客レコードがシステムA上で更新されたときに、システムBの顧客データは現在、古いと一致していません。しかし、「最終的に」、Aからのレコードは、いくつかのプロセスを経てBに送信されます。だから、最終的には、2つのインスタンスが一致します。

    あなたは、単一のシステムで動作する場合、

    、あなたではなく、あなたが一般的にインスタントアップデート、シングル「真実の源」、及び、ハンドル競合状態と競合するロック機構を持っている、「EC」を持っていません。

    より多くのことができ、あなたの操作は、「EC」データを扱うことが可能となり、容易にそれはこれらのシステムを分離することです。簡単な例では、営業で使用データウェアハウスです。彼らは毎日レポートを実行するためにDWを使用しますが、彼らは早朝まで、そのレポートを実行していない、と彼らは常に「イエスタデイズ」(またはそれ以前)のデータを見てください。だから、DWは、日常業務システムと完全に一致するようにのためのリアルタイム必要はありません。これは、大規模な、単一の更新操作で日取引や活動大挙上緊密なビジネスや移動の、言う、で実行するプロセスのために完全に受け入れます。

    あなたはこの要件は、問題の多くを解決することができるかを見ることができます。トランザクションデータ、報告書は、ライブデータベースへの2つの別々のクエリを作ったので、いくつかのレポートデータは、統計を蓄積の途中で変更しようとしていることを心配のための競合はありません。日中のネットワークとCPUの処理などを吸い上げる高細部おしゃべりのために必要はありませんん。

    さて、それは単純化し、極端な、とECの非常に粗い例です。

    しかし、Googleのような大規模なシステムを検討します。検索の消費者として、私たちは考えている場合、またはそれが検索ページにGoogleの収穫その方法をアップし、検索結果のために要する時間。 1msの? 1秒? 10S? 10hrs?それはあなたがグーグル西海岸サーバをヒットしている場合、あなたは非常によくあなたが彼らの東海岸のサーバをヒットした場合よりも異なる検索結果を得ることができますどのように画像化するのは簡単です。どの時点で、これらの2つのインスタンスが完全に一致しています。しかし、大規模な措置によって、彼らはほとんど一致しています。そして、彼らのユースケースのために、彼らの消費者は本当にラグや遅延の影響を受けません。

    メールを考えてみましょう。 Aは、別のBにメッセージを送信したいが、プロセス内のメッセージは、システムC、D、およびEを介してルーティングされる各システムがメッセージを受け入れ、それのための完全な責任を負い、次に手をオフ。送信者は、その途中で電子メール、外出先を見ています。彼らは必ずしもそのが来るかわからないので、受信機は実際にそれを見逃すことはありません。だから、それはそれがどのように速くについて知って心配誰か気にすることなくシステムを移動し、そのメッセージのために取ることができる時間の大きな窓があります。

    一方、AはBとの電話であったかもしれない「私はただ、それを送ったあなたは今?今?まだそれを得る?今それを買ったの?」

    はこのように、パフォーマンスと応答の根底にある、暗黙のレベルのいくつかの種類があります。最後には、 "最終的に"、Aの送信トレイには、Bの受信トレイにマッチします。

    これらの遅延、古いデータの受け入れは、その日の古いまたは古い1-5sかどうか、あなたのシステムの究極的な結合を制御するものです。緩いこの要件、疎結合、そしてあなたは、デザインの面であなたの処分で持っているより多くの柔軟性ます。

    これはあなたのCPUでコアに真ダウンしています。同じシステム上で実行されている現代、マルチコア、マルチスレッドアプリケーションでは、「同じ」データの異なるビュー、日付のうち唯一のマイクロ秒を持つことができます。あなたのコードは、データPotentiaでで正しく動作することができた場合お互いに、そして幸せな一日とLLY矛盾し、それに沿ってジッパー。そうでない場合、あなたはあなたのデータを保証するために特別な注意を払う必要がある揮発性メモリ格のような技術を使用して、完全に一致している、または構造をロックする、などすべてが、彼らの方法では、コストパフォーマンスます。

    だから、これは基本考慮事項です。他の決定の全てはここから。これを答えることマシン間でパーティションアプリケーションに、どのようなリソースを共有しており、それらがどのように共有されているかを伝えることができます。どのようなプロトコルおよび技術は、データを移動するために利用され、それが転送を実行するための処理の面でどのくらいの費用がかかります。などの複製、負荷分散、データの共有などがすべてこの考え方に基づいています。

    最初のコメントに応じて編集し、ます。

    正しい、正確に。ここでのゲームは、例えば、Bは、顧客データを変更することができない場合は、変更された顧客データとの害は何ですか?あなたは「リスク」は、それは短時間の日付の出ていることはできますか?おそらく、あなたの顧客データが十分にゆっくりあなたはすぐにAからBにそれを複製することができることにしています。変更が低いため、ボリュームの、(<1秒)容易に拾われますが、それでもまだ、それは本来の変化に対応し、「取引のうち」になり、そのためAが持っているだろう、小さなウィンドウがあります、というキューに置かれていると言いますデータBがないこと。

    今、心が本当にスピンを開始します。どのような「遅れ」の1Sの間に起こる、最悪のシナリオをいただきました。そして、あなたはその周りにエンジニアリングすることができますか?あなたは1秒が遅れる周りのエンジニアができた場合は、5S、1メートル、またはさらに長いラグを周りのエンジニアにできる可能性があります。どのくらいの顧客データのあなたは、実際にBに使用するのですか?たぶん、Bはインベントリからピッキング順序を容易にするために、設計されたシステムです。ハードは何がより簡単に顧客IDと、おそらく名前よりも、必要なものを想像します。ただ、何かがひどく順序は、それが組み立てられている間のために誰であるかを識別します。

    はピッキングシステムは、必ずしもピッキングプロセスの最後の最後まで、顧客情報のすべてをプリントアウトする必要はありませんし、その後で順序は、おそらく、特に、出荷とより最新であることを別のシステムに移動した可能性があり情報は、その最後に選ぶシステムは、すべてのほとんどすべての顧客データを必要としません。実際には、あなたはとても後で同期の必要性や期待はありません、ピッキング順序内の顧客情報をEMBEDおよび非正規化ができます。長い顧客IDが正しいか(とにかく決して変わらないもの)と(それが議論する価値はありませんので、めったに変化しない)の名前、あなたが必要とする唯一の本当の参照だこと、そして自分のピックスリップの全てが時に完全に正確である限り創造ます。

    トリックは、システムを解体し、タスクのために必要なのです重要なデータに焦点を当てたの、考え方です。データはあなたの必要性は複製したり、同期する必要はありませんありません。人々は、彼らが世界をモデル化し、リレーショナル・データからしている場合は特に、非正規化やデータ整理のようなもので擦れ。そして、正当な理由で、それは慎重に検討すべきです。あなたが配布行くいったんしかし、あなたは暗黙的に非正規化しています。ヘック、あなたは卸売今、それをコピーしています。だから、あなたにもそれについて賢くなることがあります。

    固体手続きやワークフローの十分な理解によって緩和すべて、このことができます。リスクを特定し、それらを処理するためのポリシーと手順を働くます。

    しかし、ハードの部分は、初めに中央のDBへのチェーンを壊し、そして、彼らはあなたが情報の単一の中央、完璧な店舗を持っている場合、彼らが期待することがあります。同様に、「それはすべて持っている」ことができないことを人々に指示されました

    他のヒント

    これは間違いなく、包括的回答ではありません。申し訳ありませんが、私の長い記事のために、私はそれがここに提示されるだろう思考に追加されます願っています。

    私はあなたが言及したことの側面の一部には、いくつかの観測を持っています。

    duplicate data
    

    これは通常departmentalizationまたは専門の副作用であるというのが私の経験をされています。他の専門グループによる有用であると見られている特定のデータの部門のパイオニアコレクション。それはそれを利用するために、他のデータ収集と混ざり合っているよう彼らは、このデータに固有のアクセス権を持っていないので、彼らはあまりにも、本質的にそれが複製すること、データを保存/収集を開始します。この問題が消えることはありませんし、コードをリファクタリングし、重複を除去する際にcontinuosの努力があると同じように、継続的に集中アクセス、ストレージ、および修正のための重複データを持参する必要がある。

    well-defined interfaces
    

    ほとんどのインタフェースは、善意を念頭に置いて他の制約を維持して定義されています。しかし、我々は、単に以前に定義されたインタフェースによって課される制約から出て成長しているの習慣を持っています。ここでもリファクタリングcontinuos用ケースます。

    tight coupling vs loose coupling
    

    は任意のものならば、ほとんどのソフトウェアは、この問題に悩まされています。密結合は、通常、私たちが直面している時間の制約与えられた便宜的ソリューションの結果です。疎結合は、我々は物事を成し遂げるにしたいとき嫌い複雑ある程度の負担します。数年間ラウンドを行くと、私は完全にポイント

    を軽減することをソリューションの良い例を見て、まだ午前されたマントラWebサービス
    architectural simplification
    
    私にはこれは、あなたの質問に言及したすべての問題を戦うための鍵です。 H.323 VoIPの物語対SIPは、私の心に入ってきます。 H.323は、一般的な電気通信標準のようなVoIPのおよそ地球上のすべての問題を想定し、そのためのソリューションを提供しようとしながら、SIPは、非常に簡単にビルドに、簡略化されています。最終結果は、SIPは、より迅速に成長しました。 H.323に準拠ソリューションであることが苦痛です。実際には、H.323準拠のメガ降圧業界でます。

    On a few architectural fads that I have grown up to.
    

    長年にわたり、私はそれの簡略化のためのRESTアーキテクチャのように開始しています。これは、データとその周りにビルドアプリケーションに簡単に簡単にユニークなアクセスを提供します。私は、これらの病気のいくつかに万能薬を提供して私には、パフォーマンスなどRESTのような他の問題よりも、データの複製、分離およびアクセスからもっと苦しむエンタープライズソリューションを見てきています。

    私は中央の「データハブ」のコンセプトのように、これらの問題の数を解決するには。 Aデータ・ハブは、特定のエンティティのための「真実の単一ソース」を表しますが、唯一のIDを格納する、実際にはなどが名などの一切の情報は、それが唯一の店舗のIDマッピングしません - 例えば、これらはシステムAの顧客IDをマップにシステムBから、およびシステム間のシステムC.界面に顧客番号のクライアント数は、他の1つのシステムに情報を関連させる方法を知っているハブを使用します。

    これは、中央の翻訳のようなものです。 A-:代わりに、A-> B、A-> C、およびB-> Cからのマッピングの書き込み、特定のコードを、あなたはより多くのシステムを追加すると、その出席指数関数的に増加して、あなただけのハブから/へ変換する必要がありになるの>ハブ、B->ハブ、C->ハブ、D->ハブなど。

    ライセンス: CC-BY-SA帰属
    所属していません StackOverflow
    scroll top