HBase :为分布式,扩展性和速度而设计

HBase: 为分布式,扩展性和速度而设计

HBase是运行在Hadoop集群上的数据库。HBase不同于传统的RDBMS,因为它放宽了对传统RDBMS数据库ACID (Atomicity(原子性), Consistency(一致性), Isolation(隔离性), and Durability(持久性)) 属性的要求,已实现更高的扩展性。Hbase存储的数据也不需要符合RDBMS严格的模式,因此他非常适合存储非结构化和半结构化数据。

HBase允许构建大数据应用以及进行扩展,但与使用传统数据库构建应用程序相比,在实现上有一些区别。在此博文中,将提供HBase的概述,了解传统数据可的局限性,并深入探讨HBase数据模型的具体细节。

Relational Databases vs. HBase – 数据存储模型

为什么我们需要使用NoSQL/HBase?首先,在讨论传统数据库的局限性之前,我们先看看传统数据库的优点:

  • 关系型数据库提供了一个标准的持久模型
  • SQL 是数据操作(SQL)的标准
  • 关系型数据库管理事务的并发性
  • 关系型数据具有丰富的工具

这里写图片描述

关系数据库是多年的标准,因此有哪些已经改变了呢?随着越来越多的数据需要扩展。一种方式是使用更大的服务器进行垂直扩展,但这可能会非常昂贵,并且随着数据量增加而存在限制。

这里写图片描述

Relational Databases vs. HBase - 扩展性

NoSQL带来了那些改变?

使用硬件的水平扩展代替垂直扩展。使其跟便宜,更可靠。要实现RDBMS的水平分区或者分片,数据是基于行分配的,一些行分布在一台机器上,其他行分布在其他机器上,但是对关系型数据进行分区或者分片非常复杂,他并没有自动执行此操作的设计。此外,会丢失跨分片的查询,事务和一致性控制。关系数据库是为单个节点设计的;它们不是为了在集群上运行而设计的。

这里写图片描述

关系模型的限制

数据库规范化消除了冗余数据,从而提高了存储效率。然而,标准化数据需要使用关联查询,以便再次将数据重新组合在一起。尽管HBase不支持关系和连接,但访问的数据会存储在一起,因此可以避免关系模型相关的限制。查看下图中数据存储模型的差异:

这里写图片描述

Relational databases vs. HBase - Scaling

HBase 为分布式,扩展性和速度而设计

HBase水平扩展基于数据访问一致和存储一致而设计的。数据按key分组在集群上
运行的核心。在水平分区或分片中,key range用于分片,分片跨越多个服务器分配不同的数据.集群的每一台服务器都是数据子集的来源。分布式数据访问的一致性,这使得水平扩展更快。HBase实际上是BigTable存储体系结构的一种实现,BigTable存储体系结构是由Google开发的分布式存储系统,旨在用于管理和扩展非常大的结构化数据。

HBase是面向列族数据存储的简称,他也是面向行的:每行都有用于查找的key(例如, 查找ID 为1234的客户).每个列族组像行内数据(客户地址,订单)一样。将行看作是所有列族中的所有值的链接。

这里写图片描述

HBase is a column family-oriented database

HBase也是一个分布式数据库。通过key对数据分组是运行在集群上和分片的核心。key充当更新的原子单元。在多台服务器上分配不同的数据分片,每台服务器都是数据子集的来源。

这里写图片描述

HBase is a distributed database

HBase Data Model

存储在HBase中的数据通过其“rowkey”来定位。这就像关系型数据库中的主键。HBase中的记录根据rowkey排序顺序存储。这是HBase的基本原理,也是HBase架构设计中使用的关键语义。

这里写图片描述

HBase data model – row keys

Table根据Rowkey的划分行序列的范围,称为region。这些region被分配到被称为RegionServer的数据节点,通过集群中传播region来扩展读写容量,这是自动完成的,也是HBase是水平分割如何设计的。
这里写图片描述

Tables are split into regions = contiguous keys

下图展示了列族如何映射到存储文件。列族存储在单独的文件中,可以单独访问。

这里写图片描述

数据存储在HBase表的单元格(cell)中。整个cell包含已添加的结构化信息,叫做Key Value。整个cell,rowkey,column family name(列族名), column name(列名), timestamp(时间戳),and value (值)将存储在您为其设置了值的每个单元格中。Key包含column family name, column name, and timestamp。

这里写图片描述

逻辑结构上cell以表格格式存储,但是在物理存储上row存储包含所有Key Value信息单元的线性集合。

在下图中,左上展示了数据的逻辑结构,而右下展示了在文件中存储的物理结构。每个Column Family存储在单独隔离的文加中。整个cell,rowkey,column family name(列族名), column name(列名), timestamp(时间戳),and value (值)将存储在您为其设置了值的每个单元格中。

这里写图片描述

Logical data model vs. physical data storage*

在之前提到过,一个单元格的完整坐标值:Table:Row:Family:Column:Timestamp ➔ Value.HBase表是稀疏表。如果column不存在数据,就不会保存。表的cells使用byte数组进行版本化。可以使用时间戳或者简历自己的版本控制系统。对于每个row:family:column坐标,可以存在多个版本内容。

这里写图片描述

Sparse data with cell versions

版本是内置的。put操作是一个insert (create)和 一个 update组成,每一个都有自己的版本。delete操作或获取一个墓碑标记,墓碑标记防止数据在查询中被返回。get 会根据参数返回特定的版本。如果不设置任何的参数,将返回最新的版本。您可以配置要保留的版本数量,并按列族完成此项工作。默认保留三个版本。当超过最大版本数量时,额外记录将最终删除。

这里写图片描述

Versioned data

在这篇博文中,您了解了HBase概要并了解了HBase数据模型。 请继续关注下一篇博文,我将深入探讨HBase架构的细节。 在本系列的第三篇也是最后一篇博客文章中,我们将看看架构设计指南。

说明

MapR-DB部分没有翻

原文地址:HBase and MapR-DB: Designed for Distribution, Scale, and Speed

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值