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