如何定义NoSQL

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