我正在学习传统的关系数据库(使用PostgreSQL)并进行一些研究,我遇到了一些新型数据库。CouchDB、Drizzle和Scalaris等等,下一个需要处理的数据库技术是什么?
8 回答
我会说下一代数据库,而不是下一代 SQL。
SQL 是一种用于查询和操作关系数据库的语言。SQL 由国际标准规定。虽然标准被修订,但它似乎总是在关系数据库范式中工作。
以下是目前受到关注的一些新的数据存储技术:
- CouchDB是一个非关系型数据库。他们称之为面向文档的数据库。
- Amazon SimpleDB也是一种通过 Web 服务以分布式方式访问的非关系型数据库。亚马逊还有一个名为Dynamo的分布式键值存储,它支持它的一些 S3 服务。
- Dynomite和Kai是受 Amazon Dynamo 启发的开源解决方案。
- BigTable是谷歌使用的专有数据存储解决方案,并使用他们的谷歌文件系统技术实现。Google 的 MapReduce 框架使用 BigTable。
- Hadoop是一种受 Google 的 MapReduce 启发的开源技术,它服务于类似的需求,用于分发超大规模数据存储的工作。
- Scalaris是一个分布式事务键/值存储。也不是关系型的,也不使用 SQL。这是德国柏林 Zuse 研究所的一个研究项目。
- RDF是一种存储语义数据的标准,其中数据和元数据是可互换的。它有自己的查询语言 SPARQL,表面上和 SQL 很像,但实际上完全不同。
- Vertica是一个高度可扩展的面向列的分析数据库,专为分布式(网格)架构而设计。它确实声称是关系型和 SQL 兼容的。它可以通过亚马逊的弹性计算云使用。
- Greenplum是一个大规模的数据仓库 DBMS,它同时实现了 MapReduce 和 SQL。
- XML根本不是 DBMS,它是一种交换格式。但是一些 DBMS 产品使用 XML 格式的数据。
- ODBMS或对象数据库用于管理复杂数据。主流中似乎没有任何占主导地位的 ODBMS 产品,这可能是因为缺乏标准化。标准 SQL 正在逐渐获得一些 OO 特性(例如可扩展的数据类型和表)。
- Drizzle是一个关系型数据库,它的很多代码都来自 MySQL。它包括旨在管理可扩展“云计算”系统架构中的数据的各种架构更改。据推测,它将继续使用标准 SQL 和一些 MySQL 增强功能。
- Cassandra是一个高度可扩展、最终一致、分布式、结构化的键值存储,由 Amazon Dynamo 的作者之一在 Facebook 开发,并为 Apache 项目做出了贡献。
- Project Voldemort是一个非关系的分布式键值存储系统。它用于 LinkedIn.com
- Berkeley DB也值得一提。它不是“下一代”,因为它可以追溯到 1990 年代初期。它是一种流行的键值存储,易于嵌入到各种应用程序中。该技术目前归甲骨文公司所有。
另请参阅 Richard Jones 的这篇精彩文章:“ Anti-RDBMS:分布式键值存储列表”。他更详细地描述了其中一些技术。
可以肯定的是,关系数据库有弱点。自首次引入数据建模需求以来,人们一直在争辩说他们并没有处理所有的数据建模需求。
年复一年,研究人员提出了管理数据的新方法以满足特殊要求:要么处理不适合关系模型的数据关系的要求,要么要求完成数据处理的高规模或速度要求在分布式服务器集合上,而不是中央数据库服务器。
尽管这些先进技术在解决它们设计的专门问题方面做得很好,但关系数据库仍然是满足大多数业务需求的良好通用解决方案。SQL 不会消失。
我在 php|Architect 杂志上写了一篇关于非关系数据库的创新,以及关系与非关系数据库中的数据建模的文章。http://www.phparch.com/magazine/2010-2/september/
到目前为止,我在答案中缺少图形数据库。对象的图形或网络在编程中很常见,在数据库中也很有用。它可以有效地处理半结构化和互连的信息。图数据库引起广泛关注的领域包括语义网和生物信息学。提到了RDF,它实际上是一种表示图的语言。以下是图形数据库区域中正在发生的事情的一些指针:
- 图——更好的数据库抽象
- Graphd,Freebase 的后端
- Neo4j 开源图数据库引擎
- AllegroGraph RDFstore
- Graphdb 生物信息学抽象层
- 有向边推荐引擎背后的 Graphdb
我是Neo4j项目的一部分,该项目是用 Java 编写的,但也绑定到 Python、Ruby 和 Scala。有些人将它与 Clojure 或 Groovy/Grails 一起使用。还有一个不断发展的GUI 工具。
可能不是回答这个问题的最佳地点,但我想分享这个由 Steve Yen 创建的 noSQL 世界分类法(请在http://de.slideshare.net/northscale/nosqloakland-200911021找到它)
键值缓存
- 内存缓存
- 重新缓存
- 连贯性
- 无限期
- 极端规模
- jboss缓存
- 速度
- 兵马俑</li>
键值存储
- 键空间
- 耀斑
- 无图式
- 内存云 </li>
最终一致的键值存储
- 发电机
- 伏地魔
- 炸药
- 子记录
- 蒙古数据库
- 燕尾数据库
有序键值存储
- 东京暴君
- 光云
- 纳米数据库
- 卢西奥
- 内存缓存数据库
- 演员</li>
数据结构服务器
- redis </li>
元组存储
- 千兆空间
- 坐标
- 阿帕奇河
对象数据库
- 佐佩数据库
- db4o
- 浅滩</li>
文件存储
- 沙发数据库
- 蒙哥
- 长耳兔
- XML 数据库
- 直通数据库
- CloudKit
- 坚持不懈
- 里亚克芭蕉
- 标量</li>
宽柱状存储
- 大表
- Hbase
- 卡桑德拉
- 超表
- 凯
- 开放网络
要了解下一代数据库领域正在进行的学术研究,请查看以下内容:http ://www.thethirdmanifesto.com/
关于 SQL 语言作为关系模型的正确实现,我引用维基百科,“SQL,最初作为关系数据库的标准语言被推,在几个地方偏离了关系模型。当前的 ISO SQL 标准没有提及关系模型或使用关系术语或概念。但是,如果不使用某些 SQL 功能,则可以使用 SQL 创建符合关系模型的数据库。
http://en.wikipedia.org/wiki/Relational_model(在 2010 年 3 月 28 日的“SQL 和关系模型”一节中引用
不要迂腐,但我想指出,至少 CouchDB 不是基于 SQL 的。我希望下一代 SQL 能让 SQL 少很多……丑陋且不直观。
有一些特殊的 XML 数据库,如 MarkLogic 和 Berkeley XMLDB。他们可以索引 xml-docs,并且可以使用 XQuery 查询它们。我期待 JSON 数据库,也许它们已经存在。做了一些谷歌搜索,但找不到一个。
SQL 自 1970 年代初就已经存在,所以我认为它不会很快消失。
也许'新(-ish)sql'会oql(见http://en.wikipedia.org/wiki/ODBMS)
我还听说过 Jim Starkey 的 NimbusDB
Jim Starkey 是“创造”Interbase 的人
谁在 Vulcan(火鸟前叉)上工作
Falcon for MySQL 的创始人是谁