4.2 NoSQL数据库
NoSQL数据库是一种非关系型数据库。跟使用SQL的关系型数据库相比,它具有以下一些特点:
- 无模式(schema)
- 易于水平扩展(horizontal scaling)
- 需要为查询而设计文档结构
- 对事务(transaction)的支持有限,或需要用户自己实现
常见的NoSQL数据库有两类:面向文档的(document-oriented)数据库和“键-值”(key-value)数据库。前者往往以JSON文档作为数据存储,如MongoDB;后者就像一个Hash表,把数据按“键-值”对存储,而且往往整个数据库都位于内存中以实现较快的存取速度(因而常作为缓存使用),如Redis,Memcached。
需要指出的是,现在已经有不少SQL数据库支持JSON文档的存储和查询,如MySQL(从版本5.7开始),PostgreSQL(从版本9.4开始)和Oracle,这使得SQL数据库和NoSQL数据库的边界变得模糊,对用户来说则意味着更多的选择。
流行的开源NoSQL数据库
- MongoDB是一种具有高扩展性(scalability)的文档数据库,常用于大数据1存储。
- Redis是一种多功能的“键-值”数据库:不但可以用作缓存,还可以用作消息代理(message broker)实现“订阅/发布”模式。
- Memcached是一种高性能的、专用于缓存的“键-值”数据库。
更多关于NoSQL数据库的介绍和产品可参考:https://en.wikipedia.org/wiki/NoSQL
1. 大数据专指海量数据,几个甚至几十个GB的数据其实算不上“大”,一般的SQL数据库即可处理。 ↩