技术开发 频道

NoSQL数据库大盘点 优势劣势面面观

  键值存储

  你可以通过这种数据库将键值对存储到持久化存储中,随后使用键来读取值。那么对于这种初看起来用途非常有限的解决方案来说有哪些好处呢?在根据键来保存/读取值时,系统是非常高效的,因为它没有SQL处理器、索引系统以及分析系统等诸多限制。这种解决方案提供了最高效的性能,代价最低的实现以及可伸缩性。

  优点:

  RDBMS太慢了,SQL游标的负担过于沉重。

  采用RDBMS的解决方案来存储少量数据的代价有些大。

  没必要使用SQL查询、索引、触发器、存储过程、临时表、表单以及视图等等。

  由于其轻量级的设计,键值数据库可以很容易实现可伸缩性以及高性能。

  缺点:

  关系型数据库的限制可以从底层就确保数据的完整性,而键值存储就没有这些限制,数据的完整性是由应用来控制的。在这种情况下,数据的完整性可能会由于应用代码的错误而做一些妥协。

  在RDBMS中,如果模型设计良好,那么数据库的逻辑结构就能完全反映出存储数据的结构,并且与应用的结构有所不同(数据是独立于应用的)。对于键值存储来说,要想取得这种效果是非常困难的事情。

  典型代表:

  Amazon DynamoDB

  Riak

  Redis

  LevelDB

  Scalaris

  MemcacheDB

  Kyoto Cabinet

  文档存储

  文档存储指的是用于存储、搜索与管理面向文档的信息(半结构化数据)的程序,其中心概念就是文档。具体的面向文档数据库的实现是不同的,不过总的来说,他们都会以各种标准化格式对数据(文档)进行封装与加密,主要格式有XML、YAML、JSON、BSON、PDF等等。

  优点:

  足够灵活的查询语言。

  易于水平扩展。

  缺点:

  在很多时候原子性是得不到保障的。

  典型代表:

  MongoDB

  Couchbase

  CouchDB

  RethinkDB

0
相关文章