下一代数据库

55

我正在学习传统的关系型数据库(使用PostgreSQL),在研究中,我发现了一些新类型的数据库。其中有CouchDB, DrizzleScalaris等,下一个处理数据库技术会是什么呢?


有人可以更新一下这个问题,将“SQL”改为“数据库”吗? - Rick
尽管randin错误地使用了SQL术语,但我认为更改将违背同行编辑的精神。 - Bill Karwin
太晚了..抱歉,比尔。如果你很坚定,可以回滚我的编辑。在你发表评论之前,我已经进行了修改。我认为我对它的重新表述既有助于教育OP,也更有益于社区。 - SquareCog
1
好的,正确无误是很重要的。我的一位技术作家朋友曾说过:“除非你问对了问题,否则你不可能得到正确的答案。” - Bill Karwin
1
啊,抱歉之前的问题有些误导人,当时我对SQL和数据库一无所知。 - Randin
8个回答

105

我认为应该说下一代数据库,而不是下一代SQL。

SQL是用于查询和操作关系型数据库的一种语言。 SQL由国际标准规定。 虽然标准在修订,但它似乎总是在关系数据库范例内工作。

以下是一些备受关注的新数据存储技术(约为2008年我撰写此答案时):

  • CouchDB是一种非关系型数据库。他们称之为文档导向数据库。
  • Amazon SimpleDB也是一种分布式访问的非关系型数据库,通过Web服务进行访问。 亚马逊还拥有一个名为Dynamo的分布式键值存储,为其S3服务提供支持。
  • DynomiteKai是受亚马逊Dynamo启发的开源解决方案。
  • BigTable是Google使用的专有数据存储解决方案,使用其Google文件系统技术实现。 Google的MapReduce框架使用BigTable。
  • Hadoop是一种受Google MapReduce启发的开源技术,提供类似的功能,用于分配非常大规模数据存储的工作。
  • Scalaris是一种分布式事务键值存储。 它也不是关系型的,也不使用SQL。 这是来自德国柏林楚泽研究所的研究项目。
  • RDF 是一种用于存储语义数据的标准,其中数据和元数据可以互换使用。它有自己的查询语言SPARQL,外观上类似于SQL,但实际上完全不同。
  • Vertica是一种高度可扩展的列式分析数据库,专为分布式(网格)架构设计。它声称是关系型且符合SQL标准。可以通过Amazon的Elastic Compute Cloud使用。
  • Greenplum是一种高规模的数据仓库DBMS,实现了MapReduce和SQL。
  • XML根本不是DBMS,而是一种交换格式。但是一些DBMS产品可以处理XML格式的数据。
  • ODBMS或对象数据库,用于管理复杂数据。主流市场上似乎没有任何主导性的ODBMS产品,可能是因为缺乏标准化。标准SQL正在逐渐获取一些面向对象的功能(例如可扩展的数据类型和表)。
  • Drizzle是一种关系型数据库,大量代码来自MySQL。它包括各种架构上的变化,旨在管理可扩展的“云计算”系统架构中的数据。假定它将继续使用标准SQL和一些MySQL增强功能。
  • Cassandra是一种高度可扩展、最终一致、分布式的结构化键值存储,由Facebook的一个Amazon Dynamo作者开发,并贡献给了Apache项目。
  • Project Voldemort 是一种分布式的非关系型键-值存储系统,被LinkedIn.com使用。
  • Berkeley DB 也值得一提。 它不是“下一代”技术,因为它可以追溯到1990年代早期。它是一种受欢迎的键-值存储,易于嵌入各种应用程序中。该技术现在由Oracle Corp.拥有。
  • 还可以参考Richard Jones的这篇文章:“反关系型数据库:分布式键-值存储列表”,他详细描述了其中一些技术。

    关系型数据库肯定有其弱点。自引入以来,人们一直在争论它们不能处理所有数据建模需求。

    每年都有研究人员提出新的管理数据的方法,以满足特殊要求:要么是处理关系模型无法适应的数据关系,要么是需要对分布式服务器集合进行数据处理以满足高规模数据量或速度的要求,而不是在中央数据库服务器上进行。

    尽管这些先进技术可以解决它们设计的专业问题,但关系型数据库仍然是大多数业务需求的一个好的通用解决方案。 SQL不会消失。


    我在php|Architect杂志上写了一篇有关非关系型数据库创新以及关系型与非关系型数据库数据建模的文章。http://www.phparch.com/magazine/2010-2/september/


    1
    嘿,比尔,我们似乎经常回答相同的问题...你在这里的回答已经很详尽了,我觉得写自己的回答没有太大用处--你想加一些关于Vertica等和Greenplum及其相关的信息,使它更完整吗? - SquareCog
    感谢Bill提供详细的答案,我暂时会继续使用PostgreSQL。 - Randin
    2
    PostgreSQL是RDBMS的一个不错选择。祝你玩得愉快! - Bill Karwin

    25
    到目前为止,回答中还缺少图形数据库。在编程中,对象的图形或网络也很常见,在数据库中也很有用。它可以以高效的方式处理半结构化和相互关联的信息。在图形数据库引起了很多兴趣的领域中是语义Web和生物信息学。提到了RDF,它实际上是一种表示图形的语言。以下是关于图形数据库领域的最新动态:

    我是Neo4j项目的一部分,它是用Java编写的,但也有Python、Ruby和Scala的绑定。有些人使用它与Clojure或Groovy / Grails一起使用。还有一个GUI工具正在发展中。


    那么 http://www.db4o.com/ 怎么样?它是一个面向对象图管理的对象数据库。 - Norman H
    面向对象数据库(OODB)与图形数据库不同。简单来说,图形数据库不会直接将数据绑定到对象模型上。在图形数据库中,关系是一等公民,而在OODB中,您必须自己实现它。在图形数据库中,您可以使用不同的对象类型表示相同数据的不同视图。图形数据库通常支持查找最短路径等功能。 - nawroth

    10

    可能不是回答这个问题的最佳地方,但我想分享一下由Steve Yen创建的noSQL世界分类法(请在http://de.slideshare.net/northscale/nosqloakland-200911021找到它)。

    1. 键值缓存

      • memcached
      • repcached
      • coherence
      • 
infinispan
      • eXtreme
scale
      • 
jboss
cache
      • velocity
      • terracoqa

    2. 键值存储

      • keyspace
      • 
flare
      • schema-free
      • RAMCloud

    3. 最终一致的键值存储

      • dynamo
      • 
voldemort
      • 
Dynomite
      • 
SubRecord
      • 
MongoDb
      • 
Dovetaildb
    4. 有序键值存储

      • tokyo
tyrant
      • lightcloud
      • 
NMDB
      • luxio
      • 
memcachedb
      • 
actord

    5. 数据结构服务器

      • redis

    6. 元组存储

      • gigaspaces
      • 
coord
      • 
apache
river
  • 对象数据库

    • ZopeDB
    • db4o
    • Shoal
  • 文档存储

    • CouchDB
    • Mongo
    • Jackrabbit
    • XML数据库
    • ThruDB
    • CloudKit
    • Perservere
    • Riak Basho
    • Scalaris
  • 宽列存储

    • BigTable
    • Hbase
    • Cassandra
    • Hypertable
    • KAI
    • OpenNep

  • 2

    想要了解下一代数据库领域的学术研究情况,请查看此网站:http://www.thethirdmanifesto.com/

    关于SQL语言作为关系模型的适当实现,我引用维基百科的话说:“SQL最初被推广为关系数据库的标准语言,但在几个方面偏离了关系模型,目前的ISO SQL标准没有提到关系模型或使用关系术语或概念,但是如果不使用某些SQL特性,则可以使用SQL创建符合关系模型的数据库。”

    http://en.wikipedia.org/wiki/Relational_model (于2010年3月28日引用于“SQL和关系模型”章节)


    1

    不是要挑剔,但我想指出至少CouchDB不是基于SQL的。而且我希望下一代SQL能够使SQL变得更加美观和直观。


    我的一个朋友说过这样一句话:“它应该难以阅读!毕竟,它之所以被称为代码!” :-) - Bill Karwin
    1
    我的大脑已经崩溃了,我喜欢SQL,太多的接触让你爱上它 :) - Robert Gould

    1

    有些专门用于XML的数据库,比如MarkLogic和Berkeley XMLDB。它们可以对XML文档进行索引,并使用XQuery查询。我期待着JSON数据库,也许它们已经存在了。查了一些谷歌,但没找到。


    有一些提供数据的JSON接口。Terrastore是其中一个例子。 - quikchange

    0

    SQL自20世纪70年代初就存在了,所以我认为它不会很快消失。

    也许“新的(相对较新)SQL”将会是OQL(参见http://en.wikipedia.org/wiki/ODBMS)。


    0

    我也听说过Jim Starkey的NimbusDB。

    Jim Starkey是“创造”Interbase的人

    他曾经在Vulcan(一个Firebird分支)上工作

    并且曾经参与MySQL的Falcon项目。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接