构建图时,通常需要指定顶点的“类型”。从概念上讲,我看到这可以通过将顶点标签或属性应用于每个顶点(即 Bob,Label: Man),或者通过将顶点链接到另一个“类型”顶点(即 Bob --IS A--> Man)来完成)。
要查找“Man”类型的所有顶点的列表,我可以编写适用于这两种方法的 gremlin 查询。但是什么是最佳实践?
构建图时,通常需要指定顶点的“类型”。从概念上讲,我看到这可以通过将顶点标签或属性应用于每个顶点(即 Bob,Label: Man),或者通过将顶点链接到另一个“类型”顶点(即 Bob --IS A--> Man)来完成)。
要查找“Man”类型的所有顶点的列表,我可以编写适用于这两种方法的 gremlin 查询。但是什么是最佳实践?
最佳实践:保持数据模型简单,并确保它与底层图形数据库的高效索引兼容。在 TinkerPop 级别上,没有一种适合所有解决方案的解决方案。
这实际上取决于您的数据模型以及底层数据库的索引功能,更不用说数据在磁盘上实际序列化的方式了。最终,这一切都归结为您期望查询图表的方式以及您希望拥有的性能。
话虽如此,人们通常使用顶点标签,有时与某种type
属性结合使用。图实现者应该能够为回答此类查询提供有效的索引。它还应该提供一个更简单的图形模型,这是需要考虑的重要事项。
根据图形的大小,在使用顶点建模类型时可能会遇到性能问题,因为man
类型顶点可能很快成为超节点。