NoSQL 是非关系型数据存储的广义定义。它打破了长久以来关系型数据库与 ACID 理论大一统的局面。NoSQL 数据存储不需要固定的表结构,通常也不存在连接 操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语在 2009 年初得到了广泛认同。
当今的应用体系结构需要数据存储在横向伸缩性 上能够满足需求。而 NoSQL 存储就是为了实现这个需求。Google 的 BigTable 与 Amazon 的 Dynamo 是非常成功的商业 NoSQL 实现。一些开源的 NoSQL 体系,如Facebook 的 Cassandra , Apache 的 HBase ,也得到了广泛认同。
如果您刚接触 NoSQL,那有必要学习一些背景知识。下列资料是国外一前沿技术分析师 认为非常有价值的 NoSQL 相关必读资料:
- Amazon Dynamo 论文 。几乎所有懂 NoSQL 的人都阅读过它。
- Google 的 Bigtable 论文 。 也许您已经耳熟能详。
- Werner Vogels 的 “Eventually Consistent” (发布于 ACM Queue )。如果您对“最终一致性 ”不是非常清晰,请阅读这篇文章。
- Brewer 的 CAP 理论 (可伸缩性的基础)在这里 可以找到非常好的诠释。也可以看看 2000 7 月 PODC 上 Brewer的原始幻灯片 。
- 在 2009 年 6 月在 SFO 的 NoSQL 见面会的幻灯片 。这些资料可以用经典的、关键的、将影响巨大的、值得纪念的来形容。
- SQL Databases Don't Scale 是一篇简短、基础、直切问题的文章。除非您是一位在伸缩性问题 上身经百战的数据库管理员,否则,这篇文章讲述的内容对于您可能是非常关键的。
- Jonathan Ellis 的文章 NoSQL Ecosystem 以表格的方式对当今主流的分布式数据库 做了比较。类似的比较还有 Quick Reference to Alternative data storages 。Ellis 的文章除了表格对比外对于想了解 NoSQL 生态的人来说是非常值得一读的,该文章内涵丰富,短小精悍;而 Quick Reference to Alternative data storages 主要是表格,这些表格对比的内容又比 Ellis 的完整。
相关国外资源
http://nosql-databases.org —— 该站点的标语是:“非关系型世界的终结向导!”,该站点非常确信自己是:“在互联网上拥有 NoSQL 相关链接最多的网站。”总之,该网站值得关注。
另外,作为 NoSQL 极客(geeks),请 follow @nosqlupdate 。另外,请 follow @al3xandru (MyNoSQL blog 与 NoSQL Week in Review 的创建者)。NoSQL Week in Review 比较新,希望能保持正常更新,因为它确实很棒!
当然,您还可以看看 Ricky Ho 最近的博文,他总结了一些分布式数据存储技术关键点。他的博文中有两篇非常值得一看的文章:Query Processing for NoSQL Databases ,还有 NoSQL Design Patterns 。
相关国内资源
- Tim[后端技术] :分布式 Key Value Store 漫谈
- CSDN 新闻频道 :豆瓣开源 Key Value 存储系统 BeansDB
- robbin的自言自语 :NoSQL数据库探讨之一
- J道 BanQ :CAP 原理和 BASE 思想
来源:NoSQL Required Reading ,Wikipedia - NoSQL
NoSQL = Not Only SQL != No SQL
根据CAP理论:
Consistency(一致性),数据一致更新,所有数据变动都是同步的
Availability(可用性),好的响应性能
Partition tolerance(分区容错性) 可靠性
CAP原理告诉我们,这三个因素最多只能满足两个,不可能三者兼顾。对于分布式系统来说,分区容错是基本要求,所以必然要放弃一致性。对于大型网站来说,分区容错和可用性的要求更高,所以一般都会选择适当放弃一致性。对应CAP理论,NoSQL追求的是AP,而传统数据库追求的是CA,这也可以解释为什么传统数据库的扩展能力有限的原因。
NoSQL和关系型数据库有各自的缺点,因此NoSQL的产品和传统的关系型数据库应该是互补的关系。