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
带有fizz
和buzz
字段的表以及与第二个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属性和事务.
仅仅为了一个视觉插图,这帮助我了解了不同的sql解决方案适合数据库世界的位置以及每个解决方案如何适合目的.
归档时间: |
|
查看次数: |
6107 次 |
最近记录: |