最近看了一些英文文档,其中有一篇把分布式系统和第一代NoSQL的大背景介绍得很清楚,虽然文档本身是10年写的,而且没有介绍某种特定NoSQL数据库的使用,但很多思想性的东西到今天看都非常有价值,于是决定翻译一下,翻译中的各种bug请各位指出。原文可以在 http://www.christof-strauch.de/nosqldbs.pdf 找到。
另外由于工作量浩大(原始文档有140多页),进度会比较慢,估计十天半月能更新一章吧。
目录
1 介绍
1.1 介绍和概览
1.2 未包含的主题
2 NoSQL潮流
2.1 动机和主要驱动力
2.2 批评
2.3 NoSQL数据库的分类和比较
3 基本概念,技术和模式
3.1 一致性
3.2 分区
3.3 存储分层
3.4 查询模型
3.5 使用MapReduce的分布式数据处理
4 键/值存储
4.1 Amazon Dynamo
4.2 Project Voldemort
4.3 其他键/值存储
5 文档数据库
5.1 Apache CouchDB
5.2 MongoDB
6 面向列的数据库
6.1 Google Bigtable
6.2 Bigtable衍生品
6.3 Cassandra
7 总结
1 介绍
1.1 介绍和概览
如今,关系型数据库管理系统(RDBMSs)是web和商业应用中存储结构化数据的主要技术。从1970年Codds的论文“一种面相大共享数据集的关系型数据模型”[Cod70]开始,这类基于关系演算和使用SQL[CB74]进行全面的ad-hoc查询的数据存储方式,已经被广泛应用,并通常被视为多用户一致地读写数据存储的唯一方式。尽管近年有不同的技术出现如面向对象数据库和XML存储,但这些技术均为达到RDBMSs相同的适用性和市场份额。当然,这些变化要么已经被RDBMSs吸收(如允许储存XML并用于文本索引),或成为“利基产品”(如OLAP或流处理)。
在过去的几年中,关于数据存储的“一刀切”思考被学术界和网络公司双方质疑,这已经导致了大量的各种替代数据库的出现。这类新的数据存储通常归入NoSQL下,“在web开发者中用来描述增加使用非关系型数据库”([Oba09a])。
本文旨在对这一运动的动机和理由进行系统概述(第2章),常用的概念、技术和模式(第3章),NoSQL数据库的几种类型(键/值存储、文档数据库、面向列的数据库)和个别产品(第4-6章)。
1.2 未包含的主题
本文不讨论将现有数据仓库中已有且不包含在NoSQL运动中的部分,如对象数据库,用于特殊用途的纯XML数据库和数据库管理系统(如作为分析或流处理)。图数据库也不包含在本文中,但一些资源的提供在附录A。介绍某种单独的NoSQL数据存储也超出本文范围,一般来说这会是一个对NoSQL数据运动和方法二者的误解,因为不是“一刀切”的解决方案。在所有可用的NoSQL数据库之间的深度比较也超出了本文的范围。