本节介绍管理数据库中图的方法。
showGraph()
获取数据库中全部的图。
参数
config?: RequestConfig
:请求配置。
返回值
GraphSet[]
:获取的图列表。
// Retrieves all graphs
const graphs = await driver.showGraph();
graphs.forEach((graph) => console.log(graph.name));
Display_Ad_Click
ERP_DATA2
wikiKG
getGraph()
获取数据库中一个指定的图。
参数
graphName: string
:图名称。config?: RequestConfig
:请求配置。
返回值
GraphSet
:获取的图。
// Retrieves the graph named 'miniCircle'
const graph = await driver.getGraph("miniCircle");
console.log(graph);
GraphSet {
id: '9',
name: 'miniCircle',
totalNodes: '97',
totalEdges: '632',
shards: [ '1' ],
partitionBy: 'CityHash64',
status: 'NORMAL',
description: '',
slotNum: 256
}
hasGraph()
检查数据库中是否存在一个指定的图。
参数
graphName: string
:图名称。config?: RequestConfig
:请求配置。
返回值
Boolean
:检查结果。
// Checks the existence of a graph named 'miniCircle'
const graphName = "miniCircle";
const response = await driver.hasGraph(graphName);
console.log("Graph", graphName, "exists:", response);
Graph miniCircle exists: true
createGraph()
在数据库中创建一个图。
参数
graphSet: GraphSet
:待创建的图;name
字段必填,shards
、partitionBy
和description
可选。config?: RequestConfig
:请求配置。
返回值
Response
:请求结果。
// Creates a graph
const graph: GraphSet = {
name: "myGraph",
shards: ["1"],
partitionBy: "Crc32",
description: "My first graph"
};
const response = await driver.createGraph(graph)
console.log(response.status?.message);
SUCCESS
createGraphIfNotExist()
在数据库中创建一个图,并返回是否数据库中已有同名图存在。
参数
graphSet: GraphSet
:待创建的图;name
字段必填,shards
、partitionBy
和description
可选。config?: RequestConfig
:请求配置。
返回值
ResponseWithExistCheck
:请求结果。
// Creates a graph with existence check
const graph: GraphSet = {
name: "myGraph",
shards: ["1"],
partitionBy: "Crc32",
description: "My first graph"
};
const result = await driver.createGraphIfNotExist(graph);
console.log("Graph already exists:", result.exist);
if (result.response.status?.code !== 0) {
console.log("Error message:", result.response.status?.message);
} else {
if (result.response.statistics?.totalCost === 0) {
console.log("New graph created: No");
} else {
console.log("New graph created: Yes");
}
};
Graph already exists: true
New graph created: No
alterGraph()
修改数据库中一个图的名称和描述。
参数
graphName: string
:图名称。alterGraphset: GraphSet
: 用于设置新的图name
和/或description
的GraphSet
对象。config?: RequestConfig
:请求配置。
返回值
Response
:请求结果。
// Alters the name and description of the graph 'myGraph'
const newGraphInfo: GraphSet = {
name: "newGraph",
description: "a new graph"
};
const response = await driver.alterGraph("myGraph", newGraphInfo);
console.log(response.status?.message);
SUCCESS
dropGraph()
从数据库中删除一个指定的图。
参数
graphName: string
:图名称。config?: RequestConfig
:请求配置。
返回值
Response
:请求结果。
// Drops a graph
const response = await driver.dropGraph("myGraph");
console.log(response.status?.message);
SUCCESS
truncate()
清空(删除)图中的指定点或边,或清空整个图。请注意,清空点的同时会删除与点相连的所有边。清空操作仅删除点边,图的Schema和属性定义仍保留。
参数
params: TruncateParams
:清空操作的参数;graphName
字段必填,schemaName
和dbType
可选。config?: RequestConfig
:请求配置。
返回值
Response
:请求结果。
// Truncates User nodes in 'myGraph'
const param1: TruncateParams = { graphName: "myGraph", schemaName: "User", dbType: DBType.DBNODE }
const response1 = await driver.truncate(param1);
console.log(response1.status?.message);
// Truncates all edges in the 'myGraph'
const param2: TruncateParams = { graphName: "myGraph", schemaName: "*", dbType: DBType.DBEDGE }
const response2 = await driver.truncate(param2);
console.log(response2.status?.message);
// Truncates 'myGraph'
const param3: TruncateParams = { graphName: "myGraph" }
const response3 = await driver.truncate(param3);
console.log(response3.status?.message);
SUCCESS
SUCCESS
SUCCESS
compact()
清除图中的无效及冗余数据。有效数据不会受到影响。
参数
graphName: string
:图名称。config?: RequestConfig
:请求配置。
返回值
JobResponse
:请求结果。
// Compacts the graph 'miniCircle'
const requestConfig: RequestConfig = { graph: "miniCircle" };
const jobResponse = await driver.compact("miniCircle", requestConfig);
console.log("Start compacting:", jobResponse.status?.message)
const jobID = jobResponse.jobId;
await new Promise(resolve => setTimeout(resolve, 3000))
const jobs = await driver.showJob(jobID, requestConfig);
for (const job of jobs) {
console.log("Compact graph job:", `${job.id} - ${job.status}`);
}
Start compacting: SUCCESS
Compact graph job: 4 - FINISHED
Compact graph job: 4_1 - FINISHED
完整示例
import { UltipaDriver } from "@ultipa-graph/ultipa-driver";
import type { ULTIPA } from "@ultipa-graph/ultipa-driver/dist/types/index.js";
import { GraphSet } from "@ultipa-graph/ultipa-driver/dist/types/types.js";
let sdkUsage = async () => {
const ultipaConfig: ULTIPA.UltipaConfig = {
// URI example: hosts: ["xxxx.us-east-1.cloud.ultipa.com:60010"]
hosts: ["10.xx.xx.xx:60010"],
username: "<username>",
password: "<password>"
};
const driver = new UltipaDriver(ultipaConfig);
// Creates a graph
const graph: GraphSet = {
name: "myGraph1",
shards: ["1"],
partitionBy: "Crc32",
description: "My first graph"
};
const response = await driver.createGraph(graph)
console.log(response.status?.message);
};
sdkUsage().catch(console.error);