从 NoSQL 到图数据库的迁移

尽管 NoSQL(“不只是 SQL”)的命名有些不恰当,但这个领域汇集了许多有趣的解决方案,它们提供了不同的数据模型和数据库系统,每种方案都比传统的 SQL 解决方案更适合某些特定用例和数据形态。

随着 NoSQL 运动的兴起,大型关系型系统“一刀切”的理念被取代,取而代之的是有意识地选择适合工作的正确工具。

大多数 NoSQL 系统是聚合导向的,它们根据特定标准和数据库类型(如文档存储、键值对等)对数据进行分组。这种模型只提供简单、有限的操作,并且只形成数据的一个专用视图。一次只关注一个聚合允许用户轻松地将大量数据块沿着聚合维度(例如文档数据库中的文档)分布到机器网络中,但这同时也意味着其他投影和视角必须通过处理或复制数据来计算。

大多数 NoSQL 数据库存储的是一组不连通的聚合。这使得它们难以用于连接数据和图。向这类存储添加关系的一个常用策略是将一个聚合的标识符嵌入到属于另一个聚合的字段中——这实际上是引入了外键。但是,这要求在应用程序级别进行聚合连接,这很快就会变得非常昂贵。
— 《图数据库》,O'Reilly

其他 NoSQL 数据库缺乏关系。而图数据库则处理细粒度的信息网络,为您的数据提供符合您用例的任何视角。来自关系型系统的成熟可靠的事务保证也保护了 Neo4j 中图数据的更新,符合 ACID 标准。

让我们将图数据模型与其他 NoSQL 模型进行比较。

将 NoSQL 知识转换为图

随着 NoSQL 运动的兴起,各种规模的企业都有多种现代选项可供选择,以构建与其用例相关的解决方案。

  • 计算平均收入?请问关系型数据库

  • 构建购物车?使用键值存储

  • 存储结构化产品信息?存储为文档

  • 描述用户如何从 A 点到达 B 点?遵循

下图展示了每种数据库类型在衡量深度和大小的维度上的表现。虽然键值存储可以处理海量数据,但它们设计用于数据的高层视图(低深度)。图数据库即使在比其他类型数据库更大的数据深度下,也能保持最小的规模。其他类型的数据库则介于这些范围之间。

键值存储与图:数据模型差异

键值模型非常适合查找大量简单甚至复杂的值,并且性能极高。下图展示了典型的键值存储是如何构建的。

然而,当这些值本身相互连接时,您就拥有了一个图。Neo4j 允许您在所有连接的值之间快速遍历,并在关系中发现洞察。下面的图版本展示了每个键如何与单个值关联,以及不同值之间如何相互关联(就像节点通过关系相互连接一样)。

文档与图:数据模型差异

文档模型的结构化层次可以容纳大量无模式数据,这些数据可以很容易地表示为树。尽管树是一种图,但树只代表数据的一种投影或视角。下图演示了文档存储层次结构是如何作为更大组件中的片段进行组织的。

如果您在该树中引用其他文档(或包含的元素),您将获得相同数据的更具表现力的表示,并且可以使用图轻松导航。图数据模型允许根据需要动态地出现多种自然表示。下面的图版本演示了将这些数据转换为图结构如何让您以不同的组合方式查看树的不同层级和细节。

© . All rights reserved.