图投影是内存图,包含从图集加载的全部或部分数据。嬴图的图算法在图投影上运行,以达到最高效率。
基于嬴图Powerhouse(v5)的分片+HDC架构,图数据可以投影至HDC服务器或分片服务器,从而形成HDC投影或分布式投影。
选择HDC投影还是分布式投影需考虑多方因素,如物理基础设施、数据量和特定业务需求。下表为两种图投影的主要区别:
投影类型 |
算法效率 | 算法执行模式 | 计算框架 |
---|---|---|---|
HDC | 速度更快 | 回写,返回 | 集中式高密度计算 |
分布式 | 速度快 | 回写 | 分布式计算 |
HDC投影
将当前图集全部投影到hdc-server-1
上并命名为hdcGraph
:
CALL hdc.graph.create("hdc-server-1", "hdcGraph", {
nodes: {"*": ["*"]},
edges: {"*": ["*"]},
direction: "undirected",
load_id: true,
update: "static",
query: "query",
default: false
})
hdc.graph.create("hdcGraph", {
nodes: {"*": ["*"]},
edges: {"*": ["*"]},
direction: "undirected",
load_id: true,
update: "static",
query: "query",
default: true
}).to("hdc-server-1")
将当前图集投影到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.graph.create("hdcGraph_1", {
nodes: {
"account": ["name", "gender"],
"movie": ["name", "year"]
},
edges: {"*": ["*"]},
direction: "in",
load_id: false,
update: "static",
query: "query",
default: false
}).to("hdc-server-1")
想了解如何管理HDC投影,请参阅HDC投影(GQL)或HDC投影(UQL)。
分布式投影
将当前图集全部投影到分片服务器上并命名为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
})
想了解如何管理分布式投影,请参阅分布式投影(UQL)。暂不支持使用GQL管理分布式投影。