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

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

以下では、頂点および辺を作成するために個々のコマンドを個別に送信する様子の詳細を示します。ただし、Gremlin ConsoleとリモートのGremlin Server間にはセッションがないため、すべてのステップを1つのスクリプトで送信する必要があります。以下の手順で示したデータを読み込むには、generateRecipe.groovyスクリプトを実行します。

グラフ・メソッドを使用する方法と、グラフ探索メソッドを使用する方法の2つの方法を以下に示します。グラフ・メソッドは、非公式の試験では、挿入が数倍速いことがベンチマークとして示されています。グラフ探索メソッドは、開発時のその場での挿入に役立ちます。

DSE Graphでは、前にスキーマが作成されていなくてもデータが挿入されますが、データ挿入前にスキーマを作成することがベスト・プラクティスです。スキーマなしで挿入された場合、そのデータ型は間違っていることがよくあります。たとえば、以下の例では、ISBNUUIDです。しかし、以下のように挿入すると、ISBNに割り当てるデータ型はTextになります。

手順

グラフ・メソッドaddVertex()およびaddEdge()の使用

  1. addVertex()を使用してauthor頂点を追加します。
    juliaChild = graph.addVertex(label,'author', 'name','Julia Child', 'gender','F')

    頂点には記述的な名前juliaChildが付けられ、頂点labelはauthorになります。プロパティ・キーのnameおよびgenderキー値のペアをリストします。

  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()ステップで定義されています。プロパティ・キーのnameおよびgenderのキーと値のペアは、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. addEdge()を使用して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(材料)頂点は、辺の前に挿入する必要があります。