概述
用户可根据需要为一个图集创建一个或多个HDC图。每个HDC图托管在单个HDC服务器上。
显示HDC图
获取当前图集的所有HDC图信息:
SHOW HDC GRAPH
获取当前图集驻留在HDC服务器hdc-server-1
的所有HDC图:
SHOW HDC GRAPH ON "hdc-server-1"
语句返回表_hdcGraphList
,包含以下字段:
字段 |
描述 |
---|---|
name |
HDC图名称 |
graph_name |
加载数据的源图集名称 |
status |
HDC图的当前状态,包括DONE 、CREATING 、FAILED 和UNKNOWN |
stats |
HDC图包含的点边统计数据,包括schema(标签)、属性和总数 |
is_default |
是否为当前图集的默认HDC图 |
hdc_server_name |
托管HDC图的HDC服务器名称 |
hdc_server_status |
HDC服务器的当前状态,包括ACTIVE 和DEAD |
config |
HDC图的配置 |
创建HDC图
使用CREATE HDC GRAPH
语句可为当前图集创建一个HDC图。创建过程以作业形式执行,稍后可使用语句SHOW JOB <id?>
来验证是否创建成功。
语法
CREATE HDC GRAPH [IF NOT EXISTS] <hdcGraphName> ON "<hdcServerName>" OPTIONS {
nodes: {
"<schema1>": ["<property1>", "<property2>", ...],
"<schema2>": ["<property1>", "<property2>", ...],
...
},
edges: {
"<schema1>": ["<property1>", "<property2>", ...],
"<schema2>": ["<property1>", "<property2>", ...],
...
},
direction: "<edgeDirection>",
load_id: <boolean>,
update: "<static_or_sync>",
query: "query",
default: <boolean>
}
参数 | 描述 | 可选 | |
---|---|---|---|
<hdcGraphName> |
HDC图名称。同一台HDC服务器上的HDC图不能重名,同一图集的HDC图和分布式投影不能重名 | 否 | |
<hdcServerName> |
托管HDC图的HDC服务器名称 | 否 | |
OPTIONS |
nodes |
根据标签和属性指明待加载的点。默认加载_uuid ,可通过load_id 配置是否加载_id 。设置为 "*": ["*"] 时加载所有点 |
是 |
edges |
根据标签和属性指明待加载的边。默认加载所有系统属性。设置为"*": ["*"] 时加载所有边 |
是 | |
direction |
由于每条边在物理空间存储了两次(终点和一条入边以及起点和一条出边),您可选择使用in 只加载入边,使用out 只加载出边,或使用undirected (默认项)加载入边和出边。注意,使用in 或out 会在计算过程中将图遍历限制为指定的方向 |
是 | |
load_id |
设置为false 时,不加载点的_id 值以节约内存空间;默认为true |
是 | |
update |
设置数据同步模式:
|
是 | |
query |
这是一个保留参数,用于设置一个查询语句来指定要加载的数据。目前仅可设置为query |
否 | |
default |
设置为true 时,指定为当前图集的默认HDC图;默认为false |
是 |
[1] 注意:涉及到图结构(schema和属性)的修改不会同步至HDC图中。例如,新增一个schema并向其插入点,这个schema和属于它的点都不会同步至HDC图。
[2] 创建HDC图后,需等待2个心跳周期,同步才会发生。
示例
将当前图集全部加载到hdc-server-1
上并命名为hdcGraph
:
CREATE HDC GRAPH hdcGraph ON "hdc-server-1" OPTIONS {
nodes: {"*": ["*"]},
edges: {"*": ["*"]},
direction: "undirected",
load_id: true,
update: "static",
query: "query",
default: true
}
将当前图加载到hdc-server-1
上并命名为hdcGraph_1
,包括account
和movie
点的指定属性,rate
入方向边,且不加载点的_id
:
CREATE HDC GRAPH hdcGraph_1 ON "hdc-server-1" OPTIONS {
nodes: {
"account": ["name", "gender"],
"movie": ["name", "year"]
},
edges: {"rate": ["*"]},
direction: "in",
load_id: false,
update: "static",
query: "query",
default: false
}
IF NOT EXISTS
子句用于防止在尝试创建已存在的HDC图时出错,它允许安全地执行语句。
CREATE HDC GRAPH IF NOT EXISTS hdcGraph ON "hdc-server-1" OPTIONS {
nodes: {"*": ["*"]},
edges: {"*": ["*"]},
direction: "undirected",
load_id: true,
update: "static",
query: "query",
default: true
}
仅当不存在该名称的HDC图时,才会创建HDC图hdcGraph
。如果hdcGraph
已存在,则忽略该语句,不会引发报错。
删除HDC图
使用DROP HDC GRAPH
语句可从HDC服务器上删除当前图集的HDC图。
删除名为hdcGraph_1
的HDC图:
DROP HDC GRAPH hdcGraph_1
HDC图列表同步
HDC图由数据库的Meta服务器管理。在每个心跳周期内,最新的HDC图列表会从Meta服务器同步到名称服务器。每当执行HDC查询或算法时,都会引用名称服务器上的此列表。
创建或删除HDC图后,建议等待两个心跳周期,然后再对受影响的HDC图执行进一步操作。如需调整心跳周期,可修改名称服务器配置Server
部分的heartbeat_interval_s
设置(默认为3秒)。