三种 NoSQL 数据库的比较
发布日期:2016-4-25 20:4:19
Hadoop获得了许多大数据应用的信誉,但事实是,NoSQL数据库是一直处于更加广泛部署与更广泛的发展中的技术。虽然选择Hadoop作为应用存储,相对来说更直接简单。但具体采用什么样的NoSQL数据库是个值得思考的问题,毕竟,还有超过100种的NoSQL数据库。 那么我们应该选择哪一种? 一、选择倾向 Martin Fowler认为,“任何像样规模的企业都会使用各种不同类型的数据存储技术,为应对各种不同类型的数据。”然而现实的情况是你没有足够的精力去学习更多的存储技术。 现在选择越来越容易,由于市场主要围绕在三个NoSQL数据库上:MongoDB,Cassandra(主要由DataStax开发的,诞生于Facebook)与HBase的(与Hadoop紧密关联在一起,也被相同社区开发出来)。 现在我们补充一点,我排除了Redis,mysql。相比于大数据存储,Redis主要用于高速内存缓存数据应用。 从LinkedIn的451研究数据显示,市场上最具引力的是MongoDB、Cassandra与HBase,如图1所示: 图1 图1是LinkedIn的个人资料数据。我们认为是数据存储引擎,它是通过收集工作、搜索等数据来了解数据库的热门程度。而Oracle,SQL Server与MySQL的占据了统治地位,MongoDB的(第5位),Cassandra(第9位),与HBase的(第15位)。 为了更好解释这三个数据库技术,我问的是每一个具有代表性的人,来确定它们成功关键因素:
但是首先,我们需要了解为什么使用NoSQL的原因。 二、世界由非结构化数据构成 我们生活在一个数据越来越丰富的世界里,但这些数据都不能整齐的展示在一个RDBMS(Relational Database Management System,关系数据库管理系)的行与列中。移动、社交与云计算催生了庞大的海量的数据。据估计,在过去两年中世界上90%的数据是被创造,以及80%的商业数据是非结构化的。更重要的是,非结构化数据的增长速度是结构化数据的两倍。 随着世界的变化,数据管理要求开始超越传统的关系型数据库的有效范围。包括政府机构、Web技术的先驱、从事信息技术服务的公司是最早关注这个问题解决方案的机构。 越来越多的公司都希望利用类似的NoSQL与Hadoop作为替代品:通过NoSQL来建立业务运营应用,以及Hadoop来创建数据挖掘的应用程序,来帮助公司对商业数据提供有力的研究。 三、MongoDB:源于开发人员,为开发人员服务 在众多NoSQL的方案中,MongoDB的Stirman指出,MongoDB的瞄准了适合各种应用的平衡的方法。MongoDB的功能接近于传统的关系型数据库,MongoDB的用户不仅仅可以利用其横向扩展机器的云基础架构的优势,并且由于它能够轻松定义各种灵活的数据模型,因此可以支持不同类型的数据集存储。 MongoDB通常是开发人员第一个尝试的NoSQL数据库,原因是它是很容易学习。Will Shulman,MongoLab(一个MongoDB服务提供商)的CEO,是这样说的: 在很大程度上MongoDB中的成功是由于它数据结构存储的创新,让我们更容易与更具表现力地定义我们应用程序中的数据模型。在通常开发与应用场景中,与原有数据库具有相同的基本数据模型是有极大好处的,由于它简化了应用程序开发的任务,在另一方面,消除了复杂的数据格式代码转换层。 当然,MongoDB像任何其他技术一样都有其长处与短处。 MongoDB是专门为OLTP(On-Line Transaction Processing,联机事务处理系统)模式。若您需要复杂的事务处理,它不是一个好的选择。但是,MongoDB的简单性使其成为一个优秀的存储。 (注:MongoDB以文档的形式存储数据,不支持事务和表连接。因此查询的编写、理解和优化都容易得多。) 四、Cassandra:规模化安全运行 三种数据库中,至少两种数据库具有简单特性:开发简单,操作简便。而MongoDB赢得人心的原因是简单的开发应用,Cassandra赢得人心的原因是易于管理的规模。 DataStax的McFadin告诉我,用户往往倾向于使用Cassandra ,是因为特别在大规模集群下,增强一个关系型数据的性能、可靠性是非常困难的。一位前甲骨文DBA,McFadin是兴高采烈地发现,“复制与可扩放性是基础”,Cassandra 特点就是从一开始设计就解决这个问题。 在RDBMS中的世界,数据库功能,对很多开发者用户来说,拓展与复制是一个难题。这个问题在过往的企业规模小的时候,不是一个大问题。而在今天,它很迅速地成为大问题。 我从McFadin与其他人那里获知,Cassandra在机器拓展部署上,表现特别出色。Cassandra自带的备份机制,保证各个数据中心的数据安全。至于增加容量到集群,“你只需启动一台新机器,并告诉Cassandra那里的新节点,”McFadin说,“然后,它完成其他剩下的事情。” 优秀的可拓展性,加上出色的写入与可观的查询性能,这些加起来成为Cassandra高性能的核心。 NoSQL的一篇文章认为Cassandra在集群规模管理方面非常出色,但它需要一个博士学位才能上手。事实并非如此,McFadin坚持认为: 在复制、读取与写入是故意简单。你可以在几个小时内学会Cassandra的核心功能。在部署这项新技术的时候,为给开发者带来很多的信心,因为比较少引入“黑盒子”内的技术细节和复杂的故障模式原理。 这意味着主要的开发成本,是对Cassandra数据模型的理解,以及如何结合您的应用程序。鉴于Cassandra的CQL查询语言(类似于SQL,实际上不是SQL),McFadin说,其实学习这个也不困难。 更重要的是,“Cassandra回报给你的是,在一个数据库中:没有戏剧性的场景(故障)出现。这就是用户喜欢使用Cassandra的原因。” 五、HBase:Hadoop的知心伙伴 像Cassandra一样,HBase是个通过key-value面向列存储的服务。由于它和Hadoop有着“共同血统”,被广泛使用。实际上,正如Cloudera的Kestelyn所说的那样,“HBase提供了一个基于记录的存储层,能够快速随机读取和写入数据,正好弥补了Hadoop的缺陷,Hadoop侧重系统吞吐量,而牺牲I / O读取效率为代价。” Kestelyn接着说: 更改有效录入到内存中,以达到最大的访问量,同时将数据保存到HDFS。这种设计使基于Hadoop的EDH(enterprise data hub,企业数据中心)服务,能够实时完成随机读写存储数据,但是仍拥有HDFS的高容错性与耐用性。 Hadoop的亲和力,并不是HBase数据库中的人气排名不断上升的唯一原因。HBase类似Cassandra,是Google的Bigtable的开源实现转化成的数据库,天然被设计为高可扩展性。 Hbase可以利用任何数量服务器的磁盘、内存与CPU资源,同时拥有极佳的扩展功能,如比如自动分片。当系统负载与性能要求不断增加,HBase的可通过简单增加服务器节点的方式无限拓展。 HBase从底层设计上保证,在确保数据一致性的同时,提供最佳性能。 但是规模不是它的唯一用途。Kestelyn指出,“因为它与Hadoop的生态系统紧密集成,对于用户和应用程序来说数据是容易获取的,可以通过SQL的方式查询(使用Cloudera的Impala,Phoenix,或Hive),甚至自由文本搜索(使用Cloudera Search)。“因此,HBase为开发人员提供了一种方法,利用现有通用的SQL语言,来建立在一个更成熟的分布式数据库。 每种数据库技术都有自己的长处与不足,但是这里评论的三种数据库,在大数据技术领域,占据了重要的位置。尽管未来可能还有一种全新的NoSQL数据库技术会挑战它们前三的位置,但是目前的事实上许多开发人员以及一批强大的成熟企业已经做出了它们的选择:MongoDB、Cassandra 与 HBase。 上一条: iMySQL的介绍 下一条: MySQL 化身 NoSQL
|