グラフデータベースは、エレガントかつ効率的にエンティティ(一般的にverticesやnodesと呼ばれています)とそれを接続する関係(edges)を表現します。ここでは、グラフの非常に簡単な例を示します。
BillとCandaceには、Janetという名前の娘がいます、彼女(Janet)はBobという名前の息子がいます。これはCandaceはBobの祖母で、Billは彼の祖父であることを表します。
一度グラフが構築されると、vertices(=頂点)間のとedges(=辺)を横断するように処理されます。上のグラフでは、BillからJanetに、そこからBobにトラバース(横断)することができました。グラフは、ソーシャルネットワーク(友人へ「Like」)、業務関係(会社、従業員、パートナー、サプライヤー、顧客)、依存関係などをモデル化するために使用することができます。verticesとedgesの両方を定義することができます。verticesは、例のように人であったり、訪れた場所を定義したりします。同様に、edgesは、(上記の例の通り)家族関係や友達への「Like」を表すことができます。すべてのグラフデータベースは、多くの場合、名前と値のペアの形式で、さらなる情報を各verticesに各edgesをとして紐づけることができます。
Titanはverticesとedgesを数千億個格納することができ、それを照会できるスケーラブルなグラフデータベースです。トランザクショナルで、何千人ものユーザーからの同時アクセスをサポートします。
DynamoDB Storage Backend for Titan
Titanが接続可能なデータ記憶層として、すでにいくつかのNoSQLデータベースとキー・バリューストアをサポートしています。これは、パフォーマンスを必要とするバックエンドやアプリケーションが必要とする特性からそれらを選択することが可能で、その一方で、アプリケーションコードに最小の変更で他のバックエンドへ切り替えることが可能となっています。
新しく DynamoDB Storage Backend for Titanが利用可能となりました。Amazon DynamoDBの中へTitanのグラフを格納すると、データベースクラスタの構築、実行、管理について心配することなく、巨大なグラフを扱えるように拡張することができます 。
DynamoDBは、無制限に、データの高可用性と予測可能なパフォーマンスを提供することができますので、グラフデータの格納やインフラストラクチャの管理に代わり、あなたはアプリケーション開発に集中することができます。また、開発およびテストのためのあなたのPC上でもTitanとDynamoDB Localを実行することができます。
バックエンドはTitanDBバージョン0.4.4と0.5.4で動作します。両方のバージョンは、高速のトラバースと、指示され、入力され、関係性を保存したedgesをサポートしています。
新しいバージョンは、vertexの分割、vertexのラベル、およびユーザー定義のトランザクションログのサポートが追加されます。バックエンドは、クライアントベースです。DynamoDBのへの変更は、それをサポートすることはありませんでした。あなたは、単にTitanのグラフを格納するための効率的な方法として、DynamoDBのを使用しています。
Titanのバージョン0.4.4は、Tinkerpop stackのバージョン2.4と互換性があります。バージョン0.5.4は、stackのバージョン2.5と互換性があります。 Tinkerpopは、グラフ処理や分析オプションなど多くの方法を提供するツールやアルゴリズムの集まりです。
私はgraphsについて話しましたので、グラフの形で話した項目すべてを説明する必要があります!こちらです。
私たちの同僚Alex Patrikalakisは、以下のGremlin scriptを作成しました。これは、TitanとDynamoDBのを使用して、上記のグラフをレプリケートします:
conf = new BaseConfiguration()
conf.setProperty("storage.backend", "com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager")
conf.setProperty("storage.dynamodb.client.endpoint", "http://localhost:4567")
g = TitanFactory.open(conf)
titan = g.addVertex(null, [name:"Titan"])
blueprints = g.addVertex(null, [name:"Blueprints"])
pipes = g.addVertex(null, [name:"Pipes"])
gremlin = g.addVertex(null, [name:"Gremlin"])
frames = g.addVertex(null, [name:"Frames"])
furnace = g.addVertex(null, [name:"Furnace"])
rexster = g.addVertex(null, [name:"Rexster"])
DynamoDBStorageBackend = g.addVertex(null, [name:"DynamoDB Storage Backend for Titan"])
DynamoDBLocal = g.addVertex(null, [name:"DynamoDB Local"])
DynamoDB = g.addVertex(null, [name:"DynamoDB"])
g.addEdge(titan, blueprints, "implements")
g.addEdge(pipes, blueprints, "builds-on")
g.addEdge(gremlin, blueprints, "builds-on")
g.addEdge(frames, blueprints, "builds-on")
g.addEdge(furnace, blueprints, "builds-on")
g.addEdge(rexster, blueprints, "builds-on")
g.addEdge(titan, DynamoDBStorageBackend, "backed-by")
g.addEdge(DynamoDBStorageBackend, DynamoDBLocal, "connects-to")
g.addEdge(DynamoDBStorageBackend, DynamoDB, "connects-to")
g.commit()
Getting Started
DynamoDB Storage Backend for TitanはGitHub上のMavenプロジェクトとして利用可能です。これはWindows 、OSX 、およびLinux上で動作するMavenおよびJava 1.7(またはそれ以降)が必要です。Amazon DynamoDB Storage Backend for Titanは、インストール手順とMarvel Universe Social Graphの公式なデータセットを利用する例が含まれています。また、TitanDB/ Rexster stackとDynamoDB Storage Backend for Titan をインストールし、利用準備ができたEC2インスタンスを起動できるCloudFormation templateを作成しました。
— Jeff;(翻訳はSA 森が担当しました。翻訳元:New – Store and Process Graph Data using the DynamoDB Storage Backend for Titan)