数据库厂家排排坐,谁是最好的数据库软件?

本文地址:https://www.askmac.cn/archives/best-database.html

 

你并不需要我们告诉你现在市面上有多少种数据库系统软件。因此,当你在苦找下一个项目的参考,想要知道哪个数据库是最好的时候,那么这篇文章是一个很好的起点。

 

我们已经准备了一个入围名单,其中有我们的最爱- 这是一个对几个数据库的简单介绍;他们中的一些你可能听说过,一些可能没有。坐好了,祝你的研究一切顺利。

关系数据库

 

MySQL

 

MySQL是数据库中一个家喻户晓的名字。它也有几个分支,旨在提高MySQL的某些方面,比如MariaDB或者Percona。

这是一个成熟的系统,伴随着当前的存储引擎InnoDB,它现在处理只读和以读为主的文件比之前的存储引擎MyISAM好了很多。但是,如果你开始处理巨量的数据,你也会被在InnoDB中的问题绊倒。幸运的是TokuDB可以提供一些帮助(www.askmac.cn)。

 

PostgreSQL

 

当涉及到关系数据库,PostgreSQL/Postgres也是一个很好的选择。 MySQL是比较流行的,但这主要是由于历史原因;PostgreSQL是比较容易上手的数据库。

Postgres的特别之处在于出色的可扩展性,所以如果你需要执行自定义程序,Postgres是一个不错的选择。这方面的一个例子是,它允许用户自定义函数不仅能用SQL还能用好几种语言编写。 Postgres也在NoSQL领域增加了一系列增强。通过Hstore你可以存储键值对,而无需离开Postgres。而在9.4版本中,你可以同时使用JSON和JSONB,这无疑挑战了一些NoSQL成员。这是PG在NoSQL功能上的一个突破。

 

TokuDB

TokuDB是一个MySQL,MariaDB和Percona均可用的存储引擎。在分析领域它可以替代InnoDB; TokuDB让人眼前一亮的是,它善于压缩数据。它一般比InnoDB节省了3倍的空间。 当数据集能装入内存,TokuDB的性能是和InnoDB一样的。但是,当数据变得太大,TokuDB仍能同样出色执行,而InnoDB的性能需要深入调优。

TokuDB和InnoDB之间的根本的不同在于,前者使用一个分形树数据结构,而后者使用B-树数据结构。总之,如果你的数据很大​​,你想要使用MySQL,你可能有兴趣考虑看看TokuDB。这些基准给了你TokuDB可以实现什么的提示(www.askmac.cn)。

 

NoSQL数据库

MongoDB

MongoDB是面向文档的数据库,部分人表示对它的厌恶。但一个DBMS走红是总是有其原因的,即它的速度,灵活的架构和分片。为了实现MongoDB的优良性能,MongoDB的做法是不默认采用安全写入,在你了解它和并且它对你的应用可行的情况下,这是很好的。

开始使用MongoDB的门槛是低的,它的灵活架构让你能随时改变。随着3.0版的推出,有一些不错的性能改进,同时由于其新的存储引擎WiredTiger,也让数据库更接近ACID兼容。如果你要把它投入生产,确保你一定要做好功课,并不是所有的开发者都这么做(www.askmac.cn)。

CouchDB

 

如果你是讨厌MongoDB的人也许你应该看看CouchDB?就像MongoDB,它的架构结构与之相同,它是面向文档的。和MongoDB不同的是,它在一个文档级别是完全ACID兼容的,这实在是它的关键卖点之一。它通过多版本并发控制(Multi-Version Concurrency Control)实现这一特点。当冲突最终发生,需要通过将数据合并到其中一个文档中来解决这个问题。

 

Cassandra

Cassandra是专门设计用来处理大量数据的数据库之一。加拿大多伦多大学的研究人员发现,Cassandra实现了所有他们的实验中的最高吞吐量,在这个方面,它明显是一个赢家,。

 

数据库本身是一个键值存储和表形式的数据库之间的混合。所以还是有行和表,但它不可能做join,也不能子查询,除非通过Hadoop做批量分析。

 

Riak

Riak是一种分布式键值存储,其可用性是首屈一指的。它用来处理每天存储和服务几个TB的应用程序数据,和不惜一切代价节约运行时间的地方。

 

Riak本身是由于这个原因与建立。就像Erlang的建造是使强大的并发系统发展,Riak使用Erlang的并发来为像NHS组织提供所需要的高可用性。所以,如果耗时并非绝对重要,那么使用Riak可能就不那么必要了。像所有的技术一样,Riak也有它的不足之处,即席查询和重分析。

 

ArangoDB

ArangoDB是多模式数据库,将你的数据组织成文件,图表或键值对。这正是ArangoDB的独特之处,如果你有一个应用程序需要两种数据储存方法,那你为什么要在你能用一个数据库的时候使用多个呢?访问数据时,你可以使用AQL这样做,AQL是类似SQL的查询语言。

 

ArangoDB还提供了一种方法,即通过REST API来直接访问本身。如果你将它与MongoDB个CouchDB比较,ArangoDB更加节省空间,如果你喜欢ACID,它也能做到!但只适用于高手。

 

Elasticsearch

 

 

这是一个专注于做最好的搜索的数据库。 Elasticsearch是建立在一个名为Lucene的库基础上,并使搜索变得简便。它以接近实时的速度搜索您的文档的功能而知名。

Elasticsearch还可以很容易地用它的分布式模型扩展。数据库存储其JSON格式的文件,然后通过一个REST API检索 。

 

Solr

 

很像ElasticSearch,这也是在搜索方面的数据库。类似Elasticsearch,它也建立在Lucene之上。两者之间有很大的重叠,然而Solr的是一个更成熟的解决方案,因此具有更大的贡献者社区。

 

如果你需要处理如XML和CSV的格式,Solr是一个好的选择。Solr的一个缺点是,它不是一开始根据分布式模型建立,所以实现这一目标会更麻烦。

 

Redis

 

Redis的是一个可爱的数据库,本质上是一个键值存储。Redis厉害的是,它有几种有用的数据结构;字符串列表,串集,分类集和hash表。

 

Redis把所有数据放在内存中的,所以它是非常快的。如果你正在寻找缓存数据的应用程序,它会运行得很好 – 这些构成它的数据使得它更容易从你的应用程序代码中缓存数据。 Redis还带有复制功能和一个主从结构,如果你需要扩展服务你会需要它。

Memcached

Memcached是一个在内存中缓存也像一个键值存储一样工作。多年来,它已经证明了自己是好的软件,但如果你选择一个解决方案来缓存数据,Redis是一个更好的选择。直到2014年,你可能因为Memcached有第三方的集群工具,允许更高的可用性和可扩展性,而选择Memcached,但​​现已在Redis也用了这些功能。

 

但memcache还是有它的优点,复杂度低,结构简单,它是经过无数年验证的解决方案!

 

图形数据库

 

Neo4j

Neo4j的是,特别注重将所有数据存储其在边缘和节点中,换句话说,它将数据存储在图中。通过这种方式存储数据,它在解决的某些问题时可能快得多。对于适合图形的数据,你可能查询数据的速度会比你在关系数据库中的快1000倍。

 

OrientDB

OrientDB是另一个图形数据库,具有与Neo4j大致相同的特征,一个关键的区别是OrientDB总是与Apache 2许可因而永远免费。反之,如果你想要的Neo4j的企业版,它会在APGL下。另一个关键的区别是,OrientDB还支持SQL语言,而Neo4j有自己的查询语言。

 

FlockDB

虽然Neo4j的是一个全功能的图形数据库,但是还有更简单的,比如FlockDB。这个数据库并不试图解决所有图形问题。相反,它着重于处理高吞吐量并低延迟。不像Neo4j,它不会做深入的图形遍历,因为它是在Twitter设计的,对于简单的跟随者/跟随的模型,他们并不需要这个功能。

 

因此,哪个数据库是最好的?

 

当然,选择哪个数据库完全取决于你想用它来做什么。需要大量的数据完整性?小的应用程序? MySQL或PostrgreSQL将是一个不错的选择。如果快速访问和横向扩展是你想要的,你可能会更需要NoSQL的解决方案。在Server Density,我们每月处理超过30TB数据(一天20亿以上的文档),这就是MongoDB是对于我们的巨大价值。

 

我们希望,这会让你对其他许多数据库更加好奇,因为这样的文章很需要很多的补充。

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号