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()メソッドを使用します。