9.2 GraphSONファイルのインポートによるPGQLプロパティ・グラフの作成
GraphImporterBuilder
APIを使用すると、GraphSONファイルからグラフ・データをインポートすることで、PGQLプロパティ・グラフを作成できます。
- データ構造に対するGraphSONの解析。
- データ構造からのSQL表の作成とデータの挿入。
CREATE PROPERTY GRAPH
文の生成および実行。
次の例に、GraphImporterBuilder
APIを使用してGraphSONファイルからPGQLプロパティ・グラフを作成する方法を示します。
opg4j> import oracle.pg.imports.*
opg4j> var importer = new GraphImporter.Builder().
...> setFilePath("<path_to_graphson_file>").
...> setBatchSize(2).
...> setInputFormat(GraphImportInputFormat.GRAPHSON).
...> setOutputFormat(GraphImportOutputFormat.PG_PGQL).
...> 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_PGQL)
.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_pgql',
... '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_PGQL )"
あるいは、次の例に示すように、データ・ソースを使用してデータベースに接続することで、データベースへの接続を作成することもできます。
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_PGQL).
...> 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_PGQL)
.setThreads(4)
.setDataSource(ds)
.setGraphName("mygraph")
.build();
var ddl = importer.importGraph();
また、次の点にも注意してください。
GraphImporterBuilder
APIは、GraphSONファイル形式バージョン3.0のみをサポートしています。- 表9-7に示されているGraphSONデータ型のみがサポートされています。
次の各項では、GraphImporter
のパラメータおよびGraphSONとOracle Databaseの間のデータ型マッピングについて詳しく説明します。
- GraphImporterのパラメータの追加情報
GraphImporter
で使用されるパラメータの詳細について学習します。 - GraphSONの型からOracle Databaseのデータ型へのマッピング
GraphSONのデータ型は、対応するOracle Databaseのデータ型にマップできます。
親トピック: PGQLプロパティ・グラフについて
9.2.1 GraphImporterのパラメータの追加情報
GraphImporter
で使用されるパラメータの詳細について学習します。
表9-3 データベース接続のパラメータ
パラメータ | 説明 | APIのsetter | デフォルト値 | オプション |
---|---|---|---|---|
dataSource |
データベース用のデータ・ソース | setDataSource |
NULL |
dbJdbcUrl 、dbUsername およびdbPassword を渡す場合のみ |
dbJdbcUrl |
データベースのJDBC URL | setDbJdbcUrl |
"" |
dataSouce を渡す場合のみ |
dbPassword |
データベースのパスワード | setDbPassword |
"" |
dataSouce を渡す場合のみ |
dbUsername |
データベースのユーザー名 | setDbUsername |
"" |
dataSouce を渡す場合のみ |
表9-4 GraphImporterの構成パラメータ
パラメータ | 説明 | APIのsetter | デフォルト値 | オプション |
---|---|---|---|---|
pathName |
GraphSONファイルへのパス | setPathname |
"" |
いいえ |
graphName |
結果として生成されるグラフ名 | setGraphName |
"" |
はい |
inFormat |
インポータの入力書式 | setInputFormat |
GraphImportInputFormat.GRAPHSON |
はい |
outFormat |
インポータの出力書式 | setOutputFormat |
GraphImportOutputFormat.PG_PGQL |
はい |
batchSize |
データベースにデータを挿入する前に読み取られた行の数 | setBatchSize |
1000 |
はい |
threads |
データベースへの挿入に使用されるスレッドの数 | setThreads |
1 |
はい |
表9-5 SQL Storageのパラメータ
パラメータ | 説明 | APIのsetter | デフォルト値 | オプション |
---|---|---|---|---|
stringFieldSize |
GraphSON String データ型は、データベースではVARCHAR2 として変換されます。
このパラメータは、データ・ストレージの |
setStringFieldsSize |
100 |
はい |
fractionalSecondsPrecision |
Oracle DatabaseのTIMESTAMP データ型で検出される小数秒の精度パラメータ。
|
setFractionalSecondsPrecision |
6 |
はい |
表9-6 PGQLでサポートされているパラメータ
パラメータ | 説明 | APIのsetter | デフォルト値 | オプション |
---|---|---|---|---|
parallel |
問合せおよび更新操作に使用する並列度 | setPathname |
0 |
はい |
dynamicSampling |
動的サンプリング値 | setGraphName |
2 |
はい |
matchOptions |
問合せの変換および実行に影響を与えるために使用される追加オプション | setMatchOptions |
NULL |
はい |
options |
変更の変換および実行に影響を与えるために使用される追加オプション | setOptions |
NULL |
はい |
9.2.2 GraphSONの型からOracle Databaseのデータ型へのマッピング
GraphSONのデータ型は、対応するOracle Databaseのデータ型にマップできます。
次の表に、Oracle Databaseのデータ型へのGraphSONのデータ型のマッピングを示します。
表9-7 GraphSONの型からOracle Databaseの型へのマッピング
GraphSONの型 | Oracle Databaseの型 |
---|---|
String |
VARCHAR2 脚注1 |
g:Int32 |
NUMBER(10) |
g:Int64 |
NUMBER(10) |
g:Float |
FLOAT |
g:Double |
FLOAT |
g:Date |
DATE |
g:Timestamp |
TIMESTAMP 脚注2 |
g:UUID |
|
脚注1 stringFieldSize
パラメータを使用して、データベースがString
列に格納する文字列サイズを決定できます。
脚注2 fractionalSecondsPrecision
パラメータを使用して、Timestamp
型の列の精度を指定できます。