グラフ型NoSQLデータベース(Neo4j、InfiniteGraph)編:知らないなんて言えないNoSQLまとめ(4)(2/2 ページ)
カラム型、キーバリュー型と比較してあまり知られていないグラフ指向のデータベースはどんな使い方ができる? 主要プロダクトを見てみよう。
Objectivity/DBをストレージに使うInfiniteGraph
もう1つのグラフ型NoSQLデータベースとして、InfiniteGraphを紹介しておきます。この製品はオープンソースではありません。開発元のObjectivity(オブジェクティビティ)が商用パッケージとして提供していますが、無償版が用意されておりトライアル利用が可能です。
分散型で拡張性を備える
InfiniteGraphは「分散型であり拡張性があるという点で、他のグラフ型NoSQLデータベースに優る」とされています。その拡張性を得るためInfiniteGraphは、同じくObjectivityが開発したObjectivity/DBを利用します。
Objectivity/DBは高い拡張性と高性能を備えたNoSQLデータベースです。マスタが存在しないP2P型であり、連結データベース(federateddatabase)という技術により、複数のデータベースを1つのデータベースのように扱うことができます。
Objectivity/DBには20年以上の歴史があり、政府機関でも利用されています。調査機関のSLAC(Stanford Linear Accelerate Center)において、240台のサーバに並列分散されているという実績があります。
具体的なアーキテクチャは公開されていませんが、Inifi niteGraphのデータ分割の方法はPlacement Strategyと呼ばれ、5種類ほど用意されているので、その中からデータの特性に合うものを選択できます。Placement Strategyによっては、単体のサーバだけでなく、複数のデータセンターにわたるストレージ場所を指定でき、クラスタ内で自動的にデータが分割されます*1。
Column:DiggによるCassandra活用
第3回で紹介したCassandraを使っている事例を紹介しましょう。
Diggは月間約700万人のユニークビジターを抱えるSNSです。自分が見つけたニュースを投稿し、仲間と共有できます。
MySQLからCassandraをメインに
DiggはデータベースにMySQLを利用していましたが、それを全面的にCassandraへ置換しました。
理由としては、ニュースというコンテンツにはそもそも「強い整合性」が求められないこと、ユーザーからの投稿という書き込みが中心であること、加えて、サービスの成長に伴い複数のデータセンターへデータを分散するなどの冗長性が必要となったことを挙げています。
同社ではCassandraを使うために、Diggの大半のアプリケーションや機能を実装し直しました。これにより、多少の混乱が生じたことも当時話題となりました。
複数のNoSQLを使い分ける
現在Diggは複数のNoSQLデータベースを利用しています。Cassandraをメインのデータベースに位置づけ、ニュース、ユーザー、Digg(そのニュースを好きと意思表示した人の数)、インデックスなどの関連オブジェクトを保存しています。
一方、ニュースを推薦するアルゴリズムや計算を伴う処理など、SQLの結合(Join)を多用するサービスにはMySQLを利用しています。
また、パーソナライズ化されたニュースを保存するためにRedisも使われています。Redisは著しく応答性能に優れ、個々の異なるニーズに素早く対応できるからです。
このようにDiggでは、データやアクセスのパターンに応じて、複数のタイプのデータベースを使い分けています。
初出情報
本連載で抜粋・紹介している原稿の初出は下記書籍です。本連載では詳述していないNoSQLの基本的な考え方、アーキテクチャの詳細などは、書籍でご確認ください。
『NOSQLの基礎知識』
- 【著】 本橋信也、河野達也、鶴見利章
- 【監修】太田洋
- 【発行】リックテレコム
- 【ISBN】978-4-89797-887-1
本書はクラウディアン(旧ジェミナイ・モバイル・テクノロジーズ)の技術者らが監修および執筆を行っています。同社は、国産NOSQL「HIBARI」を開発、その後、Cassandraに自社の「HyperStore」を実装したクラウドストレージ用パッケージソフトウェア「Cloudian」を開発して、現在商用提供を行っているITベンチャー企業です。
Copyright © ITmedia, Inc. All Rights Reserved.