BT

MongoDB開発者にセマンティックウェブの特徴を与えるMongoGraph

| 作者: Srini Penchikala フォローする 38 人のフォロワー , 翻訳者 徳武 聡 フォローする 1 人のフォロワー 投稿日 2011年12月15日. 推定読書時間: 4 分 |

原文(投稿日:2011/12/03)へのリンク

AllegroGraphチームが提供するMongoGraphはMongoDBの開発者にセマンティックウェブの機能をもたらす。AllegroGraphデータベース向けのMongoDBインターフェイスを実装して、Javascriptのプログラマが結合処理とセマンティックウェブの機能を使えるようにしたのだ。この方法を使うことで、JSONオブジェクトは自動的にトリプルに変換され、MongoDBの問い合わせ言語とSPARQLの両方で扱えるようになる。MongoGraphのもうひとつの目的はSolr/Luceneのような簡単に検索できるグラフデータベース向けのフリーテキストエンジンを開発することだ

AllegoGraphのCEOであるJans Aasman氏はプレゼンを提供し、個々のトリプルではなく、オブジェクトのレベルで処理を行うことについて話をした。InfoQは氏にこの新しい手法について、また、これがどのようにNoSQLの開発者を支援するのかについて話を聞いた。

InfoQ: JSONオブジェクトをグラフデータベース内のRDFのトリプルで表すことの利点について教えてください。

Jans:最も直接的な答えは、JSONを使って、複雑なスキーマをモデリングし、map-reduce問い合わせを行わずに複雑な結合ができるということです。MongoGraphに保存されているJSONオブジェクトはJSONオブジェクトとしても扱えますし(MongoDB問い合わせ言語を使うことで)、よりきめ細かいRDFのトリプルとして扱うことで複雑なモデリングや複雑な結合処理(SPARQLを使って)が実現できます。また、RDFデータベース(別名TripleStore)のその他の先進的な機能も利用できます。問い合わせ言語SPARQLを使うこともできますし、SWRLRIFPrologを使ってルールを提供することも可能です。

また、Linked Open Data Cloudを使えばJSONで表現したアプリケーションのデータ構造をシームレスにRDFトリプルに結びつけることができます。

InfoQ: MongoGraphのようなデータベースに保存されたデータはどのようにアクセスできますか。

Jans: 下記に提示したMongoGraphの問い合わせはJSONオブジェクトとして'Jans'と'Aasman'のすべての本を返します。

db.authors.find({firstName: 'Jans', lastName: 'Aasman'})

しかし、著者、本、出版社の集合を保持する場合、下記のような結合処理を利用したSPARQLで記述できます。

select * where {
?x fr:firstName Jans; fr:lastName Aasman ; fr:authorOf ?book .
?book hasPublisher ?publisher .
?store fr:outletFor ?publisher; fr:located 'San Francisco' .
}

InfoQ: このようなソリューションを使うことの限界は何ですか。

Jans: 現在、MongoDB APIの90%を実装しました。しかし、MongoDBのクラスタリングのメカニズムはまだエミュレートしていません。現在はAllegroGraph内に構築されたクラスタリングメカニズムに依存しています。

InfoQ: NoSQLデータベースに現れつつあるトレンドを教えてください。

Jans: セマンティックウェブの観点から言えば、ほとんどのグラフデータベースベンダはテキストのインデキシングをLuceneを基にしたインデキシング(SolrまたはElastic Search)で実施しています。ほとんどのベンダがすぐにJSONをファーストクラスのオブジェクトとしてサポートするようになっても驚きはしません。JSONとトリプル/グラフパラダイムが合わさったのは驚くほど直接的なことでした。また、私たちはキーバリューストアをどのようにしてトリプル/グラフパラダイムと組み合わせるのか実験中です。

InfoQ: このようなソリューションを使う場合、開発者やアーキテクトが考えるべきベストプラクティスとアーキテクチャパターンをどんなものですか。

Jans: 単純な結合処理が必要で、スキーマがほとんど変わらないのであれば、RDBMを使えばいいでしょう。

アプリケーションがドキュメントベースで、ドキュメントが既に結合されたネストしたツリー(FacebookページやネストしたJSONオブジェクト)として見られる場合、そして、RDBのスキーマの制約に制限されたくない場合は、MongoDBのようなキーバリューストアやドキュメントストアを使うのがいいでしょう。

上述のようなアプリケーションにも関わらず複雑な結合処理やグラフアルゴリズムを適用したい場合は、MongoGraphのアプローチが最適なソリューションかもしれません。

 

Srini Penchikala氏 は現在セキュリティアーキテクトとして働き、17年のソフトウエア製品管理の経験がある。

この記事に星をつける

おすすめ度
スタイル

こんにちは

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

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

あなたの意見をお聞かせください。

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

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

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

このスレッドのメッセージについてEmailでリプライする

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

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT