GraphSONファイルのインポートによるPGビューの作成

GraphImporterBuilder APIを使用すると、GraphSONファイルからグラフ・データをインポートすることで、プロパティ・グラフ・ビュー(PGビュー)を作成できます。

このインポート機能は、次のステップで構成されています:
  1. データ構造に対するGraphSONの解析。
  2. データ構造からのSQL表の作成とデータの挿入。
  3. CREATE PROPERTY GRAPH文の生成および実行。

次の例に、GraphImporterBuilder APIを使用してGraphSONファイルからPGビューを作成する方法を示します。

opg4j> import oracle.pg.imports.*
opg4j> var importer = new GraphImporter.Builder().
...>     setFilePath("<path_to_graphson_file>").
...>     setBatchSize(2).
...>     setInputFormat(GraphImportInputFormat.GRAPHSON).
...>     setOutputFormat(GraphImportOutputFormat.PG_VIEW).
...>     setThreads(4).
...>     setDbJdbcUrl("<jdbc_url>").
...>     setDbUsername("<username>").
...>     setDbPassword("<password>").
...>     setGraphName("mygraph").
...>     build()
importer ==> oracle.pg.imports.GraphImporter@5d957cf0
opg4j> var ddl = importer.importGraph()
import oracle.pg.imports.*;
GraphImporter importer = new GraphImporter.Builder()
     .setFilePath("<path_to_graphson_file>")
     .setBatchSize(2)
     .setInputFormat(GraphImportInputFormat.GRAPHSON)
     .setOutputFormat(GraphImportOutputFormat.PG_VIEW)
     .setThreads(4)
     .setDbJdbcUrl("<jdbc_url>")
     .setDbUsername("<username>")
     .setDbPassword("<password>")
     .setGraphName("mygraph")
     .build();
>>> from opg4py.graph_importer import GraphImporter
>>> config = {
...       'jdbc_url'     : '<jdbc_url>',
...       'username'     : '<username>',
...       'password'     : '<password>',
...       'file_path'    : '<path_to_graphson_file>',
...       'graph_name'   : 'mygraph',
...       'output_format': 'pg_view',
...       'input_format' : 'graphson'
... }
>>> importer = GraphImporter(config)
>>> importer.import_graph()

前述の例では、データベースに必要なSQL表を設定し、DDL文を生成および実行してmygraphを作成しています。たとえば、この例では、次のCREATE PROPERTY GRAPH DDL文を生成します:

"CREATE PROPERTY GRAPH mygraph 
           VERTEX TABLES ( 
             software 
               KEY (id) 
               LABEL software 
               PROPERTIES ARE ALL COLUMNS, 
             person 
               KEY (id) 
               LABEL person 
               PROPERTIES ARE ALL COLUMNS 
           ) 
           EDGE TABLES ( 
             created 
               KEY (id) 
               SOURCE KEY (sid) REFERENCES person (id) 
               DESTINATION KEY (did) REFERENCES software (id) 
               LABEL created 
               PROPERTIES ARE ALL COLUMNS, 
             knows 
               KEY (id) 
               SOURCE KEY (sid) REFERENCES person (id) 
               DESTINATION KEY (did) REFERENCES person (id) 
               LABEL knows 
               PROPERTIES ARE ALL COLUMNS 
           ) OPTIONS ( pg_view )"

あるいは、次の例に示すように、データ・ソースを使用してデータベースに接続することで、データベースへの接続を作成することもできます。

opg4j> import oracle.pg.imports.*
opg4j> import oracle.jdbc.pool.OracleDataSource

opg4j> var ds = new OracleDataSource() // setup the data source
ds ==> oracle.jdbc.pool.OracleDataSource@4154ecd3
ds.setURL("<jdbc_url>")
ds.setUser("<username>")
ds.setPassword("<password>")

opg4j> var importer = new GraphImporter.Builder().
...>     setFilePath("<path_to_graphson_file>").
...>     setBatchSize(2).
...>     setInputFormat(GraphImportInputFormat.GRAPHSON).
...>     setOutputFormat(GraphImportOutputFormat.PG_VIEW).
...>     setThreads(4).
...>     setDataSource(ds).
...>     setGraphName("mygraph").
...>     build()
importer ==> oracle.pg.imports.GraphImporter@5d957cf0
opg4j> var ddl = importer.importGraph()
import oracle.pg.imports.*;
import oracle.jdbc.pool.OracleDataSource;
//Setup the datasource
var ds = new OracleDataSource();
ds.setURL(<jdbc_url>)
ds.setUser(<username>);
ds.setPassword(<password>);
//Setup the GraphImporter
GraphImporter importer = new GraphImporter.Builder()
     .setFilePath("<path_to_graphson_file>")
     .setBatchSize(2)
     .setInputFormat(GraphImportInputFormat.GRAPHSON)
     .setOutputFormat(GraphImportOutputFormat.PG_VIEW)
     .setThreads(4)
     .setDataSource(ds)
     .setGraphName("mygraph")
     .build();
var ddl = importer.importGraph();

また、次の点にも注意してください。

  • GraphImporterBuilder APIは、GraphSONファイル形式バージョン3.0のみをサポートしています。
  • 表7-6に示されているGraphSONデータ型のみがサポートされています。

次の各項では、GraphImporterのパラメータおよびGraphSONとOracle Databaseの間のデータ型マッピングについて詳しく説明します。