对Apache HBase基础感到困惑吗?

时间:2020-10-02 07:41:24

标签: database hbase google-cloud-bigtable bigtable

我目前正在阅读七周内的七个数据库,并且遇到过此声明。

HBase还提供了强大的一致性保证,使其更易于 在某些用例中从关系数据库过渡。最后, HBase在行级别保证原子性,这意味着您可以 在HBase的关键数据上具有强大的一致性保证 模型。

我在理解它时遇到了麻烦。

我的浅浅理解是Apache HBase是一个分布式数据库,因此就像是主从设备?

因此,执行写操作时,首先要在主服务器上进行写操作,然后主服务器将写操作复制到从服务器上。一致性保证是所有从站的记录都具有相同的值吗?因此,高一致性保证意味着它们都将具有相同的值,而低一致性保证意味着主机可能已对一些从属设备进行了书面更改,但不是全部(因此,如果您从其中一个读取值)这些奴隶,您可能会从读取的那个奴隶身上得到不同的结果?

到目前为止,这是正确的吗?

因此,使用HBase ...“在行级别保证原子性”意味着仅当主服务器已写入所有从属服务器时,事务才能完成吗?那提供了高一致性吗?

我正朝正确的方向前进吗?如果没有,我将非常感谢您对该段的含义进行澄清。

非常感谢您!

1 个答案:

答案 0 :(得分:2)

如果“大师”是指地区/碎片/分区大师,那么您走在正确的轨道上。每个行键仅与一个区域(分片的HBase术语)相关联,并且每个区域都跨多个服务器/磁盘/机架/任何地方复制。根据每个行键,客户端只能与一台主区域服务器(或“主服务器”)进行对话。

因此,使用HBase ...“在行级别保证原子性”意味着仅当主服务器已写入所有从属服务器时,事务才能完成吗?那提供了高一致性吗?

不,一致性和原子性是两个不同的东西。 HBase在行级别提供原子性,这意味着当您写到一行时,整个写操作就完全完成了,或者什么都没有改变-中间没有(部分更新)。当您在一个命令中写入多行时,这不是不是的情况-有些行可能会出错而有些行则不会,但是没有行会被部分更新或更改。 一致性(在这种情况下)意味着更新必须首先由远程副本确认,然后客户端才能正常运行。这主要是通过基于HDFS的事务日志文件完成的。您可以阅读HBase WAL以获得更多详细信息。