为什么rdbms可以存储非结构化数据?为什么nosql数据库可以?

时间:2013-09-10 07:42:50

标签: mongodb hadoop rdbms nosql

我已经读过rdbms和nosql数据库之间的差异之一是存储非结构化数据,我知道每个nosql数据库都有自己的架构和算法,但我想知道为什么rdbms不能存储非结构化数据?

为什么nosql数据库可以做到这一点,如果你向我展示一个简单的例子,我将非常感谢nosql数据库如何做到这一点,以及rdbms无法存储非结构化数据的原因。

3 个答案:

答案 0 :(得分:1)

关系数据库基于Edgar F. Codd's relational data model,它假设严格的结构化数据。整个SQL语言是围绕这个模型构建的,实现它的数据库针对这种方式进行了优化。

但是在过去几年中,有人尝试向SQL添加允许使用非结构化数据的功能,例如SQL/XML扩展,它允许在SQL表的字段中存储XML文档并查询其文档 - 树木透明。

另一方面,像MongoDB或CouchDB这样的面向文档的数据库从一开始就设计用于非结构化数据,并且它们的查询语言是围绕这个概念设计的,因此在处理非结构化数据时,它们通常要快得多,而且更多使用方便。

答案 1 :(得分:0)

我完全错误地阅读了这个问题,并且首先想到了完全错误的问题(“结构化”的多个语言环境定义),所以忽略我的评论,但MongoDB确实存储了结构化数据。维基百科的定义(我可能会说互联网本身似乎有所不同)是(http://en.wikipedia.org/wiki/Unstructured_data):

  

非结构化数据(或非结构化信息)是指没有预定义数据模型或未以预定义方式组织的信息。

但是对于MongoDB来说这是不正确的,因为它确实有一个:

{
    _id:{}
}

由于始终需要_id,因此MongoDB用户最近更准确地说MongoDB具有“灵活”架构而不是无架构,这就是大多数人说它存储非结构化数据的原因。 / p>

所以,是的,它确实存储了非结构化数据,但并不完全......

答案 2 :(得分:0)

简单地说,NOSQL数据存储是分层的,可变长度,高度分布的基于文件的系统,具有最终的一致性。模式嵌入在数据中(或在代码中,但NOSQL不是无模式的),即使在相同的结构中,列也可以从一个实例到下一个实例不同,并且列的大小不固定。