JDBC互換データベースからのデータの読み込み

DSE Graph Loaderを使用してJDBC互換データベースからデータを読み込む方法。

JDBC互換データベースから読み込むためのデータ・マッピング・スクリプトを説明とともに示します。完全なスクリプトは、ページの最後にあります。

手順

  • 必要に応じて、マッピング・スクリプトに構成を追加します。
  • 読み込み対象のデータのサンプルは以下のようになります。
    SAMPLE INPUT
    // authorデータ用: 
    name:Julia Child	gender:F
    // bookデータ用:
    name:Simca's Cuisine:100 Classic French Recipes for Every Occasion	year:1972	ISBN:0-394-40152-2
    // authorBookデータ用: 
    bname:Simca's Cuisine:100 Classic French Recipes for Every Occasion	aname:Simone Beck

    プロパティ・キーnameは、authorBookファイルの頂点ラベルauthorおよびbookの両方に使用されるため、変数anameおよびbnameは著者名および書名にそれぞれ使用されます。これらの変数は、author頂点とbook頂点間の辺を作成するためのマッピング・ロジックで使用されます。

  • JDBC情報でデータ入力データベースを指定します。変数inputDatabaseによって、データ入力データベースが指定されます。この例ではH2データベースを使用しますが、JDBC準拠データベースであればどのデータベースも使用できます。connectiondriver、およびuserがすべて指定されます。追加オプションpasswordを含めることができます。
    // DATA INPUT
    // データ入力ソース(データ選択のためのデータベース接続およびSQLステートメント)
    // inputDatabaseはデータベース名です
    inputDatabase = '~/test'
    db = Database.connection("jdbc:h2:" + inputDatabase).H2().user("sa")
    
    // SQLクエリーを介してデータベース・ソースからの複数のデータ入力を定義します
    authorInput = db.query "SELECT * FROM AUTHOR";
    bookInput = db.query "SELECT * FROM BOOK";
    authorBookInput = db.query "SELECT * FROM AUTHORBOOK";
  • 各行で、データを取得するために使用されるデータベース・クエリーが指定されます。マップauthorInputが作成され、データの処理に使用されます。このマップは、transformsを使用して読み込む前に操作できます。
    authorInput = db.query "SELECT * FROM AUTHOR";
    
  • マッピング・スクリプトの本文を作成します。マッピング・スクリプトのこの部分は、ファイル形式にかかわらず同じです。
  • ドライ・ランとしてテキスト読み込みにDSE Graph Loaderを実行するには、以下のコマンドを使用します。
    graphloader authorBookMappingJDBC.groovy -graph testJDBC -address localhost -dryrun true

    テスト目的の場合、graphloaderの実行前に、指定されたグラフが存在する必要はありません。ただし、実稼働用途では、graphloaderを使用する前にグラフとスキーマを作成する必要があります。

  • 完全な読み込みスクリプトは以下のとおりです。
    /* SAMPLE INPUT - タブを使用します
    author:
    name:Julia Child	gender:F
    book : 
    name:Simca's Cuisine:100 Classic French Recipes for Every Occasion	year:1972	ISBN:0-394-40152-2
    authorBook: 
    bname:Simca's Cuisine:100 Classic French Recipes for Every Occasion	aname:Simone Beck
     */
    
    // CONFIGURATION
    // スキーマを作成するようにデータ・ローダーを構成します
    config create_schema:true, load_new:true, load_threads: 3
    
    // DATA INPUT
    // データ入力ソース(データ選択のためのデータベース接続およびSQLステートメント)
    // inputDatabaseはデータベース名ですinputDatabase = '~/test'
    db = Database.connection("jdbc:h2:" + inputDatabase).H2().user("sa")
    
    // SQLクエリーを介してデータベース・ソースからの複数のデータ入力を定義します
    authorInput = db.query "SELECT * FROM AUTHOR";
    bookInput = db.query "SELECT * FROM BOOK";
    authorBookInput = db.query "SELECT * FROM AUTHORBOOK";
    
    //(定義済みインラインとして)いずれかのマッパーを使用して読み込むデータ・ソースを指定します
      
    load(authorInput).asVertices {
    label "author"
    key "name"
    }
    
    load(bookInput).asVertices {
    label "book"
    key "name"
    }
    
    load(authorBookInput).asEdges {
    label "authored"
    outV "aname", {
    label "author"
    key "name"
        }
    inV "bname", {
    label "book"
    key "name"
        }
    }