Database 对Apache HBase基础知识感到困惑吗?

Database 对Apache HBase基础知识感到困惑吗?,database,hbase,google-cloud-bigtable,bigtable,Database,Hbase,Google Cloud Bigtable,Bigtable,我目前在七周内阅读了七个数据库,我发现了这句话 HBase还提供了强大的一致性保证,使其更易于维护 对于某些用例,从关系数据库进行转换。最后 HBase保证行级别的原子性,这意味着您可以 在HBase数据的关键级别上具有强大的一致性保证 模型 我理解它有点困难 我的浅薄理解是ApacheHBase是一个分布式数据库,所以它就像一个主从式的东西 所以,当你写的时候,你首先在主机上写,然后主机把写的内容复制到从机上。一致性保证是所有从机的记录都具有相同的值?因此,高一致性保证意味着它们都具有相同的值

我目前在七周内阅读了七个数据库,我发现了这句话

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

我理解它有点困难

我的浅薄理解是ApacheHBase是一个分布式数据库,所以它就像一个主从式的东西

所以,当你写的时候,你首先在主机上写,然后主机把写的内容复制到从机上。一致性保证是所有从机的记录都具有相同的值?因此,高一致性保证意味着它们都具有相同的值,而低一致性保证意味着主设备可能对某些从设备进行了更改,但不是全部(因此,如果您从其中一个从设备读取值,您可能会根据读取的从设备得到不同的结果)

到目前为止这是正确的吗

所以,使用HBase。。。“保证行级别的原子性”意味着只有当主服务器向所有从服务器写入数据时,事务才会完成?这提供了高一致性吗

我走对了吗?如果不是的话,我真的很想澄清一下这段话的意思


多谢各位

如果“master”是指区域/碎片/分区master,那么您的思路是正确的。每个行键只与一个区域关联(用于shard的HBase术语),并且每个区域都跨多个服务器/磁盘/机架/任何东西进行复制。根据每个行键,客户端只与一个主区域服务器(或“主服务器”)对话

所以,使用HBase。。。“保证行级别的原子性”意味着只有当主服务器向所有从服务器写入数据时,事务才会完成?这提供了高一致性吗

不,一致性和原子性是两码事。 HBase在行级别上提供原子性,这意味着当您写入一行时,整个写入操作将完全完成,或者不进行任何更改—其间没有任何更改(部分更新)。当您在一个命令中写入多行时,不是这样的情况-有些行可能会更改,有些行可能不会更改,但不会部分更新或更改任何行。
一致性(在此上下文中)意味着更新必须首先由远程副本确认,然后客户端才能确定。这主要是通过基于HDFS的事务日志文件完成的。您可以阅读HBase WAL了解更多详细信息。

如果您所说的“主机”是指区域/碎片/分区主机,那么您的思路是正确的。每个行键只与一个区域关联(用于shard的HBase术语),并且每个区域都跨多个服务器/磁盘/机架/任何东西进行复制。根据每个行键,客户端只与一个主区域服务器(或“主服务器”)对话

所以,使用HBase。。。“保证行级别的原子性”意味着只有当主服务器向所有从服务器写入数据时,事务才会完成?这提供了高一致性吗

不,一致性和原子性是两码事。 HBase在行级别上提供原子性,这意味着当您写入一行时,整个写入操作将完全完成,或者不进行任何更改—其间没有任何更改(部分更新)。当您在一个命令中写入多行时,不是这样的情况-有些行可能会更改,有些行可能不会更改,但不会部分更新或更改任何行。 一致性(在此上下文中)意味着更新必须首先由远程副本确认,然后客户端才能确定。这主要是通过基于HDFS的事务日志文件完成的。您可以阅读HBase WAL了解更多详细信息