16.4 複数のファイルへのグラフのエクスポート
store
メソッドを使用して、複数のファイルにグラフを格納できます。ほとんどのパラメータは、単一のファイルに格納する場合と同じです。ただし、主な違いは、データをパーティション化する方法の指定にあります。
データは、次の2つのうちいずれかの方法でパーティション化できます。
FileGraphStoringConfig
の指定(詳細は、表16-22を参照)- ベース・パスとパーティション数の指定
FileGraphStoringConfigを使用した複数のファイルへのエクスポート
FileGraphStoringConfig
を使用して、グラフを格納するために使用される複数のパーティションを作成するためのより詳細な方法を指定できます。FileGraphStoringConfigBuilder
を使用して、FileGraphStoringConfig
オブジェクトを作成できます。
たとえば、次のコードでは、指定されたベース・パスを使用して4つのパーティションに格納すること、およびパーティション化の初期索引として0を使用することが指定されます。また、頂点ファイルおよびエッジ・ファイルに使用するファイル拡張子も含まれ、最後に、グラフ・データを格納するときに使用するデリミタとしてカンマが設定されます。
FileGraphStoringConfig storingConfig = new FileGraphStoringConfigBuilder(basePath) //
.setNumPartitions(4) //
.setInitialPartitionIndex(0) //
.setVertexExtension(vertexExtension) //
.setEdgeExtension(edgeExtension) //
.setDelimiter(',') //
.build();
numPartitions
パラメータを使用して、すべての表を均等にパーティション化することもできます。つまり、すべての表は同じ数のファイルにエクスポートされます。
表を均等にパーティション化しない場合は、プロバイダごとにFileGraphStoringConfig
を含むPartitionedGraphConfig
を1つ作成するか(表16-22を参照)、FileGraphStoringConfigsの2つのマップ(1つは頂点表用、もう1つはエッジ表用)を使用するstore()
のバージョンを使用できます。
最初のオプションでは、頂点表およびエッジ表ごとにFileGraphStoringConfig
を作成し、FileEntityProviderConfig
ビルダーでsetStoringOptions
を使用して、FileEntityProviderConfig
に配置できます。次に、PartitionedGraphConfig
ビルダーでaddVertexProvider()
およびaddEdgeProvider()
を使用して、エッジ・プロバイダおよび頂点プロバイダとしてPartitionedGraphConfig
にプロバイダが追加されます。後で、パラメータとしてPartitionedGraphConfig
を使用するstore()
メソッドを使用できます。
2番目のオプションでは、すべてのエッジ表および頂点表に格納構成を作成して、それらを頂点プロバイダおよびエッジ・プロバイダのマップに追加し、これらのマップをパラメータとして対応するstore()
メソッドをコールします。
次に例を示します。
FileGraphStoringConfig vertexStoringConfig1 = new FileGraphStoringConfigBuilder(basePath + "_vertexTable1") //
.setNumPartitions(4) //
.setInitialPartitionIndex(0) //
.setVertexExtension(vertexExtension) //
.setDelimiter(',') //
.build();
FileGraphStoringConfig vertexStoringConfig2 = new FileGraphStoringConfigBuilder(basePath + "_vertexTable2") //
.setNumPartitions(4) //
.setInitialPartitionIndex(0) //
.setVertexExtension(vertexExtension) //
.setDelimiter(',') //
.build();
FileGraphStoringConfig edgeStoringConfig1 = new FileGraphStoringConfigBuilder(basePath + "_edgeTable1") //
.setNumPartitions(4) //
.setInitialPartitionIndex(0) //
.setEdgeExtension(edgeExtension) //
.setDelimiter(',') //
.build();
Map<String, FileGraphStoringConfig> vertexStoringConfigs = new HashMap<>();
vertexStoringConfigs.put("vertexTable1", vertexStoringConfig1);
vertexStoringConfigs.put("vertexTable2", vertexStoringConfig2);
Map<String, FileGraphStoringConfig> edgeStoringConfigs = new HashMap<>();
edgeStoringConfigs.put("edgeTable1", edgeStoringConfig);
FileGraphStoringConfigを使用しない複数のファイルへのエクスポート
必要なパーティションの数および使用するベース名を指定することのみが必要である場合は、これらのパラメータを指定するのみでstore()
メソッドを使用する方が簡単です。この手順に従って、グラフサーバー(PGX)では、他のフィールドにデフォルトが使用されます。デフォルト値の詳細は、表16-22を参照してください。
グラフ構成オブジェクトを使用した複数のファイルへのエクスポート
複数のファイルにエクスポートするもう1つの方法では、FileGraphStoringConfig
を作成し、そのビルダーでsetStoringOptions
を使用してGraph Configuration
オブジェクトに配置してから、対応するバージョンのstore()
メソッドを使用します。
親トピック: グラフ・サーバー(PGX)を使用したファイルの操作