跳转至

图建模

本文介绍在Nebula Graph项目中成功应用的一些图建模通用建议。

说明:本文建议是通用的,在特定领域有例外,请结合实际业务情况进行图建模。

以性能为目标进行建模

目前Nebula Graph没有完美的建模方法,如何建模取决于您想从数据中挖掘的内容。分析数据并根据业务模型创建方便直观的数据模型,测试模型并优化,逐渐适应业务。为了更好的性能,您可以多次更改或重新设计模型。

合理设置边属性

  • 深度图遍历的性能较低,为了减少遍历深度,请使用点属性代替边。例如,模型a包括姓名、年龄、眼睛颜色三种属性,建议您创建一个标签person,然后为它添加姓名、年龄、眼睛颜色的属性。如果创建一个包含眼睛颜色的标签和一个边类型has,然后创建一个边用来表示人拥有的眼睛颜色,这种建模方法会降低遍历性能。
  • 为边创建属性时请勿使用长字符串,Nebula Graph支持在边上存储长字符串属性,但是这些属性会同时保存在出边和入边,请小心写入放大(write amplification)。

合理设置标签属性

在图建模中,请将一组类似的平级属性放入同一个标签,即按不同概念进行分组。

正确使用索引

正确使用索引可以加速查询,但是索引会导致写性能下降90%甚至更多,只有在根据点或边的属性定位点或边时才使用索引。

注意:请不要随意在生产环境中使用索引,除非您很清楚使用索引对业务的影响。


最后更新: 2021年3月17日