BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

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ライセンスで提供されている。

 

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT