从 NoSQL 到图数据库的迁移
尽管命名不恰当,但 NoSQL(“不仅仅是 SQL”)领域汇集了许多有趣的解决方案,它们提供了不同的数据模型和数据库系统,每个系统都比传统的 SQL 解决方案更适合某些用例和数据形状。
随着 NoSQL 运动的兴起,“一刀切”的大型关系型系统的主张被有意识地选择合适的工具来完成工作所取代。
大多数 NoSQL 系统都是**面向聚合**的,根据特定标准和数据库类型(例如文档存储、键值对等)对数据进行分组。此模型仅提供简单、有限的操作,并且只形成对数据的一种专用视图。一次专注于一个聚合允许用户沿着聚合维度(例如,文档数据库中的**文档**)轻松地将许多数据块分散到机器网络中,但这意味着其他投影和视角必须通过处理或复制数据来计算。
大多数 NoSQL 数据库存储一组断开的聚合。这使得难以将其用于连接数据和图。一种众所周知的为这些存储添加关系的策略是在属于另一个聚合的字段中嵌入聚合的标识符——有效地引入了外键。但是,这需要在应用程序级别连接聚合,这很快就会变得非常昂贵。
其他 NoSQL 数据库缺乏关系。另一方面,图数据库处理细粒度的信息网络,提供对数据的**任何视角**以适应您的用例。关系型系统中众所周知且值得信赖的事务保证也保护 Neo4j 中图数据的更新,符合 ACID 标准。
让我们将图数据模型与其他 NoSQL 模型进行比较。
将 NoSQL 知识转换为图
随着 NoSQL 运动的兴起,各种规模的企业都拥有各种现代选项,可以从中构建与其用例相关的解决方案。
-
计算平均收入?询问**关系型数据库**。
-
构建购物车?使用**键值存储**。
-
存储结构化产品信息?存储为**文档**。
-
描述用户如何从 A 点到 B 点?遵循**图**。
下图显示了每种数据库类型在测量深度和大小的光谱上的堆叠方式。虽然键值存储可以处理海量大小,但它们的设计是为了提供数据的高级视图(深度较低)。即使在比其他类型的数据库更深的深度下,图数据库也保持最小的规模。其他类型的数据库介于这两个范围之间。

键值与图:数据模型差异
**键值**模型非常适合查找大量简单或复杂的键值,并且性能很高。下图显示了典型的键值存储的结构。

但是,当值本身相互连接时,您就拥有了一个图。Neo4j 允许您在所有连接的值之间快速遍历并找到关系中的见解。下面的图版本显示了每个键如何与单个值相关联,以及不同的值如何相互关联(就像节点通过关系相互连接)。
