关系与列式和文档数据库 - 它们不是同一个吗?

IAm*_*aja 8 document-oriented-db column-oriented mongodb cassandra nosql

我知道面向文档的NoSQL DB是KV模型的"扩展",因为它们允许您查询的不仅仅是单个查找键.但是,一旦某个东西成为"文档",我觉得它已经有了一个关系模型:

"myJson": {
    "fizz": 4,
    "buzz": "true",
    "widget" : {
        ...etc.
    }
}
Run Code Online (Sandbox Code Playgroud)

对我来说,我没有看到这个JSON,json_objects带有fizzbuzz字段的表以及与第二个widgets表的外键关系之间的区别.

而"柱状"DB就像Cassandra听起来就像是直接的关系/表DB.

所以我问:面向文档和列的DB有什么不同,所以区别于它们(与RDBMS)有什么区别?在某些情况下,它们最适合解决哪些问题使它们优于关系数据库?提前致谢!

Lyu*_*rov 17

首先,我想说你说NoSql与关系数据库有所不同,因此很难做出比较.话虽如此,两者之间有许多可以比较的区别.

缩放
虽然可以分片MySQL数据库有问题,与分片和执行ACID属性时,关系数据库管理系统是在多台机器将是非常具有挑战性的,像卡桑德拉的NoSql解决方案,是著名的不与某些情况下处理问题的增长能力在400个节点集群没有问题.不仅可以轻松扩展Cassandra数据库,而且性能也不会受到影响.

Schema(less)模型.
开发NoSQL数据库系统来管理不遵循固定模式的大量数据.这意味着,例如,您希望向Cassandra中的现有列族添加新列,您无需返回并修改列族,因此不需要:

ALTER TABLE table_name ALTER COLUMN column_name datatype;
Run Code Online (Sandbox Code Playgroud)

我们可以随意添加新列,最终可能会使用以下"表格":

 key         | follower1  | follower2   | follower2          
-------------+------------+-------------+-----------
 lyubent     | joeb       | chuckn      | gordonf     
 chuckn      | joeb       | gordonf                   
 gordonf     | chuckn                                 
 joeb        | chuckn     | lyubent     | joeb        
Run Code Online (Sandbox Code Playgroud)

这使得数据模型可以灵活且易于扩展,但这样做可以减少数据的结构化.

速度
NoSql数据库针对高写入速度进行了优化,而RDBM则旨在实现高读取速度.但即使考虑到这一点,NoSql解决方案在读取时仍然倾向于优于RDBM系统.这是因为NoSql数据库没有实现许多减慢关系模型中读/写/更新操作的功能,例如ACID属性和事务.

什么时候应该使用

  • 您的应用程序/网站需要快速增长,但您希望从小规模开始.
  • 你更关心的是写数据而不是阅读它.(发布了很多推文,但并非所有推文都被阅读)
  • 数据100%更新对您的系统的可用性更为重要.(所以,如果你是一家银行,你不需要NoSql,但如果你是一个需要100%正常运行时间的网站,它可能是一个不错的选择)
  • 如果正在编写的数据需要100%的时间成功,但最终的一致性不是问题.

仅仅为了一个视觉插图,这帮助我了解了不同的sql解决方案适合数据库世界的位置以及每个解决方案如何适合目的.

数据库三元组 - 可用性,一致性和分区容差

  • @ user1944408批评总是受到赞赏,但是你说这个图是完全错误的,因为HBase和MySql在图上的位置.你忽视了其余的事情.该图像已被用于多个[答案](http://stackoverflow.com/questions/2794736/best-data-store-for-billions-of-rows#answer-2794983),请阅读通过[本文](http://blog.nahurst.com/visual-guide-to-nosql-systems)证明为什么MySql被放置为CA,或者如果你不想......他们在那里进行比较,它是NoSql数据库的指南,而不是RDBMs. (7认同)