首页 理论教育 面向文档存储技术

面向文档存储技术

时间:2023-06-28 理论教育 版权反馈
【摘要】:在传统关系型数据库中,数据被分割成离散的数据段,而在面向文档数据库中,文档被看作是数据处理的基本单位。很显然,由于没有固定模式,面向文档存储显得更加灵活。面向文档数据库和关系数据库的另一个重要区别就是面向文档数据库不支持连接。

面向文档存储技术

面向文档存储是IBM最早提出的,是一种专门用来存储管理文档的数据库模型。面向文档数据库是由一系列自包含的文档组成的。这意味着相关文档的所有数据都存储在该文档中,而不是关系数据库的关系表中。事实上,面向文档的数据库中根本不存在表、行、列或关系。这意味着它们是与模式无关的。不需要在实际使用数据库之前定义严格的模式。与传统的关系型数据库和20世纪50年代的文件系统管理数据的方式相比,都有很大的区别。下面就具体介绍它们的区别。

在古老的文件管理系统中,数据不具备共享性,每个文档只对应一个应用程序,也就是即使是多个不同应用程序都需要相同的数据,也必须各自建立属于自己的文件。而面向文档数据库虽然是以文档为基本单位,但是仍然属于数据库范畴,因此它支持数据的共享。这就大大减少了系统内的数据冗余,节省了存储空间,也便于数据的管理和维护。

在传统关系型数据库中,数据被分割成离散的数据段,而在面向文档数据库中,文档被看作是数据处理的基本单位。所以,文档可以很长也可以很短,复杂或是简单都可以,不必受到像在关系型数据库中结构的约束。但是,这两者之间并不是相互排斥的,它们之间可以相互交换数据,从而实现相互补充和扩展。

例如,如果某个文档需要添加一个新字段,那么在文档中仅需包含该字段即可,而不需要对数据库中的结构做出任何改变。所以,这样的操作丝毫不会影响到数据库中其他任何文档。因此,文档不必为没有值的字段存储空数据值。

假如在关系数据库中,需要4张表来储存数据:一个“Person”表、一个“Company”表、一个“Contact Details”表和一个用于储存名片本身的表。这些表都有严格定义的列和键,并且使用一系列的连接(Join)组装数据。虽然这样做的优势是每段数据都有一个唯一真实的版本,但这为以后的修改带来不便。此外,也不能修改其中的记录以用于不同的情况。例如,一个人可能有手机号码,也有可能没有。当某个人没有手机号码时,那么在名片上不应该显示“手机:没有”,而是忽略任何关于手机的细节。这就是面向文档存储和传统关系型数据库在处理数据上的不同。很显然,由于没有固定模式,面向文档存储显得更加灵活。(www.xing528.com)

在面向文档的数据库中,每个名片都存储在各自的文档中,并且每个文档都可以定义它需要使用的字段。因此,对于没有手机号码的人而言,就不需要给这个属性定义具体值,而对于有手机号码的人,则根据他们的意愿定义该值。

面向文档数据库和关系数据库的另一个重要区别就是面向文档数据库不支持连接。因此,如在典型工具CouchDB中就没有主键和外键,没有基于连接的键。这并不意味着不能从CouchDB数据库获取一组关系数据。CouchDB中的视图允许用户为未在数据库中定义的文档创建一种任意关系。这意味着用户能够获得典型的SQL联合查询的所有好处,但又不需要在数据库层预定义它们的关系。

一定要注意,虽然面向文档数据库的操作方式在处理大数据方面优于关系数据库,但这并不意味着面向文档数据库就可以完全替代关系数据库,而是为更适合这种方式的项目提供一种更佳的选择,如wikis、博客和文档管理系统。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈