图建模Graph
本文介绍在NebulaGraph项目中成功应用的一些图建模通用建议。
说明:本文建议是通用的,在特定领域有例外,请结合实际业务情况进行图建模。
以性能为目标进行建模Graph
目前NebulaGraph没有完美的建模方法,如何建模取决于您想从数据中挖掘的内容。分析数据并根据业务模型创建方便直观的数据模型,测试模型并优化,逐渐适应业务。为了更好的性能,您可以多次更改或重新设计模型。
合理设置边属性Graph
- 深度图遍历的性能较低,为了减少遍历深度,请使用点属性代替边。例如,模型a包括姓名、年龄、眼睛颜色三种属性,建议您创建一个标签
person
,然后为它添加姓名、年龄、眼睛颜色的属性。如果创建一个包含眼睛颜色的标签和一个边类型has
,然后创建一个边用来表示人拥有的眼睛颜色,这种建模方法会降低遍历性能。
- 为边创建属性时请勿使用长字符串,NebulaGraph支持在边上存储长字符串属性,但是这些属性会同时保存在出边和入边,请小心写入放大(write amplification)。
合理设置标签属性Graph
在图建模中,请将一组类似的平级属性放入同一个标签,即按不同概念进行分组。
正确使用索引Graph
正确使用索引可以加速查询,但是索引会导致写性能下降90%甚至更多,只有在根据点或边的属性定位点或边时才使用索引。
注意:请不要随意在生产环境中使用索引,除非您很清楚使用索引对业务的影响。
最后更新: March 17, 2021