NoSQL数据库设计:图形,文档,边缘..?

时间:2016-03-04 15:32:35

标签: collections graph-databases edges document-database nosql

我第一次尝试设计一个NoSQL数据库,我对某些事情感到困惑。

我可以创建包含文档的集合以及包含边的集合。 另一方面,我可以创建通过边连接文档的图形。

我的想法是通过边缘连接不同的集合(我不知道是否有其他方法可以连接不同的集合)。

所以我不知道我是应该将数据库构建为图形还是作为集合(类型文档)和集合(类型为edge)构建。

我的馆藏中的文档包含大量的对象和列表,当我搜索图形数据库示例时,我通常会看到图表中的节点只包含很少的信息(例如名称,地址,城市),所以我不会#39 ;然后知道如果创建一个包含复杂文档的图表是个好主意。我需要图表,因为我想做一个横向,如...的朋友,朋友...

2 个答案:

答案 0 :(得分:3)

最后我使用文档和边缘而不构建图形,因为我看到ArangoDB让我在没有任何图形的情况下进行遍历。见https://docs.arangodb.com/Aql/GraphFunctions.html

答案 1 :(得分:2)

将ArangoDB称为多模型数据库 - 它允许您选择最适合您的数据模型的数据库。 ArangoDB及其AQL允许您对集合进行连接。连接为更大的数量提供最佳的可扩展性。如果您将属性附加到两个文档的关系,则排除联接。

在执行图形查询后加入的辅助集合中的内联属性和属性之间的选择取决于与计算机大小相关的数据量。在单个服务器实例上运行时,图算法的性能更好 - 因此限制图中的数据量是一个有效的问题。 Otoh如果您知道图表很可能不会超过一台加入数据的机器在遍历图表后会产生额外成本。

在ArangoDB中,边缘被实现为具有预定义_from_to属性的文档 - 因此您可以将任何文档结构附加到您喜欢的位置。

最后,文档存储的优势在于,您可以自由组合您经常需要组合的结构化数据。