一、两种nosql数据库的基本介绍
以往我们项目用的数据库无论是SQL数据库还是No SQL数据库,都更新了传统的数据存储方式。 从企业的项目来说,数据存储功能是如何随着时间的推移而演变的,并且业务流在变需求也随之改变,逐渐走向更快,更安全、更稳定,存储也不再局限于表格, 我们可以通过多种方式执行和管理数据库。这也促使我们在实际开发中数据库的选型上范围更广。
Apache Cassandra 和 Apache HBase 是两种流行的数据库模型类型,可用于存储、管理和提取信息,充分利用数据。如果我们仔细的去比较 Hbase 和 Cassandra,就会发现它们有一些共同点:例如它们外观相同,具有相似的特性和功能,与此同时你也会发现它们的运作方式上存在着很大差异, 这就是我们将在实际开发的项目中发现的问题。
二、什么是Hbase和Cassandra?
首先,Hbase 有其著名的数据管理方式。 该模型广泛用于提供对大量结构化数据的随机访问。 它是面向列的,构建在 Hadoop 分布式文件系统之上。 此应用程序实时工作,可用于将数据存储在 HDFS 中。 Hbase 是一种开源分布式数据库,它允许使用更简单的方法来消除数据复制。 Hbase 还有其他重要组件,包括 HMaster、Region Server 和 Zookeeper。 根据HBase的GitHub数据,Github Stars为4.6K,GitHub Fork – 3.1K等等。
Cassandra 旨在处理跨多个商品服务器的大量数据,确保高可用性而不会出现故障。 它具有可以处理大量数据的分布式架构。 为了无故障地实现高可用性,数据使用多个复制因子分布在多台机器上。 根据Cassandra的GitHub数据,GitHub Stars为7.5K,GitHub Fork为3.2K。
三、Hbase和Cassandra实际区别
3.1功能架构
在众多的数据库管理系统中,HBase是基于master的架构,而Cassandra没有master,是无master的。 这意味着 HBase 有单点故障,而 Cassandra 没有。 Apache HBase 客户端直接与从服务器通信,无需联系主服务器;
Hbase模型基于Master-Slave Architecture Model。 而 Cassandra 基于主动节点架构模型。 此外,在 Cassandra 与 HBase 的比较中,前者在支持架构的数据存储部分和管理方面表现出色。 而后者的架构只为数据管理而设计,依赖于其他系统或技术进行存储、服务器状态管理、同时缓存、冗余节点和元数据。
3.2数据模型比较:
Hbase 与 Cassandra 所依赖的数据模型略有不同。 虽然这两个数据库听起来或多或少是一样的,但两者之间存在一些主要差异。
Hbase 适用于列族,并且有一个包含一列和多个行键的列限定符。 当谈到 Cassandra 查询语言时,它也像 Hbase 单元格一样具有列。 Cassandra 也是一个面向列的数据库。
Cassandra 键的一个特点是它只允许一个主键有多个列,而 HBase 只带有 1 列行键,并将行键设计的责任放在开发人员身上。 此外,Cassandra 的主键包含分区键和集群列,其中分区键可能包含不同的列。
3.3 读写性能比较:
如果涉及到性能并且我们正在比较 Apache Cassandra 和 Apache HBase,那么我们还必须考虑其他方面。 考虑了两种类型模型的读写能力。
从写的角度看:
HBase 和 Cassandra 服务器上的写入路径几乎相同。 与 HBase 相比,Cassandra 有一些优势,例如数据结构的名称不同,并且有多个服务器供 Cassandra 执行和实施。 HBase 不会同时写入日志和缓存的事实。
从读的角度看:
在读取选项方面,Casandra 非常快且一致,而 HBase 有一段路要走,而且相对较慢。 Hbase比较慢,因为它只写入一台服务器,没有比较各个节点数据版本的设施。 尽管 Cassandra 每秒可以处理大量读取,但这些读取是有针对性的并且很可能被拒绝。
所以从读写操作相比较来看Cassandra 更有优势
3.4 Infrastructure模式
如果我们谈论基础设施,那么我们就是在谈论在维护高基础设施方面发挥关键作用的所有工具。 当我们看到 HBase 时,它利用 Hadoop 基础架构,其中包括所有移动部件,例如 HBase 主节点、Zookeeper、名称和数据节点。
当我们看到 Cassandra 时,它带有各种操作和基础设施。 除了基础设施之外,它还采用了各种 DBMS。 除此之外,我们还可以找到许多使用 Storm 或 Hadoop 的 Cassandra 应用程序。 此外,其基础设施建立在单节点类型结构上。
3.5 数据安全
数据的安全性是 HBase 和 Cassandra 的一个重要方面。 与其他数据库不同,这里所有的 NoSQL 数据库都存在安全问题。 企业保护数据的主要原因之一是使性能达到标准水平,这样系统就不会变得笨重和不灵活。
但是,可以肯定地说,这两个数据库都具有一些确保数据安全的功能:两者的身份验证和授权,以及 Cassandra 的节点间+客户端到节点加密。 反过来,HBase 提供了与构建它的其他技术急需的安全通信。
3.6 技术支持
Hbase 提供对每个单元级别的访问。 它主要侧重于与管理员协作并负责数据集的所有可见性标签。 同时,它将通知用户组有关可以在行级别访问的标签。 Cassandra 在行级别访问标签并分配职责和条件。
3.7 学习成本
文档是学习任何数据库过程的重要组成部分当然平时我们也能看一些教学视频,但如果一个新的技术出来,我们可能最先通过官方的文档来了解。 学习 Cassandra 并不容易,因为文档不符合标准。 而在 HBase 中,由于更好的文档,它非常容易学习。
3.8 查询语言
两种语言都是基于 JRuby 的,HBase shell 也不例外。 Cassandra 作为一种基于查询的语言非常具体。 CQL 在同一行 SQL 中建模。 与HBase查询语言相比,你会发现CQL的特性更多,功能也更丰富。
四、Hbase和Cassandra的相似的地方
4.1 数据库
HBase 和 Cassandra 都是开源的 NoSQL 数据库。 这两种技术都可以轻松处理大型数据集以及图像、音频和视频等非关系数据。
4.2 数据的扩展性
HBase 和 Cassandra 都具有很高的线性可扩展性。 想要处理更多数据的用户可以通过增加集群中的节点数量来实现。 由于两个节点都具有灵活性,因此您可以在不同的场景中单独使用它们中的任何一个。 结果将是相同的,不会有任何效率问题。
4.3 集群节点复制
这两种类型的模型——HBase 和 Cassandra 都具有强大的安全性,即使在系统出现故障后也能防止数据丢失。 所以为了避免重复因素,有一个特定的模式。 通过复制模式,可以做到这一点。 在一个节点上写入的数据被复制到集群中的多个节点。
4.4 数据编码
两个数据库都是面向列的,写路径相似。 因此,充当主要来源的是数据库中主要存储单元的列。 因为用户可以根据自己的需要自由添加列。 此外,正确的路径从将写入操作记录到日志文件开始。 这样做主要是为了确保耐用性。
五、区分 HBase 和 Cassandra 表
比较因素 Hbase Cassandra 数据库基础 Google BigTable 是 HBase 的基础。 Cassandra 建立在 Amazon DynamoDB 之上。 建筑模型 它采用主从架构模型。 它采用主动-主动节点架构模型。 协处理器 可以在 HBase 中利用协处理器的功能。 Cassandra 中没有协处理器功能 建筑风格 Hbase 遵循 Hadoop 基础架构。 Cassandra 为不同的应用程序充分利用了大量的 DBMS 和基础设施。 集群生态系统 HBase搭建集群生态并不容易 Cassandra 集群设置比 HBase 更简单 事物处理 HBase 使用两种方法来处理事务: “检查并放置” ‘读取-检查-删除’ Cassandra 还通过两种主要方式处理事务 “比较和设置” “行级写隔离” 读、写操作 HBase 非常擅长密集读取功能 Cassandra 写得很好。 品牌的商家使用 Adobe Walmart
Yahoo
Netflix
eBay
六、关于两者在实际项目中的选择
在实际的开发中作为系统的开发人员会涉及数据库、框架等等选型的问题,一般在项目时间充足的情况下,我们会选择尽量了解客户的业务需求,从而选择符合业务需求的数据库。Hbase 和 Cassandra 都是非关系型数据库,它们虽然相同,但又彼此不同。 尽管有相似的领域,但存在许多差异,使每个领域都以自己的方式独一无二。 就像两者各有利弊。 我们知道Cassandra擅长写作,而HBase擅长精读。 如果说 Cassandra 有什么弱点,那就是数据一致性,而 HBase 在数据可用性方面有优势。 我们看到双方都试图消除这些问题的负面影响,并与积极的影响站在一起。数据库也好,框架也好,都是一只在更新,一直在做功能上的完善不管是用户还是开发团队,都希望他们越做越好,用着越来越方便。