盘点2013:21款最优秀的开源数据库
原创转自: http://www.csdn.net/article/2013-12-31/2817973-Open-Source-Databases
作为软件开发人员或DBA一项基本工作是处理数据库,例如MS SQL服务器、MySQL、Oracle、PostgreSQL、MongoDB等。众所周知,其中包括MySQL它是目前使用最广泛和最好的免费开源数据库,还有一些你可能不知道或没有使用过的优秀开源数据库,例如 PostgreSQL、 MongoDB、HBase、Cassandra、Couchbase、Neo4j、Riak、Redis、Firebird 等。
在本文中,作者总结了总共21让我们一起来看看最好的开源数据库。
1. MySQL
MySQL它是一个开源的关系数据库管理系统,是甲骨文的产品。支持多个存储引擎、集群和全文 索引,支持多线程,充分利用CPU资源,支持多个用户,以及许多其他非常专业的功能。
MySQL由于其高性能、低成本、可靠性好等特点,已成为最流行的开源数据库,广泛应用于Web在应用程序和其他中小型项目上。从WordPress 到Movable Type都把MySQL作为默认数据库。此外,自甲骨文收购以来MySQL未来,会有MySQL闭源的潜在风险,因此社区采用分支方式避免这种风险,并开发和运营完全兼容MySQL的MariaDB数据库。
2. PostgreSQL
PostgreSQL它可以缩写为”postgres“这是一个物体-关系型数据库管理系统,PostgreSQL使用比较 经典的C/S(client/server)结构,即一个客户端对应一个服务器守护进程。PostgreSQL拥有非常完美的驱动程序并支持标准ANSI-SQL和扩展功能,在许多方面都超越MySQL。
PostgreSQL它是一个功能齐全的自由软件数据库。很长一段时间,PostgreSQL它是唯一支持事务、子查询和多版本并行控制(MVCC)唯一具有数据完整性检查等功能的免费软件数据库管理系统。许多云服务提供商,例如Heroku等,都用PostgreSQL作为他们的RDBMS存储。
就缺点而言,PostgreSQL高端数据库管理系统仍然需要一些功能,例如数据库集群,更好的管理工具以及更多自动化的系统优化功能,以改善数据库性能机制。
3. MongoDB
MongoDB它是一个开源的,面向文档的,目前最流行的NoSQL数据库,也是一种关系数据 库和非关系数据库之间的产品。Mongo最大的特点是它支持非常强大的查询语言,语法类似于面向对象的查询语言,几乎可以实现关系数据库中单表查询的大部分功能,还支持数据的索引。它还具有高性能、易于部署、易于使用和非常方便的数据存储等特点。
Hadoop (HBase)它是一个开源的,基于列存储模型的分布式数据库Apache Hadoop项目的一部分,用语言开发Java。
HBase与一般的关系型数据库不同,它是一种适用于非结构化数据存储的数据库。另一个区别是 HBase基于列而不是基于行的模式。以及具有高可靠性、高性能、可扩展性并建立在关系模型之上的分布式数据库。
HBase是Google Bigtable开源实现,类似于Google Bigtable利用GFS作为其文件存储系统,它用于存储大规模的结构化数据。HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable海量数据,HBase同样利用Hadoop MapReduce来处理HBase海量数据;Google Bigtable利用 Chubby作为一项协作服务,HBase利用Zookeeper作为相应的。
Apache Cassandra它是一个开源的分布式系统NoSQL数据库系统,类似于Google的BigTable。它最初是由 Facebook开发用于存储简单格式的数据,如收件箱,设置Google BigTable数据模型和Amazon Dynamo集成的完全分布式架构。留2008年,Facebook开源它。
Cassandra它的主要特点是它不是一个数据库,而是由一组数据库节点组成的分布式网络服务Cassandra 的写入操作将被复制到其他节点Cassandra读取操作也会路由到某个节点进行读取。对于一个Cassandra对于集群来说,扩容性能是一项相对简单的任务,只需向集群添加节点即可。
6. Couchbase
Couchbase它是基于的产品JSON模型的文档数据库,即CouchDB的一个fork它可以实现水平扩展,并为数据读写提供低延迟访问。Couchbase要比CouchDB更全面的功能,以及Couchbase该产品包括CouchDB的副本。Couchbase产品向CouchDB添加了缓存和群集等功能。另外Couchbase它还包括一些良好的集成功能,用于数据存储系统,Couchbase这是一个不错的选择。
7. Neo4j
Neo4j它是一个开源的高性能产品NoSQL图形数据库,它使用图形(graph)使用相关概念描述数据模型 数据在图形中保存为节点以及节点之间的关系。支持ACID事务(原子性、独立性、持久性和一致性)。
实际上,许多数据都是用图表来表达的,比如人际关系、地图数据、社交网络中的遗传信息。Neo4j中最基本的概念是节点(node)和关系(relationship)。节点表示一个实体,两个节点之间可以有不同的关系。
8. Riak
Riak是基于Erlang和C语言发展,Riak是Amazon高可用性键值存储库,使用Erlang编写和基于 Dynamo它是一种高度可扩展的分布式数据存储。Riak没有主节点的概念,它在处理故障方面提供了更大的灵活性。在开源版本中,它不包括SNMP分布式模型。
9. Redis
Redis它是一个开源的、网络支持的、基于内存的键值对存储数据库。开发人员不需要存储数字和字符串 dump整个哈希值、列表、集合和其他复杂的结果存储,此外,Redis还提供复制/同步和持久性。
Redis它是一个高性能的键值对数据库。Redis的出现在很大程度上弥补了memcached这类key/value在某些情况下,存储不足可以有效地补充关系数据库。
10. Firebird
Firebird它是一个跨平台的关系数据库,使用C和C++发展。目前能够在Windows、linux和各种Unix操 在操作系统上,它可以为存储过程和触发器提供高性能和强大的语言支持。
Firebird它可以在多用户环境中作为数据库服务器运行,还可以提供嵌入式数据库的实现。
11. Memcached
Memcached它是一个分布式缓存系统,可用于存储各种格式的数据,包括图像、视频和文本 项目和数据库搜索结果等简单来说,就是将数据调入内存,然后从内存中读取,大大提高了读取速度。
由于Memcached通常只用作缓存系统,所以Memcached写回速度较慢的系统(如后端数据库)时需要额外代码更新的应用程序Memcached数据在内。
Oracle Berkeley DB它是一个高效的嵌入式数据库编程库。Berkeley DB可以保存任何类型的密钥/值对(Key/Value Pair)它可以为一个密钥保存多个数据。Berkeley DB支持数千个并发线程同时操作数据库,支持最大256TB该数据广泛用于各种操作系统,包括大多数类Unix操作系统Windows操作系统和实时操作系统。
13. Hypertable
Hypertable它是一种高性能的分布式数据存储系统,与Google的BigTable类似的模型。高品质 功能强大、可扩展、可扩展,主要集中在大规模数据集上。
Hypertable以类似表格的格式组织数据,但目前Hypertable它不支持关系数据库中的丰富关系属性。Hypertable将数据组织到多维稀疏矩阵中。此矩阵中的所有行信息都可以基于主键 (Primary Key)排序。
14. Keyspace
Keyspace它是一个键值对数据库存储系统,Keyspace基于Master-Slave模式,所有写入均由Master承接并通过paxos一致地传播到Slave读取可以基于基本路由到:Master或Slave。因此,当Master当停机或无法访问时,将有一组Master选举机制keysapce中成为PaxosLease算法。
15. 4store
4store它是一种高效且可扩展的RDF数据库,它使用ANSI C99开发,能够运行超过15GT的数据查 询价,使用开发的Web该应用程序可以支持数千人同时访问。
16. MariaDB
MariaDB数据库管理系统是MySQL一个分支,完全兼容MySQL,包括API和命令行,使其易于 为MySQL一个替代品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。此外,还添加了一些功能以支持本地非阻塞操作和进度报告。这意味着所有使用MySQL连接器、库和应用程序也将在MariaDB下工作。
MariaDB由MySQL创始人迈克尔·如前所述,Vidnius领导了开发,因为担心甲骨文的存在MySQL闭源的风险已被许多公司转移到MariaDB上,如维基百科、谷歌等。
17. Drizzle
Drizzle这是一个免费的/基于开源关系数据库管理系统C++发展,它是MySQL 6.0的一个分支。和 MySQL一样,Drizzle它还采用经典C/S(客户端/服务器端架构模式主要侧重于为云应用提供可靠稳定的数据库。
18. HyperSQL
HyperSQL是采用的产品Java编写的SQL关系数据库引擎的核心是多线程的,支持双向锁和MVCC, 并为基于内存和磁盘的表提供小巧快速的数据库引擎,支持嵌入式/服务器模式。同时,它还具有各种工具,例如命令行SQL工具、GUI查询应用程序等
19. MonetDB
MonetDB它是一个开源的、面向列的数据库管理系统,专为数据挖掘而设计OLAP、GIS、XML查询、 文本和多媒体检索提供高性能应用程序。
MonetDB数据库管理系统包括MonetDB/SQL、MonetDB/GIS、MonetDB服务器。它还具有自动和自调整索引、运行时查询优化和模块化软件架构。
20. Persevere
Persevere它是一个对象存储引擎和应用程序服务器(基于Java/Rhino)它提供了一个服务器JavaScript环境实现动态JSON数据的持久性数据存储。支持通过标准JSON HTTP/REST Web用于创建、读取、更新和删除数据的界面。
Persevere引以为傲的是它的”schema-free“此功能使其与其他数据库非常不同。Persevere可以让你随心所欲地增加schema。Persevere不将层次结构的顶层称为domain(SimpleDB这么称呼),也不称为文档(CouchDB这么称呼),Persevere称它为对象,它甚至可以允许你创建对象的子类。如果你想违反规则,你也可以坚持对某些字段使用某种类型,但不建议这样做。Schema规则是可选的。
21. eXist-db
eXist-db是使用XML开源技术建设XML数据库,基于XML数据模型、功能、基于索引XQuery存储过程XML数据 程序通过eXist绑定的HTTP服务器与eXist交互。eXist该数据库还提供SOAP、XML-RPC 和RESTful接口,开发人员可以通过这些接口提交到核心服务器XPath、XQuery和XUpdate请求。命令行和GUI客户端也可用。
英语来自: The Professionals Point
本文为CSDN汇编整理,未经许可不得转载。如需转载,请联系market#csdn.net(#换成@)
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除