27.1.6 バイナリ・ファイル形式
PGXバイナリ形式(PGB)
PGXバイナリ形式(.pgb)は、グラフ・サーバー(PGX)の独自のバイナリ形式であり、高速で効率的なファイル処理を可能にします。基本的に、ファイルはグラフおよびプロパティ・データのバイナリ・ダンプです。バイトはネットワーク・バイト順に書き込まれます(ビッグ・エンディアン)。
                  
型のエンコーディング
表27-3 型のエンコーディング
| 値 | 型 | サイズ(バイト単位) | 
|---|---|---|
0 | 
                              Boolean | 
                              1 | 
                           
1 | 
                              Integer | 
                              4 | 
                           
2 | 
                              Long | 
                              8 | 
                           
3 | 
                              Float | 
                              4 | 
                           
4 | 
                              Double | 
                              8 | 
                           
7 | 
                              String | 
                              可変 | 
11 | 
                              Vertex labels | 
                              可変 | 
13 | 
                              Local date | 
                              4 | 
                           
14 | 
                              Time | 
                              4 | 
                           
15 | 
                              Timestamp | 
                              8 | 
                           
16 | 
                              Time with time zone | 
                              8 | 
                           
17 | 
                              タイム・ゾーン付きのタイムスタンプ | 
                              12 | 
                           
18 | 
                              Vector property | 
                              可変: <sizeof component-type> * <dimension> | 
                           
ファイル・レイアウト
表27-4 ファイル・レイアウト
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
4 | 
                              マジック・ワード | はい | 0x99191191 | 
                           
4 | 
                              頂点サイズ | はい | 許可された値は4および8です。
                               | 
                           
4 | 
                              エッジ・サイズ | はい | 許可された値は4および8です。
                               | 
                           
<vertex size> | 
                              頂点の数 | はい | |
<edge size> | 
                              エッジの数 | はい | |
<edge size> * (<numVertices> + 1) | 
                              エッジ開始配列 | はい | |
<vertex size> * <numEdges> | 
                              入力頂点配列 | はい | |
1 | 
                              コンポーネント・ビットマップ | はい | 
                                 
  | 
                           
4 | 
                              vertexKeyタイプ | いいえ | コンポーネント・ビットマップ & 0x0001 == 0x0001の場合のみ存在します。型のエンコーディングは、表27-3を参照してください。
                               | 
                           
<vertex key layout> | 
                              頂点キー | いいえ | コンポーネント・ビットマップ & 0x0001 == 0x0001の場合のみ存在します。
                               | 
                           
4 | 
                              edgeKeyタイプ | いいえ | コンポーネント・ビットマップ & 0x0008 == 0x0008の場合のみ存在します。型のエンコーディングは、表27-3を参照してください
                               | 
                           
<numEdges> * 8 | 
                              エッジ・キー | いいえ | コンポーネント・ビットマップ & 0x0008 == 0x0008の場合のみ存在します。
                               | 
                           
4 | 
                              頂点プロパティの数 | はい | |
<num vertex properties> * <property layout> | 
                              プロパティ・データ | はい | 表27-10を参照してください。 | 
4 | 
                              エッジ・プロパティの数 | はい | |
<num edge properties> * <property layout> | 
                              プロパティ・データ | はい | エッジ・プロパティのレイアウトを参照してください。 | 
<vertex labels layout> | 
                              頂点ラベル | いいえ | コンポーネント・ビット & 0x0002 == 0x0002の場合のみ存在します。
                               | 
                           
<edge labels layout> | 
                              エッジ・ラベル | いいえ | コンポーネント・ビット & 0x0004 == 0x0004の場合のみ存在します。
                               | 
                           
4 | 
                              共有プールの数 | はい | |
<shared pools size> | 
                              共有プール | いいえ | |
<property names size> | 
                              プロパティ名 | いいえ | コンポーネント・ビット & 0x0010 == 0x0010の場合のみ存在します。表27-19を参照してください。
                               | 
                           
頂点キーのレイアウト
頂点キーのレイアウトは、vertexKeyタイプによって異なります。PGBでは、integer、longおよびstring頂点キーがサポートされます。
                  
表27-5 整数頂点キー
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
<numVertices> * 4 | 
                              キー・データ | はい | 頂点ごとに対応する整数キー値。 | 
表27-6 long頂点キー
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
<numVertices> * 8 | 
                              キー・データ | はい | 頂点ごとに対応するlongキー値。 | 
表27-7 文字列頂点キー
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
4 | 
                              圧縮方式 | はい | 予約済(0である必要があります)
                               | 
                           
8 | 
                              プロパティ・サイズ | はい | 次のデータ内の各要素のサイズ(バイト単位) | 
<number of keys> * <string key element layout> | 
                              文字列キー・データ | はい | 頂点キーの内容(表27-5を参照) | 
表27-8 文字列キー要素のレイアウト
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
4 | 
                              文字列長 | はい | 文字列の長さ(バイト単位) | 
<string length> | 
                              文字列キー・データ | はい | 文字列の内容のバイト数、ゼロ文字不可 | 
プロパティ・レイアウト
次に、文字列プロパティおよびベクトル・プロパティの特殊なレイアウトを示します。
表27-9 プリミティブ型のレイアウト
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
4 | 
                              プロパティ・タイプ | はい | 型のエンコーディングは、表27-3を参照してください。 | 
8 | 
                              プロパティ・サイズ | はい | プロパティ・データのサイズ(バイト単位) | 
<property size> | 
                              プロパティ・データ | はい | <numVertices/numEdges> * <type size>として格納されます | 
                           
表27-10 ベクトル・プロパティのレイアウト
| サイズ(バイト単位) | 説明 | コメント | 
|---|---|---|
4 | 
                              ベクトル型の印 | 常に18です。 | 
8 | 
                              ベクトル・プロパティ・データと追加フィールドのサイズ | dataSize = <sizeof component-type> * <dimension> + 8 (追加の8バイトは、ベクトル・プロパティ・ヘッダー内に追加された次の2つの追加フィールド用です。)
                               | 
                           
4 | 
                              ベクトル・コンポーネント・データ型 | 有効な型は、integer、long、float、doubleです。表27-3で指定した値でエンコードされます。
                               | 
                           
4 | 
                              ベクトルのディメンション | ベクトル値ごとのコンポーネントの数。有効なベクトル・プロパティにするには、0より大きくする必要があります。 | 
dataSize - 8 | 
                              データ | 長さ* ` in which the value of the j-th component of the vector for the i-th entity is at position i * + j`の配列として格納されます。
                               | 
                           
表27-11 文字列型のレイアウト
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
4 | 
                              プロパティ・タイプ | はい | 7である必要があります。 | 
8 | 
                              プロパティ・サイズ | はい | 次のデータのサイズ(バイト単位)。 | 
1 | 
                              予約済 | はい | 予約済(0である必要があります)。 | 
<dictionary layout> | 
                              ディクショナリ | はい | プロパティで使用される文字列ディクショナリ | 
<numVertices/numEdges> * 8 | 
                              プロパティ・コンテンツ | はい | 文字列プロパティのコンテンツで、ディクショナリ内の文字列を参照するIDとして格納されます。 | 
表27-12 文字列ディクショナリのレイアウト
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
1 | 
                              予約済 | はい | 予約済(0である必要があります)。 | 
8 | 
                              文字列の数 | はい | 次のディクショナリ内の文字列の数。 | 
<number of strings> * <dictionary element layout> | 
                              ディクショナリ・データ | はい | 表27-13を参照してください。 | 
表27-13 文字列ディクショナリ要素のレイアウト
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
8 | 
                              文字列ID | はい | 文字列の一意のID。 | 
4 | 
                              文字列長 | はい | 文字列の長さ(バイト単位)。 | 
<string length> | 
                              文字列データ | はい | 文字列の内容のバイト数、ゼロ文字不可 | 
頂点ラベルのレイアウト
表27-14 頂点ラベルのレイアウト
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
4 | 
                              型 | はい | 11である必要があります。 | 
8 | 
                              サイズ | はい | 次のデータのサイズ(バイト単位)。 | 
<dictionary layout> | 
                              ディクショナリ | はい | 頂点ラベルで使用される文字列ディクショナリ。 | 
<numVertices + 1> * 8 | 
                              文字列ID開始配列 | はい | 各頂点の<string ids>オフセット配列。
                               | 
                           
8 | 
                              文字列IDの数 | はい | 文字列IDの数。 | 
<number of string ids> * 8 | 
                              文字列ID | はい | 文字列ディクショナリ内の文字列IDの配列。 | 
エッジ・ラベルのレイアウト
エッジ・ラベルのレイアウトは、文字列型のレイアウトに従います。
共有プールのレイアウト
表27-15 共有プールのレイアウト
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
1 | 
                              型 | はい | 1: 列挙、2: 接頭辞付き | 
表27-16 型 == 列挙
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
8 | 
                              文字列の数 | はい | |
<number of strings> * <string table layout> | 
                              ディクショナリ・データ | はい | 表27-18を参照してください。 | 
表27-17 型 == 接頭辞
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
8 | 
                              接頭辞の数 | はい | |
<number of prefixes> * <string table layout> | 
                              ディクショナリ・データ | はい | 表27-18を参照してください。 | 
8 | 
                              接尾辞の数 | はい | |
<number of suffixes> * <string table layout> | 
                              ディクショナリ・データ | はい | 表27-18を参照してください。 | 
表27-18 共有プールの文字列表
| サイズ(バイト単位) | 説明 | 必須 | コメント | 
|---|---|---|---|
8 | 
                              文字列ID | はい | 文字列は、リテラル(列挙の場合)または接頭辞/接尾辞(接頭辞の場合)にできます。 | 
4 | 
                              文字列長 | はい | |
<string length> | 
                              文字列データ | はい | 
親トピック: ファイルからのグラフ・データのロード