MongoDBとGridFSによるバイナリストレージ


Tue 17 November 2015 作成者: Mike Obrebski

以前に投稿したブログで、Nuxeo Platformの様々なストレージオプション、特に、MongoDBのサポートや適切な使用事例について説明しました。今日は、バイナリストレージのGridFSについて説明し、ユーザの特定の使用事例に最適な構成を実現する様々なストレージとクエリサブシステムをサポートするためにNuxeo Platformの柔軟性について詳しく見ていきましょう。

再び、Nuxeoストレージアーキテクチャ、この場合はMongoDBとGridFSで構成するアーキテクチャを見てみましょう。
MongoDB - BlobManager
Nuxeo Platformがドキュメント(メタデータ)とブロブ(バイナリ)に対応する様々なサブシステムを使用しているのが分かります。ドキュメントは、メタデータ値、各種属性(ファセット)、参照バイナリのセットで、リポジトリからアプリケーションへの出力で結合されています。Nuxeoのバイナリは、ドキュメントによってラップされます。これにより、メタデータとバイナリに最も適切なストレージを使用することができます。NuxeoドキュメントストアとBlobストアはプラグイン可能で、これらの抽象化データを使用することができます。

GridFSを使用するメリット


MongoDBユーザは、GridFSにはよく慣れています。ファイルシステムを置き換えるためにバイナリストレージ用にGridFSの実装によるBLOBストアを提供することにより、ドキュメントとBLOBストレージをMongoDBコンテナに適切に統合しています。

メリットには2つの領域があります。

第一に、GridFSの機能自体が性能が良いということです。直接ファイルシステムを扱う代わりに、GridFSは、複製、配信、実装可能な冗長化の各機能を提供するMongoDBの機能を使用します。すべてのバイナリを構成可能なサイズのチャンクに分割し、そのチャンクのために設計されたコレクションに個々のレコードとしてそのチャンクを格納することにより、これが可能です。このとき、別のコレクションには各ファイルの情報のレコードが保存されます。GridFS APIは、MongoDBシステム上に構築され、ファイルのチャンク、再構築と読み取り/書き込みアクセスをすべて処理します。ファイルはチャンクに分割されているので、ファイル全体をストリーミングすることなく、読み取りまたは書き込みのために必要なチャンクにアクセスすることができます。また、同時に複数のピースをダウンロードして、ストリーミングすることにより、スループットを向上させることが可能になります。

第二に、MongoDBをGridFSと結合させるメリットは、管理・運用のツールと方法が共通しているということです。データベースやファイルシステムの異なるバックアップとインフラストラクチャの戦略を備える必要はありませんので、管理の観点から効率的です。

GridFSを使用するようNuxeo Platformを構成


ファイルシステムの代わりに、Nuxeo Platformを構成してGridFSを使用すると、簡単かつ透過性のある処理となります。Nuxeo Platformには拡張性があるので、Blob Managerの実装と数個のプロパティを指定するためにXMLベースの構成を展開するだけでよいのです。

 <extension target="org.nuxeo.ecm.core.blob.BlobManager" point="configuration">
<blobprovider name="default">
<class>org.nuxeo.mongodb.blob.GridFSBinaryManager</class>
<property name="server">localhost</property>
<property name="dbname">nuxeo</property>
<property name="bucket">nxblobs</property>
</blobprovider>
</extension>

それで、バイナリにアクセスするときには、システムは新しい実装で同じ読み取り/書き込みメソッドを呼び出します。移行も簡単なプロセスになります。Nuxeo Platformは、一意のMD5チェックサムベースのファイル名に限り参照できる構造と同じような単純なバケットにバイナリを格納します。したがって、バイナリがすでにファイルシステム上のNuxeo Platformに存在している場合、コピーしてGridFSにダンプし、Blob Managerを切り替えることができます。IDのみがBlob Managerに送信されるので、これはアプリケーションに対して透過的です。

GridFSパッケージは、Marketplaceパッケージで利用できます - MongoDB GridFSストレージ


分類: Product & Development
タグ付き: Insight, MongoDB, Nuxeo Integration, Nuxeo Platform 7.x