HBase的ACID

HBase虽然不是严格意义上的ACID数据库,但其也在一定程度上对ACID做了适当的支持。本文将对HBase的ACID特性做一个简要的介绍。

 

首先对ACID做一个简单的定义,

A(Atomicity)原子性:一个事务中的一组操作要不全部完成,要不全部不完成,不可能只完成一部分。

 

C(Consistency)一致性:一个事务中所有的操作将保证数据表中的数据从一个有效状态转换到另一个有效状态,即从外部来看,数据是一致的。比如转账业务,从用户A中减去100块,存入用户B的账户中,在这个过程中,无论从用户A去查询还是从用户B去查询都可以确保这100块钱还存在于系统之中,不会出现程序将数据从A中减去了100块而没完成存入到B的过程,此时从A,B账户去查询都看不到这100块的情况。

 

I(Isolation)隔离性:同时执行事务中的操作相互之间不影响。

 

D(Durability)持久性:任何报告给client成功的操作都应该被永久保存在系统之中。

 

V(Visibility)可见性:任何更新操作都是可以被之后的读操作所见到的,就好像更新操作是被提交了一样。

 

以下从HBase的几方面来看HBase对于ACID的支持:

  • 读APIs
    • get
    • scan
  • 写 APIs
    • put
    • batch put
    • delete
  • 混合操作(read-modify-write) APIs
    • incrementColumnValue
    • checkAndPut

HBase在ACID的特性上所能保证的包括以下的一些特性:

原子性

  1. 所有对于一个hbase行的操作都是原子的,也即在hbase的table中加入,更新一行要不成功要不失败,不会部分成功部分失败,特别说明的是
    1. 如果客户端(API)操作超时的话,改操作也是全部成功或全部失败,不会有部分成功的情况出现, 这个是hbase在行上的原子操作的保证。
    2. 操作跨多个CF(column family)也是一样,全部成功或全部失败
    3. API对于跨行的操作是不能保证原子性的。比如说通过multiput去创造行'a','b','c',可能从API的调用中得到对每一行各自的成功,失败了或超时状态。
    4. 对于行的操作会按照一定的顺序进行,而不会出照操作之间的叠加而导致数据的异常。如一个线程对于一行的操作是"a=1,b=1,c=1",另一个线程对于该行的操作是"a=2,b=2,c=2",该行的最终值有可能是"a=1,b=1,c=1"或者"a=2,b=2,c=2";不可能出现"a=1,b=2,c=1"的情况,这个是hbase来保证的。但是要注意的是,跨多行的批量操作是不能保证这一点的。

一致性和隔离性

  1. API对于hbase中的行访问,会得到在某一个时间点上的完整的数据行.对于同行跨多个CF(column family)的操作来说依然成立。
  2. 一个行的状态是通过对其历史版本不停的前滚而来

Consistency of Scans

一个scan不可以获得一个table的一致状态(scan后包括不同行不在同一个时间点值,如r1(t1),r2(t2)),但是可以保证的是每一行的状态都是一致的。

一个scan将一直反应在其被创建时刻的数据值,这包括以下几个方面:

1.如果Client A写了一个数据X并通过其它方式通知client B去访问该数据,client B将可以看到最起码X或其之后的数据X.

2.一个scan必需反应出在其创建之前所有的被提交的更新,并且也可能反应出在其创建过程中可能产生的更新。

 

如果你对关系数据库事务的隔离性熟悉的话,scan的行为实际上是一种'read committed'。

请注意以上所能保证的被称为‘事务提交时间’,并不是相应的行上‘timestamp'列,也就是说,一个scanner开始时间为t可能会看到一个timestamp的值为t的数据,如果那些版本是由于提交‘forward dated'的时间崔在scanner被创建之前。

可见性

1.当一个client收到一个更新操作的成功反馈,这个更新将会马上被当前client或任意其它连接进行查询的client可见。

 

可持久化:

1. 所有可见的数据都是被持久化的数据。也就是说,一个read不会把一个还没有写入磁盘的数据返回给client.

2. 任何返回成功的操作都会被持久化

3. 任何返回失败操作的数据都不会被持久化

 

SPARK & HIVE现在ACID的支持现状 在讨论之前,先介绍ACID是什么。 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性(Consistency) 事务前后数据的完整性必须保持一致。 隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。 持久性(... 阅读详情

相关推荐

HBase_SI_--_实现HBase_ACID的理论

HBase_SI_--_实现HBase_ACID的理论

HBase内部的ACID

原版英文地址:https://www.douban.com/note/407014354/         偶然看到的一篇文章,里面不只是阐述了某一个问题,而是对ACID在HBase的各个组件的应用情况作了详细的说明,所以有必要翻译出来,整理一下。         众所周知,ACID,即指:原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(D

HelloWorld 1833

单细胞 | pySCENIC·转录因子分析(二)

接上一篇,pySCENIC分析完之后就可以进行可视化了,个人认为最重要的有三个图:rss点图,rank图,转录因子表达水平热图,3个图结合着看。3.可视化rank图,可以自己改一下plotRSS_oneSet参数让图更好看一点。4. regulon表达水平热图,转录因子表达水平同理,得到的图类似只是输入不一样。2.可视化点图:寻找cluster特异性转录因子。1.loom文件读入R,提取数据。

生信练习生 4285

HBase的事务处理和ACID特性

1.背景介绍 1. 背景介绍 HBase是一个分布式、可扩展、高性能的列式存储系统,基于Google的Bigtable设计。它是Hadoop生态系统的一部分,可以与HDFS、MapReduce、ZooKeeper等其他组件集成。HBase具有高可靠性、高性能和高可扩展性等特点,适用于大规模数据存储和实时数据处理等场景。 在现实应用中,事务处理和ACID特性是关键要素。事务处理是一种数据操作方...

AI天才研究院 1584

数据资产目录(SailCatalog)和数据地图(SailMap)

笔者接下来准备开发大数据平台(XSailboat)中的数据资产目录(SailCatalog)和数据地图(SailMap)相关的功能,本文用以记录笔者关于此部分功能的概念梳理和主体功能设计。

OkGogooXSailboat的博客 2327

WinCC动态选择报警记录案例

本例中需要确认查询的时间段以及查询的关键字,然后通过一个按钮来执行报警数据查询脚本,并把查询出的结果加载到当前报警控件中。<本例中数据查询脚本的思路是根据选项组所选定的参数加载相应的归档变量到在线趋势控件,根据设定的查询时间范围设定控件时间轴的开始时间及结束时间。本文以 WinCC V8.0为例,介绍如何动态的查询WinCC报警记录,包括关键字查询/时间&关键字查询,如图1所示。<在WinCC变量管理中创建不同的变量组,并在变量组下创建相应的变量,如图2 所示(下图并非实际变量值)。

weixin_45072604的博客 2711

HBase介绍

2. HBase不支持表的关联操作,因此数据分析是HBase的弱项。常见的group by或order by只能通过编写MapReduce来实现。HBase时建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写是NoSql数据库系统。1.架构设计复杂,且使用HDFS作为分布式存储,因此就存储少量数据,也不会很快。:主要需是数据分析,比如做报表。数据规模不大,对实时性要求高。3.HBase部分支持ACID(行级事务)。:单表超千万、上亿,且高并发。

qq_45275284的博客 285

使用广播星历进行 GPS 卫星位置的计算

目录1.计算卫星运动的平均角速度 n2.计算观测瞬间卫星的近地点角3.计算偏近点角4.计算真近点角 f5.计算升交角距 6.计算摄动改正项7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置9.计算观测瞬间升交点的经度 L10.计算卫星在瞬时地球坐标系中的位置11.计算卫星在协议地球坐标系中的位置使用广播星历进行GPS卫星位置的计算的详细步骤如下:关于在广播星历中各参数的分布情况可以参考下图:首先根据广播星历中给出的参数 计算参考时刻(TOE) 的平均角速度 式中,GM为万有引力常数 G 与地球总质量

qq_43381998的博客 5569

HBase的ACID http://hbase.apache.org/acid-semantics.html

HBase的ACID HBase不是一个ACID完整的数据库,然而HBase还是保证很多ACID的特性 1.ACID的定义: 原子性,一个操作是原子的则这个操作或者全部完成,或者不完成。 一致性,所有对表的操作都会使表从一个状态变成另一个状态。 隔离性,并发操作都是互不影响的。 持久性,任何在客户端显示‘操作成功’的操作说明数据肯定不会丢失。另外HBase还有一个特性就是,如果一个更新操

开卷有益 1092

[USACO2023-JAN-Bronze] T2 Air Cownditioning II 题解

[USACO2023-JAN-Bronze] T2 Air Cownditioning II题解

1652

利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案

tokenizer将输入的文本列表texts转换为 PyTorch 张量,同时进行填充和截断操作,以确保所有输入具有相同的长度。对输入进行推理,得到模型的输出。对模型的最后一层隐藏状态求平均,得到每个文本的向量表示。.numpy()将 PyTorch 张量转换为 NumPy 数组。使用DBSCAN算法对文本向量进行聚类。eps是邻域半径,是形成核心点所需的最小样本数。fit方法对输入的向量进行聚类,并返回每个样本所属的簇标签。try:定义了一个 POST 请求的 API 路由,路径为。

AI的内部世界的博客 1069

聊聊HBase一些知识

HBase是一种分布式、可扩展的大数据存储系统,它是Hadoop生态系统中的一个重要组件。主要特征有:1. 面向列的存储:HBase存储以列族的方式存储数据,可以有效的存储非结构化和半结构化数据。2. 海量数据存储:HBase可存储数十亿行,数百万列的数据,是海量数据存储的好工具。3. 高并发:HBase基于Hadoop HDFS,可以支持高并发和实时读/写的场景。4. 高可扩展:HBase设计初衷就是要可扩展,可以线性扩展到很大的数据量和高吞吐量。

wangth0120的博客 1696

OpenClaw 自定义 Skill 开发完整指南(最新版)

OpenClaw 中的每个 Skill,本质是一套“能力描述 + 执行逻辑”的组合包,核心特征如下:核心载体:以文件夹为单位,文件夹内必须包含SKILL.md文件(能力描述核心);扩展文件:可选agent.py(Python 执行逻辑)、index.ts(TypeScript 执行逻辑)、(辅助文档/示例资源)等;核心优势:AI 通过阅读 SKILL.md 的自然语言描述理解技能,无需严格遵循代码接口,灵活度极高;

haolove527的专栏 2万+

浅淡HBase的ACID

http://archfan.sinaapp.com/2012/04/18/acid-in-hbase/ 浅淡HBase的ACID 作者: Neaton 日期: 2012 年 4 月 18 日 发表评论 (0) 查看评论 众所周知,ACID是指原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持久性(Durability)。 HB...

看的恐惧 959

Quuppa 如何引领蓝牙 ® 定位服务的全新发展方向

我们最优质的客户,是那些对其他实时定位系统(RTLS)的承诺感到失望、转而寻求 “能覆盖全业务场景的更广泛赋能技术” 的客户 —— 前文提到的消防车制造商就是典型案例:他们尝试并通过 Quuppa 的蓝牙方案取得了成功。我们希望业务合作伙伴(如系统集成商、解决方案提供商)能充分利用 Quuppa 智能定位系统的功能,为客户提供专属解决方案:无论是追踪微型标签、实现未来移动设备的 AoD 功能,还是基于 RSSI 的简单信标(信标作为物联网网关),这些功能都能让同一套 Quuppa 系统支持广泛的用例。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 833

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[翻译]HBase 中的 ACID

同前面翻译的一篇关联的,同作者的另一篇:ACID in HBase 这一篇不是单纯地描述一个问题,而是以 ACID 为主题,介绍了其在 HBase 中各个部分的体现及实现。 ACID,即:原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability)。 HBase 支持特定场景下的 ACID,即对同一行的 Put 操作保证完全的 A...

weixin_30689307的博客 188

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ACID in Hbase

About this Document Apache HBase (TM) is not an ACID compliant database. However, it does guarantee certain specific properties. This specification enumerates the ACID properties of HBase. De...

weixin_34072159的博客 127

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

《HBase实战》一2.8 ACID语义

本节书摘来异步社区《HBase实战》一书中的第2章,第2.8节,作者: 【美】Nick Dimiduk , Amandeep Khurana 译者: 谢磊 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.8 ACID语义 HBase实战如果使用过数据库系统,你会听说过各种数据库系统提供的ACID语义。ACID是当你搭建使用数据库...

weixin_34375233的博客 182

HBase1.2官方文档——ACID

原文链接:http://hbase.apache.org/acid-semantics.html 关于这篇文档 Apache HBase (TM) 不是一个适用于ACID的数据库。但是它可以保证特定的属性。这篇说明列举了HBase中ACID的属性 定义 为了共同的词汇表,我们定义以下术语: Atomicity原子性一个操作是原子的,它要么整体都完成,要么都不完成Consist...

weixin_30764137的博客 145

Hbase利用单行ACID,实现跨表跨库最终一致性,替代分布式事务

hbase只提供了单行ACID的事务,很多人梦想能实现跨行,跨表,甚至与其他数据源实现分布式事务。

sliang733的博客 3897

HBASE & DB : ACID 事务 与 相关实现

ACID 转载于:https://www.cnblogs.com/lailailai/p/4625811.html

weixin_30454481的博客 179

如何验证HBase二级索引的正确性?hindex测试体系与ACID保障方法

hindex 是一个纯 Java 实现的 **HBase 二级索引**开源方案,它通过协处理器(Coprocessor)在服务端自动维护一张独立的索引表。索引是"写时更新"的隐形机制,出错了往往要到查询结果不对才暴露。这篇文章带你走进 hindex 自带的**测试体系**:从单元测试、扫描正确性到 **ACID 并发保障**,看看这个项目是如何层层验证二级索引数据一致性的。 ## hindex测

gitblog_00078的博客 339

hbase java 排序_HBase排序顺序、列元数据以及联合查询

HBase排序顺序所有数据模型操作 HBase以排序顺序返回数据。首先按行,然后按列族(ColumnFamily),然后是列限定符,最后是时间戳(反向排序,因此首先返回最新的记录)。HBase列元数据ColumnFamily 的内部 KeyValue 实例之外不存储列元数据。因此,尽管 HBase 不仅可以支持每行大量的列数,而且还能对行之间的一组异构列进行维护,但您有责任跟踪列名。获得 Col...

weixin_34561662的博客 1599

谈谈HBase中的Transaction

起初是因为看了PingCAP的几篇博客,然后知道了所谓的NewSQL。后来发现自己对于OLTP中的一些技术点并不是特别了解,就决定从自己稍微熟悉一点的技术栈开始做一些探究。所以,这是数据库系列中的第一篇 :)。 ACID 评价一个数据库的事务性往往会从ACID四个方面来考虑,我们先简单看看ACID具体代表着什么含义: A -> Atomicity: 原子性。一个事务往往会包括多个操作,...

weixin_34417814的博客 431

HBase事务

众所周知,ACID是指原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持久性(Durability)。 HBase对同一行数据的操作提供ACID保证。HBASE-3584支持多操作事务,HBASE-5229支持多行事务,但原理都是一样的。 那么,HBase中的ACID是如何工作的呢? HBase采用MVCC来实现ACID,同时HBas

开心一刻的专栏 5411
下一篇: C++ Primer 第五版 读书笔记 第一章
techmonkey
博客等级 码龄14年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值