1つのアーキテクチャと、さらにいくつかの永続性ハイブリッド アーキテクチャを見つけました。
MongoDB (または Cassandra、CouchDB) と MySQL (任意の RDBMS) を (PHP、Java アプリケーションの場合) 結合する方法を示す実装レベル、詳細な記事、チュートリアルへのリンクを誰かが持っているかどうか疑問に思います。
1つのアーキテクチャと、さらにいくつかの永続性ハイブリッド アーキテクチャを見つけました。
MongoDB (または Cassandra、CouchDB) と MySQL (任意の RDBMS) を (PHP、Java アプリケーションの場合) 結合する方法を示す実装レベル、詳細な記事、チュートリアルへのリンクを誰かが持っているかどうか疑問に思います。
現在の仕事でどのようにそれを行ったかについて、いくつかの詳細を共有できます。
リレーショナル ストアはレガシー システムと見なされることに注意してください。それらには信頼できるエンティティがあり、そのデータを読み取りのために MongoDB に移動しています。今後は、リレーショナル システムではなく、MongoDB にも書き込みを行いたいと考えています。
MySQL から MongoDB (具体的には Wordpress) へのデータの移動
TL;DR - トリガーとストアド プロシージャを使用する
このアプローチでは、挿入、更新、および削除を監視する MySQL のテーブルにトリガーを設定しました。これらの操作の 1 つが発生すると、エンティティを生成し、それをキューとして機能するテーブルに配置するストアド プロシージャを起動します。
次に、外部プロセスを使用して、そのテーブルを数秒ごとにポーリングしました。ストアド プロシージャを作成して、キューに入れられた同じアイテムを 2 回以上処理しないようにしました。
外部プロセス (Mule ESB フロー) は、キュー テーブルからデータを読み取るストアド プロシージャの結果に対してわずかな変換を行い、それを MongoDB に渡します。
Wordpress バックエンドから発行した後、MongoDB で Wordpress 投稿を JSON ドキュメントとして表示するのに、おそらく 2 秒かかります。
SQL Server から MongoDB へのデータの移動 (アプローチ 1)
私が使用した最初のアプローチは、XML を生成するストアド プロシージャを作成することです。XML 構文は、TSQL では少し厄介ですが、仕事は完了します。良い点は、XML 構造を任意に深くできることです。
XML を作成したら、その XML を JSON に変換するツールを作成するには、ホップ スキップとジャンプが必要です。次に、外部プロセス (ここでも Mule を使用) で XML 結果を取得し、それらを JSON に変換してから、MongoDB に書き込むことができます。
SQL Server から MongoDB へのデータの移動 (アプローチ 2)
このアプローチでは、Visual Studio で C# プロジェクトを作成し、SQL Server で CLR 関数/ストアド プロシージャとして展開しました。
コードは簡単に記述でき、サーバー上で非常に高速に実行されるため、これは私のお気に入りのアプローチです。CLR 関数で結果をシリアル化し、一時テーブルに格納することも、ストアド プロシージャから結果を返すこともできます。
コード (場合によっては JSON シリアライザーを含む) を実稼働 SQL Server ボックスにデプロイするよう DBA を説得するのは難しいかもしれませんが、その利点は際立っています。また、XML アプローチよりもはるかに優れたパフォーマンスを発揮します。
PHP または Java アプリケーションは、オブジェクト (エンティティ) を中心に構築されます。エンティティの役割と使用モデル (永続化と取得の頻度) によっては、適切なデータ ストアを選択する必要がある場合があります。たとえば、ユーザー ID パスワードを RBDMS に保持し、アクター オブジェクト (ドキュメント、音楽、ブログ投稿など) を mongodb のようなドキュメント指向 DB に保持し、頻繁に使用される小さなオブジェクト (ファイル システム階層など) を redis に保持することができます。それはすべてあなたのアーキテクチャに依存します - これのためのすぐに利用できるフレームワークはありません。