图建模

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

以性能为目标进行建模

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

合理设置边属性

  • 深度图遍历的性能较低,为了减少遍历深度,请使用点属性代替边。例如,模型a包括姓名、年龄、眼睛颜色三种属性,建议创建一个标签person,然后为它添加姓名、年龄、眼睛颜色的属性。如果创建一个包含眼睛颜色的标签和一个边类型has,然后创建一个边用来表示人拥有的眼睛颜色,这种建模方法会降低遍历性能。

  • 为边创建属性时请勿使用长字符串,Nebula Graph支持在边上存储长字符串属性,但是这些属性会同时保存在出边和入边,请小心写入放大(write amplification)。

合理设置标签属性

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

正确使用索引

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