概述
用户可根据需要为一个图集创建一个或多个HDC图。每个HDC图托管在单个HDC服务器上。
显示HDC图
调用hdc.graph.show()
过程获取当前图集的所有HDC图信息:
CALL hdc.graph.show()
获取其中一个特定HDC图信息,如名为hdcGraph_1
的图:
CALL hdc.graph.show("hdcGraph_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.graph.show("<name>")
获取特定HDC图信息时,会额外返回两个表:
_graph_from_<hdcServerName>
:显示<hdcServerName>
上创建的所有HDC图_algoList_from_<hdcServerName>
:列出安装在<hdcServerName>
上的所有算法
其中,<hdcServerName>
是托管指定HDC图的HDC服务器名称。
创建HDC图
调用hdc.graph.create().to()
过程可为当前图集创建一个HDC图。创建过程以作业形式执行,稍后可使用语句CALL job.show()
来验证是否创建成功。
语法
CALL hdc.graph.create("<hdcServerName>", "<hdcGraphName>", {
nodes: {
"<label?>": ["<property1?>", "<property2?>", ...],
"<label2?>": ["<property1?>", "<property2?>", ...],
...
},
edges: {
"<label1?>": ["<property1?>", "<property2?>", ...],
"<label2?>": ["<property1?>", "<property2?>", ...],
...
},
direction: "<edgeDirection?>",
load_id: <boolean?>,
update: "<dataSyncMode>",
query: "query",
default: <boolean?>
})
参数 | 描述 | 可选 | |
---|---|---|---|
<hdcServerName> |
托管HDC图的HDC服务器名称 | 否 | |
<hdcGraphName> |
HDC图名称。每台HDC服务器上的HDC图名称必须唯一,且不可与同一图集的分布式投影重名 | 否 | |
配置 | nodes |
根据标签和属性指明待加载的点。默认加载_uuid ,可通过load_id 配置是否加载_id 。设置为 "*": ["*"] 时加载所有点 |
是 |
edges |
根据标签和属性指明待加载的边。默认加载所有系统属性。设置为"*": ["*"] 时加载所有边 |
是 | |
direction |
由于每条边在物理空间存储了两次(终点和一条入边以及起点和一条出边),您可选择使用in 只加载入边,使用out 只加载出边,或使用undirected (默认项)加载入边和出边。注意,使用in 或out 会在计算过程中将图遍历限制为指定的方向 |
是 | |
load_id |
设置为false 时,不加载点的_id 值以节约内存空间;默认为true |
是 | |
update |
设置数据同步模式。目前仅支持static 模式(默认),在该模式下,物理存储中的任何数据变更不会同步至HDC图中 |
是 | |
query |
这是一个保留参数,用于设置一个查询语句来指定要加载的数据。目前仅可设置为query |
否 | |
default |
设置为true 时,指定为当前图集的默认HDC图;默认为false |
是 |
示例
将当前图集全部加载到hdc-server-1
上并命名为hdcGraph
:
CALL hdc.graph.create("hdc-server-1", "hdcGraph", {
nodes: {"*": ["*"]},
edges: {"*": ["*"]},
direction: "undirected",
load_id: true,
update: "static",
query: "query",
default: true
})
将当前图集加载到hdc-server-1
上并命名为hdcGraph_1
,其中点@account
和@movie
仅加载指定属性,边 @rate
仅加载入边,且不加载点的_id
值:
CALL hdc.graph.create("hdc-server-1", "hdcGraph_1", {
nodes: {
"account": ["name", "gender"],
"movie": ["name", "year"]
},
edges: {"rate": ["*"]},
direction: "in",
load_id: false,
update: "static",
query: "query",
default: false
})
删除HDC图
调用hdc.graph.drop()
过程可以从HDC服务器上删除当前图集的HDC图。
删除名为hdcGraph_1
的HDC图:
CALL hdc.graph.drop("hdcGraph_1")
HDC图列表同步
HDC图由数据库的Meta服务器管理。在每个心跳周期内,最新的HDC图列表会从Meta服务器同步到名称服务器。每当执行HDC查询或算法时,都会引用名称服务器上的此列表。
创建或删除HDC图后,建议等待两个心跳周期,然后再对受影响的HDC图执行进一步操作。如需调整心跳周期,可修改名称服务器配置Server
部分的heartbeat_interval_s
设置(默认为3秒)。