BT

InfoQ ホームページ ニュース MoSQL: MongoDBとPostgreSQLの同期を簡単に

MoSQL: MongoDBとPostgreSQLの同期を簡単に

ブックマーク

原文(投稿日:2013/02/06)へのリンク

 

サンフランシスコを拠点とするStripeがMoSQLを発表した。これはMongoDBからのレポーティングを、PostgreSQLデータベースへのライブレプリケーションによって簡単にするツールだ。MoSQLはMongoDBデータのアップデートをほぼリアルタイムでモニタリングするコンパニオン製品、MongoRiver上に構築されている。

MoSQLの目的は、プロダクションデータのリードオンリーコピーに対するレポーティングやアドホッククエリを実行するところで、従来のRDBMS設計をシミュレートすることだ。ビジネス分析にかける前に、リードオンリーコピーに対して数回変換をかけるのはよくあることだ。したがって、これは未知の領域というわけではない。

MongoRiver

MongoRiverはMongoDB oplog tailingのための汎用ライブラリだ。これはRubyで書かれており、開発者はアップデート操作のためにMongoDBインスタンスを監視することができる。まだあまりドキュメントはなく、githubにはソースコードしか置かれていない。MongoRiverはMITライセンスで提供されている。

MoSQL

MoSQLはMongoRiver上に構築されており、実際のデータ変換を実行する。これには「コレクションマップファイル」と呼ばれるYAMLスタイルのマッピングファイルが必要になる。開発者がやらなくてはならないのは、このファイルを作ることだけだ。MoSQLはPostgreSQLに必要なターゲットテーブルを自動生成してくれる。

MoSQLはone-timeモードやtailingモードで動かせる。one-timeモードは“skip-tail”フラグで有効になり、単にインポートを実行する。tailingモードは前述のoplogを監視し、PostgreSQLと同期することができる。MoSQLを開始するときには、強制的にフレッシュインポートすることもできる。これは現在のテーブルをやめにして新しいテーブルを再生成する。

MongoDBデータベースの値が、定義されたスキーマに合わない場合(たとえば、INTEGERフィールドにおけるfloating-point値など)、MoSQLは警告をログに残し、そのオブジェクト全体を無視して続行します。

コレクションマップにないフィールドを持つMongoDBオブジェクトがあった場合、MoSQLはそのフィールドを捨てます。ただし、:meta hashに:extra_propsがセットされている場合は除きます。これがセットされている場合、欠けているフィールドを集め、ハッシュにJSONエンコードし、その結果得られたテキストをSQLの_extra_propsに保存します。JSONをどう使うかはあなた次第です。たとえば、plv8を使ってPostgreSQL内でパースしたり、JSONを全部抜き出してアプリケーションコードでパースしたりすることができます。

MoSQLもMITライセンスで提供されている。

 

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

C# 8の非同期ストリーム

Bassam Alugili 2018年10月11日 午前3時13分

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。