Gremlinを使用したデータの挿入
グラフ・データベースにデータを挿入する方法。
頂点とエッジを作成するための個々のコマンドのサブミットについて以下に詳しく説明します。ただし、Gremlin ConsoleとリモートのGremlin Server間のやり取りはセッションレスであるため、すべてのステップを単一のスクリプトでサブミットする必要があります。下記のステップに示すデータを読み込むには、generateRecipe.groovyスクリプトを実行します。
グラフ・メソッドの使用とグラフ探索メソッドの使用という2つの方法を以下に示します。グラフ・メソッドは、挿入が数倍高速であることが略式のベンチマーク・テストで確認済みです。グラフ探索メソッドは、開発時のオンザフライ挿入に使用できます。
DSE Graphでは、スキーマがあらかじめ作成されていなくてもデータが挿入されますが、データ挿入の前にスキーマを作成しておくことが推奨されます。スキーマなしで挿入されると、データ型が間違ったものになることが往々にしてあります。たとえば、次の例では、ISBN
はUUID
です。ところが、ここに示すように挿入された場合、ISBN
に割り当てられるデータ型はText
になります。
手順
addVertex()
およびaddEdge()
の使用-
addVertex()
を使用してauthor頂点を追加します。juliaChild = graph.addVertex(label,'author', 'name','Julia Child', 'gender','F')
この頂点に記述名
juliaChild
が与えられ、authorという頂点ラベル
が与えられます。プロパティ・キーのキーと値のペアname
とgender
が一覧表示されます。 -
addVertex()
を使用してbook頂点を追加します。frenchChefCookbook = graph.addVertex(label, 'book', 'name, 'The French Chef Cookbook', 'year' , 1968, 'ISBN', '0-394-40135-2')
book頂点には、書籍名、出版年、ISBNコード(入手可能な場合)が含まれます。
-
addEdge()
を使用して、authorとbookの間にエッジを追加します。juliaChild.addEdge('authored', frenchChefCookbook)
Julia Childの頂点には、本The French Chef Cookbookに対する
authored
エッジがあります。 -
recipeとingredientの間のエッジのこの例が示すとおり、エッジにもプロパティが含まれる場合があります。
beefBourguignon.addEdge('includes', beef, 'amount','2 lbs')
レシピBeef Bourguignonには、牛肉2ポンドが含まれています。
amount
はエッジ・プロパティとして格納されます。recipe頂点とingredient頂点は、エッジの前に挿入しておく必要があります。
addV()
およびadd()
の使用-
addV()
とproperty()
を使用して、author頂点を追加します。プロパティ・セットごとに1つずつ、複数のproperty()
ステップが使用されます。g.addV('author').property('name','Julia Child').property('gender','F')
authorという頂点ラベルが
addV()
ステップで定義されます。プロパティ・キーのキーと値のペアname
とgender
は、2つのproperty()
ステップを使用して作成されます。 -
addV()
を使用してbook頂点を追加します。g.addV('book').property('name', 'The French Chef Cookbook').property('year' , 1968).property('ISBN', '0-394-40135-2')
book頂点には、書籍名、出版年、ISBNコード(入手可能な場合)が含まれます。
-
addE()
を使用して、authorとbookの間にエッジを追加します。g.V().has('author','name','Julia Child').as('a').V().has('book','name','The French Chef Cookbook').addE('authored').to('a')
Julia Childの頂点には、本The French Chef Cookbookに対する
authored
エッジがあります。各頂点は、その頂点ラベルとプロパティname
で識別されます。author頂点はa
としてラベル付けされ、to()
ステップで使用されます。 -
recipeとingredientの間のエッジのこの例が示すとおり、エッジにもプロパティが含まれる場合があります。
g.V().has('recipe','name','Beef Bourguignon').as('a'). V().has('ingredient','name','beef'). addE('includes').from('a').property('amount','2 lbs')
レシピBeef Bourguignonには、牛肉2ポンドが含まれています。
amount
はエッジ・プロパティとして格納されます。recipe頂点とingredient頂点は、エッジの前に挿入しておく必要があります。