Gremlinを使用したデータの挿入

グラフ・データベースにデータを挿入する方法。

頂点とエッジを作成するための個々のコマンドのサブミットについて以下に詳しく説明します。ただし、Gremlin ConsoleとリモートのGremlin Server間のやり取りはセッションレスであるため、すべてのステップを単一のスクリプトでサブミットする必要があります。下記のステップに示すデータを読み込むには、generateRecipe.groovyスクリプトを実行します。

グラフ・メソッドの使用とグラフ探索メソッドの使用という2つの方法を以下に示します。グラフ・メソッドは、挿入が数倍高速であることが略式のベンチマーク・テストで確認済みです。グラフ探索メソッドは、開発時のオンザフライ挿入に使用できます。

DSE Graphでは、スキーマがあらかじめ作成されていなくてもデータが挿入されますが、データ挿入の前にスキーマを作成しておくことが推奨されます。スキーマなしで挿入されると、データ型が間違ったものになることが往々にしてあります。たとえば、次の例では、ISBNUUIDです。ところが、ここに示すように挿入された場合、ISBNに割り当てられるデータ型はTextになります。

手順

グラフ・メソッドaddVertex()およびaddEdge()の使用
  1. addVertex()を使用してauthor頂点を追加します。
    juliaChild = graph.addVertex(label,'author', 'name','Julia Child', 'gender','F')

    この頂点に記述名juliaChildが与えられ、authorという頂点ラベルが与えられます。プロパティ・キーのキーと値のペアnamegenderが一覧表示されます。

  2. addVertex()を使用してbook頂点を追加します。
    frenchChefCookbook = graph.addVertex(label, 'book', 'name, 'The French Chef Cookbook', 'year' , 1968, 'ISBN', '0-394-40135-2')

    book頂点には、書籍名、出版年、ISBNコード(入手可能な場合)が含まれます。

  3. addEdge()を使用して、authorとbookの間にエッジを追加します。
    juliaChild.addEdge('authored', frenchChefCookbook)

    Julia Childの頂点には、本The French Chef Cookbookに対するauthoredエッジがあります。

  4. recipeとingredientの間のエッジのこの例が示すとおり、エッジにもプロパティが含まれる場合があります。
    beefBourguignon.addEdge('includes', beef, 'amount','2 lbs')

    レシピBeef Bourguignonには、牛肉2ポンドが含まれています。amountはエッジ・プロパティとして格納されます。recipe頂点とingredient頂点は、エッジの前に挿入しておく必要があります。

グラフ探索メソッドaddV()およびadd()の使用
  1. addV()property()を使用して、author頂点を追加します。プロパティ・セットごとに1つずつ、複数のproperty()ステップが使用されます。
    g.addV('author').property('name','Julia Child').property('gender','F')

    authorという頂点ラベルがaddV()ステップで定義されます。プロパティ・キーのキーと値のペアnamegenderは、2つのproperty()ステップを使用して作成されます。

  2. addV()を使用してbook頂点を追加します。
    g.addV('book').property('name', 'The French Chef Cookbook').property('year' , 1968).property('ISBN', '0-394-40135-2')

    book頂点には、書籍名、出版年、ISBNコード(入手可能な場合)が含まれます。

  3. 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()ステップで使用されます。

  4. 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頂点は、エッジの前に挿入しておく必要があります。