下一代数据库

我正在学习传统的关系型数据库(使用PostgreSQL ),并做了一些研究,我遇到了一些新的数据库types。 CouchDB , Drizzle和Scalaris等等,那么下一个将要处理的数据库技术将是什么?

我会说下一代数据库 ,而不是下一代SQL。

SQL是查询和操作关系数据库的语言。 SQL是由国际标准决定的。 在修改标准的同时,它似乎始终在关系数据库范式内工作。

这里有一些新的数据存储技术,目前正受到关注:

  • CouchDB是一个非关系数据库。 他们称之为面向文档的数据库。
  • Amazon SimpleDB也是通过Web服务以分布式方式访问的非关系数据库。 亚马逊还拥有一个名为Dynamo的分布式键值存储,为其部分S3服务提供动力。
  • DynomiteKai是由Amazon Dynamo启发的开源解决scheme。
  • BigTable是Google使用的专有数据存储解决scheme,并使用Google文件系统技术实施。 Google的MapReduce框架使用BigTable。
  • Hadoop是一个开源技术,受Google的MapReduce的启发,并且服务于类似的需求,以分配超大规模数据存储的工作。
  • Scalaris是一个分布式事务密钥/值存储。 也不是关系型的,也不使用SQL。 这是德国柏林Zuse研究所的一个研究项目。
  • RDF是存储语义数据的标准,其中数据和元数据是可以互换的。 它有自己的查询语言SPARQL,表面上类似于SQL,但实际上完全不同。
  • Vertica是为分布式(网格)体系结构devise的高度可扩展的面向列的分析数据库。 它声称是关系和SQL兼容的。 它可以通过亚马逊的弹性计算云来使用。
  • Greenplum是一个高规模的数据仓库DBMS,同时实现了MapReduce和SQL。
  • XML根本不是DBMS,它是一种交换格式。 但是一些DBMS产品使用XML格式的数据。
  • ODBMS或对象数据库,用于pipe理复杂的数据。 似乎没有任何主stream的ODBMS产品在主stream,也许是因为缺乏标准化。 标准SQL正在逐渐获得一些面向对象的function(例如可扩展数据types和表)。
  • Drizzle是一个关系数据库,从MySQL中汲取了大量的代码。 它包括各种体系结构更改,旨在pipe理可扩展的“云计算”系统体系结构中的数据。 据推测,它将继续使用标准的SQL与一些MySQL的增强。
  • Cassandra是由Amazon Dynamo的作者之一在Facebook开发的高度可扩展的,最终一致的,分布式的结构化键值存储库,并为Apache项目做出了贡献。
  • Project Voldemort是一个非关系,分布式的键值存储系统。 它在LinkedIn.com上使用
  • 伯克利DB也值得一提。 这不是“下一代”,因为它可以追溯到二十世纪九十年代初。 这是一个stream行的键值存储,很容易embedded到各种应用程序中。 该技术目前由Oracle公司拥有

另请参阅Richard Jones的这篇不错的文章:“ 反RDBMS:分布式键值存储列表 ”。 他更详细地描述了其中的一些技术。

可以肯定的是,关系数据库有缺陷。 人们一直在争论说,自从第一次引入数据模型以来,他们并没有处理所有的数据build模要求。

年复一年,研究人员提出了pipe理数据以满足特殊要求的新方法:要么处理不适合关系模型的数据关系,要么要求高速数据处理要求分布式服务器集合,而不是中央数据库服务器。

即使这些先进的技术能够解决专门devise的问题,但是关系数据库对于大多数业务需求仍然是一个很好的通用解决scheme。 SQL不会消失。


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

我到目前为止在答案中缺lessgraphics数据库 。 对象的graphics或networking在编程中是很常见的,在数据​​库中也是有用的。 它可以有效地处理半结构化和互连的信息。 图表数据库获得了很多兴趣的领域是语义网和生物信息学。 提到了RDF,它实际上是一种表示graphics的语言。 下面是关于图数据库区域发生了什么的一些指针:

  • 图 – 更好的数据库抽象
  • 图表,Freebase的后端
  • Neo4j开源graphics数据库引擎
  • AllegroGraph RDFstore
  • Graphdb生物信息学抽象层
  • Graphdb在Directed Edge推荐引擎后面

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

可能不是最好的地方回答这个,但我想分享这个史蒂夫·严创build的noSQL世界的分类(请在http://de.slideshare.net/northscale/nosqloakland-200911021find它);

  1. 键值caching

    • memcached的
    • repcached
    • 相干性
    • 在networkingnispan
    • 极限规模
    • jbosscaching
    • 速度
    • terracoqa
  2. 键值店

    • 密钥空间
    • 佛罗里达州是
    • 无架构
    • RAMCloud
  3. 最终一致的键值存储

    • 发电机
    • 伏地魔
    • Dynomite
    • 子logging
    • MongoDB的
    • Dovetaildb
  4. 有序键值店

    • 东京暴君
    • lightcloud
    • NMDB
    • luxio
    • memcachedb
    • actord
  5. 数据结构服务器

    • Redis的
  6. 元组店

    • GigaSpaces的
    • 坐标
    • 阿帕奇河
  7. 对象数据库

    • ZopeDB
    • db4o的
    • 浅滩
  8. 文件存储

    • CouchDB的
    • 蒙戈
    • 兔崽子
    • XML数据库
    • ThruDB
    • CloudKit
    • Perservere
    • Riak Basho
    • Scalaris
  9. 广阔的柱状商店

    • BigTable的
    • HBase的
    • 卡桑德拉
    • Hypertable的
    • KAI
    • OpenNep

想了解下一代数据库领域正在进行哪些学术研究,请看下面的内容: http : //www.thethirdmanifesto.com/

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

http://en.wikipedia.org/wiki/Relational_model (在2010年3月28日的“SQL和关系模型”一节中提到

不要迂腐,但我想指出,至lessCouchDB不是基于SQL的。 而且我希望下一代的SQL能够使SQL变得更加简单和不直观。

有像MarkLogic和Berkeley XMLDB这样的XML专用数据库。 他们可以索引xml文档,可以用XQuery查询它们。 我期望JSON数据库,也许他们已经存在。 做了一些谷歌search,但无法find一个。

从1970年代初期开始,SQL就已经存在了,所以我认为它不会很快消失。

也许'new(-ish)sql'将oql(见http://en.wikipedia.org/wiki/ODBMS

Jim Starkey也听说过NimbusDB

Jim Starkey是“创造”Interbase的人

谁工作在火神(火鸟叉)

以及谁在MySQL的猎鹰开始