A.1 2表スキーマの準備
OraclePropertyGraphUtils.prepareTwoTablesGraphVertexTab
により、2表スキーマを使用して頂点表のスキーマをカスタマイズして、すべての頂点をグラフに格納することができます。この操作には、Oracleデータベース、表の所有者、表名、およびプロパティ名とデータ型を指定する2つの配列に対する接続が必要です。デフォルトで、生成された表の表スキーマには、属性VID
が含まれ、これは表の主キーを表し、頂点IDにマッピングされます。
次のコード・スニペットは、2表スキーマを使用して頂点表を作成します。この場合、生成された表employeesNodes
には4つの属性が含まれます。name
、age
、address
およびSSN
(Social Security Number)です。頂点表の主キーは生成された属性VID
です。
import oracle.pgx.common.types.PropertyType;
List<String> propertyNames = new ArrayList<String>();
propertyNames.addAll(new String[4]{ "name", "age", "address", "SSN" });
List<PropertyType> = new ArrayList<PropertyType>();
propertyType.add(PropertyType.STRING);
propertyType.add(PropertyType.INTEGER);
propertyType.add(PropertyType.STRING);
propertyType.add(PropertyType.STRING);
OraclePropertyGraphUtils.prepareTwoTablesGraphVertexTab(conn /* Connection object */,
pg /* table owner */,
"employeesNodes" /* vertex table name */,
propertyNames /* property names */,
propertyTypes /* property data types */,
"pgts" /* table space */,
null /* storage options */,
true /* no logging */);
前述のコードは次のような表スキーマを生成します。
CREATE TABLE employeenodes ( VID number not null, NAME nvarchar2(15000), AGE integer, ADDRESS nvarchar2(15000), SSN nvarchar2(15000), CONSTRAINT employenodes_pk PRIMARY KEY (VID) );
同様に、OraclePropertyGraphUtils.prepareTwoTablesGraphEdgeTab
により、2表スキーマを使用してエッジ表のスキーマをカスタマイズして、すべてのエッジをグラフに格納することができます。この操作には、Oracleデータベース、表の所有者、表名、およびプロパティ名とデータ型を指定する2つの配列に対する接続が必要です。デフォルトで、生成された表の表スキーマには、次の属性が含まれます。EID
、表の主キーを表し、エッジIDにマップされます。EL
、エッジ・ラベルにマップされます。SVID
およびDVID
、それぞれ出力および入力頂点IDです。
次のコード・スニペットは、2表スキーマを使用してエッジ表を作成します。この場合、生成された表organizationEdges
にはweight
という名前の属性が含まれます。頂点表の主キーは、生成された属性EID
で、これは表スキーマのデフォルトの属性で、頂点ID(long値)の値にマッピングされます。
import oracle.pgx.common.types.PropertyType;
List<String> propertyNames = new ArrayList<String>();
propertyNames.addAll(new String[1]{ "weight" });
List<PropertyType> = new ArrayList<PropertyType>();
propertyType.add(PropertyType.DOUBLE);
OraclePropertyGraphUtils.prepareTwoTablesGraphEdgeTab(conn /* Connection object */,
pg /* table owner */,
organizationEdges" /* edge table name */,
propertyNames /* property names */,
propertyTypes /* property data types */,
"pgts" /* table space */,
null /* storage options */,
true /* no logging */);
前述のコードは次のような表構造を生成します。
CREATE TABLE organizationedges ( EID number not null, SVID number not null, DVID number not null, EL nvarchar2(3100), WEIGHT number, CONSTRAINT organizationedges_pk PRIMARY KEY (EID) );
表がすでに存在する場合、prepareTwoTablesGraphEdgeTab
とprepareTwoTablesGraphEdgeTab
の両方は表コンテンツを切り捨てます。
親トピック: 2表スキーマを使用したプロパティ・グラフの処理