英文原文:NoSQL Definition
本文的作者是著名的技术作家、敏捷软件开发宣言的编写人 Martin Fowler,本文是他在编写一本关于 NoSQL 的新书《NoSQL Distilled》时附带写出的一篇博客。
当我们开始着手写《NoSQL Distilled》的时候,我们遇到了一个棘手的问题——要写什么?究竟什么是 NoSQL 数据库?对这个概念我们没有发现一个很权威的定义,没有任何商标注册,没有标准化组织,甚至没有一个宣言。
NoSQL 这个术语最初出现在 2009 年 6 月 11 日在旧金山由 Johan Oskarsson 组织的一个非正式的会议上。与会人员来自 Voldemort, Cassandra, Dynomite, HBase, Hypertable, CouchDB, VPork, 以及 MongoDB 的公司。这个词迅速的被人们注意到,有人认为只有出席了这次会议的几个数据库公司的产品才是 NoSQL。
事实上,就是对 NoSQL 这个名字本身的理解也是有分歧的:很多 NoSQL 的倡导者认为它不仅仅指的是”No” to SQL,应该把它理解成 Not Only SQL 才对。对于此,我认为,应该从目前的数据库生态环境中分离出一个独立的数据库类型,这样对 NoSQL 的未来更有好处。当我们说“x 是一个 NoSQL 数据库”时,我认为把 NoSQL 解释成“Not Only”是愚蠢的,因为这会让这个术语变得没有价值。(因为这样一来你实际上可以认为 SQL Server 也是一个 NoSQL 数据库)。我们应该把 NoSQL 的“not only”做另外一种理解——尽管这个时候我更愿意使用 PolyglotPersistence 这个词。
虽然有这么多的讨论,定义如何才是一个 NoSQL 数据库仍然不那么容易。难道所有不使用 SQL 的数据库都有资格叫这个名字吗?那如何看待那些更老的数据库如 IMS 或 MUMPS 呢?如何看待那些没有 SQL 的关系型数据库系统(例如早期的 Ingres)?如果有人试图在这最初的八种数据库上外挂一个 SQL 接口呢?
所以,对于我们这本书来说,我们采取的观点是,NoSQL 是目前的数据库家族的外来者。它们有些通用的特征,但没有一个是被明确定义的。
- 不使用关系数据库模型(或 SQL 语言)
- 开源
- 针对大型集群而设计
- 基于 21 世纪互联网特征的需求
- 没有 schema,可以在任何时候向一条记录添加新字段
虽然在软件产业里我们已经习惯了这种模糊的边界定义,但我承认当看到又多了这样一个定义后,心里还是有些不爽。但重要的是,在我们以后数十年的开发工作中,这些数据库提供了我们重要的补充。在未来普遍使用的过程中,这些不清晰的定义顶多就像一个蚊子的叮咬。
评论
暂无评论