概述
分布式投影驻留在图集数据持久存储的分片服务器内存中。分布式投影可包含图集的全部或部分数据。“分布式”是指投影中的数据仍可以分布在多个分片的内存中。
当一个图集的数据迁移至其他分片后,该图集的所有分布式投影都将丢失。
GQL暂不支持管理分布式投影。
显示分布式投影
获取当前图集的所有分布式投影信息:
show().project()
语句返回表_projectList
,包含以下字段:
字段 |
描述 |
---|---|
project_name |
投影名称 |
project_type |
投影类型,分布式投影的类型为distributed |
graph_name |
加载数据的源图集名称 |
status |
投影的当前状态,包括DONE 、CREATING 、FAILED 和UNKNOWN |
stats |
每个分片的点边统计数据,包括当前图集的主副本address 、edge_in_count 、edge_out_count 和node_count |
config |
分布式投影的配置 |
创建分布式投影
使用语句create.project()
可在分片服务器上创建一个当前图集的内存投影。创建过程以作业形式执行,稍后可以使用语句show().job(<id?>)
验证投影是否创建成功。
语法
create().project(
"<projectName>",
{
nodes: {
"<schema1?>": ["<property1?>", "<property2?>", ...],
"<schema2?>": ["<property1?>", "<property2?>", ...],
...
},
edges: {
"<schema1?>": ["<property1?>", "<property2?>", ...],
"<schema2?>": ["<property1?>", "<property2?>", ...],
...
},
direction: "<edgeDirection?>",
load_id: <boolean?>
}
)
方法 | 参数 | Description | 可选 | |
---|---|---|---|---|
project() |
<projectName> |
投影名称。同一数据库下,分布式投影名称必须唯一,且不可与同一图集下的HDC投影重名 | 否 | |
配置映射 | nodes |
根据schema和属性指定待投影的点。默认加载_uuid ,可通过配置load_id 选择是否加载_id 。使用"*": ["*"] 加载所有点 |
是 | |
edges |
根据schema和属性指定待投影的边。默认加载所有系统属性。使用"*": ["*"] 加载所有边 |
是 | ||
direction |
由于每条边在物理空间存储了两次(终点和一条入边以及起点和一条出边),您可选择使用in 只投影入边,使用out 只投影出边,或使用undirected (默认设置)投影入边和出边。请注意,使用in 或out 会在计算过程中限制图遍历为指定方向 |
否 | ||
load_id |
设置为false 时,投影各点不加载_id 值以节约内存空间;默认为true |
是 |
示例
将当前图集全部投影到分片服务器上并命名为distGraph
:
create().project("distGraph", {
nodes: {"*": ["*"]},
edges: {"*": ["*"]},
direction: "undirected",
load_id: true
})
将当前图集投影到分片服务器上并命名为distGraph_1
,其中点@account
和@movie
仅投影指定属性,边@rate
仅投影入边,且不加载点的_id
值:
create().project("distGraph_1", {
nodes: {
"account": ["name", "gender"],
"movie": ["name", "year"]
},
edges: {"rate": ["*"]},
direction: "in",
load_id: false
})
删除分布式投影
使用语句drop().project()
可以从分片服务器上删除当前图集的分布式投影。
删除名为distGraph_1
的分布式投影:
drop().project("distGraph_1")