下一代数据库
我正在学习传统的关系型数据库(使用PostgreSQL ),并做了一些研究,我遇到了一些新的数据库types。 CouchDB , Drizzle和Scalaris等等,那么下一个将要处理的数据库技术将是什么?
我会说下一代数据库 ,而不是下一代SQL。
SQL是查询和操作关系数据库的语言。 SQL是由国际标准决定的。 在修改标准的同时,它似乎始终在关系数据库范式内工作。
这里有一些新的数据存储技术,目前正受到关注:
- CouchDB是一个非关系数据库。 他们称之为面向文档的数据库。
- Amazon SimpleDB也是通过Web服务以分布式方式访问的非关系数据库。 亚马逊还拥有一个名为Dynamo的分布式键值存储,为其部分S3服务提供动力。
- Dynomite和Kai是由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它);
-
键值caching
- memcached的
- repcached
- 相干性
- 在networkingnispan
- 极限规模
- jbosscaching
- 速度
- terracoqa
-
键值店
- 密钥空间
- 佛罗里达州是
- 无架构
- RAMCloud
-
最终一致的键值存储
- 发电机
- 伏地魔
- Dynomite
- 子logging
- MongoDB的
- Dovetaildb
-
有序键值店
- 东京暴君
- lightcloud
- NMDB
- luxio
- memcachedb
- actord
-
数据结构服务器
- Redis的
-
元组店
- GigaSpaces的
- 坐标
- 阿帕奇河
-
对象数据库
- ZopeDB
- db4o的
- 浅滩
-
文件存储
- CouchDB的
- 蒙戈
- 兔崽子
- XML数据库
- ThruDB
- CloudKit
- Perservere
- Riak Basho
- Scalaris
-
广阔的柱状商店
- 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的猎鹰开始