在现代软件开发中,数据的存储和访问方式至关重要。不同的数据库模型根据其设计规则和概念,决定了数据如何被存储和访问。开发者通常会根据这些模型来设计适合大型实际项目需求的数据库,例如订单管理系统(ERP)、医疗保健相关系统(EMR)以及科学研究等领域。
关系型数据库模型与电子表格类似,但电子表格存储的是单个单元格或行之间的链接,而关系型数据库则存储数据之间的链接。在线商店的订单是一个典型的关系型数据库模型应用案例。客户有订单,订单有金额,金额有货币类型等等,这些关系可以通过实体关系图(ERD)来可视化地描述每个表如何链接到另一个表。
关系型数据库表之间的关系的好处在于,当客户数据发生变化时,只需要在一个地方更新数据。例如,如果客户获得了一个新的电子邮件地址,只需要更改一行,所有该客户的订单就会自动关联到新的电子邮件地址。关系型数据库非常适合处理具有固定模式的事务性数据。但对于经常变化且具有多种颜色和尺寸组合的产品目录等类型的数据,则更适合使用其他类型的数据库模型。
文档型数据库模型适合处理经常变化的数据模型,如产品目录。这些数据库大多数使用嵌套键/值存储,如JSON,来记录信息。如果熟悉JSON,就知道它是多么灵活。这些宽松的约束也扩展到了文档数据库。可以从几个项目或键开始,并随着时间的推移添加到它们,如果需要,可以进行深度嵌套。
每个键指向一个包含许多值的文档。文档可以是一个实际的文档,如2000字的博客文章,或者是一个数字,或者是一个链接,或者任何东西。与JSON不同,大多数文档数据库将是严格类型的,因此需要指定是在处理整数还是浮点数。
文档数据库的问题在于,不会得到与关系型数据库相同的保证。因此,可能会偶尔看到重复的数据,并且在数据模型变大后,可能会发现难以发展数据模型。通常,公司会使用文档和关系数据库的混合。一些关系数据库甚至提供了对JSON的大力支持,所以不必做出选择。
图形数据库模型将每个对象表示为相互连接。这对于公司之间的金融联系、社交媒体、基因组学等类型的数据非常有用,这些数据非常适合图形结构。最著名的图形数据库之一是neo4j,它在2000年代开发。
要创建一个图形数据库,需要导入数据。假设有A、B和C三个项目。如果A连接到B,B连接到C,C连接到A,可以这样表示数据。
A, B
B, C
C, A
从这个数据集创建的图形将是完全连接的。可以使用图形数据库来询问问题,比如“如何从A到C?”数据库会返回一个答案,比如“从A到B,然后从B到C。”请注意,如果问“如何从C到A?”数据库会简单地返回“从C到A。”
这是一个抽象的例子。要想象一个图形数据库的实际查询,想想各种社交媒体应用的新闻推送。应用程序必须请求与、朋友的联系、朋友喜欢的帖子以及自己帖子上的点赞。
在本文中,探讨了如何使用关系型、文档型和图形数据库模型。研究了每一种是如何工作的,以及在决定哪种选项最适合项目时需要考虑的因素。由于每一种都有其优点和缺点,需要仔细考虑在开始构建之前想要走向哪个方向。
网络数据库模型允许多个记录链接到同一个所有者文件。该模型可以被认为是一个倒置的树,其中分支是成员信息,这些成员的所有者是根。这为设计提供了很多灵活性,因为节点之间有多个链接。鉴于此,会认为数据库中的大多数节点彼此之间有一对多的关系。
网络数据库模型不再广泛使用,它在20世纪70年代被关系模型所取代。