关于Hbase多版本存储的一个注意点

HBase是一个多版本管理系统。0.96版本前,每列默认保留3个版本;之后默认为1个版本。版本通过插入时的时间戳区分,存储层按时间戳降序排列,因此默认查询始终返回最新数据,除非指定时间范围。

常用的Put和Delete API默认使用当前系统时间戳,也可以手动指定。但非必要不建议自定义时间戳,否则可能引发异常。

例如,若Put时设置时间戳为Long.MAX_VALUE,后续插入、更新或删除时未传入更大时间戳,由于版本数限制(如1个),HBase会认为新操作属于旧版本,无法覆盖已有数据,导致所有变更无效,甚至删除操作也失效。这时无论执行多少次删除,数据都不会被清除。

需注意,Put和Delete的带时间戳构造方法是为列族或列统一设置时间戳,并非RowKey的时间。若列级别也指定了时间戳,则优先使用列级设置。

总之,HBase的多版本机制强大实用。使用时应尽量避免随意修改默认时间戳逻辑。若确需自定义,必须确保后续所有操作的时间戳均大于首次插入值,否则修改不会生效。当发现删除或更新无法生效时,在排除代码问题后,应优先检查操作时间戳是否小于现有数据版本。再次强调,除非业务明确要求,否则不建议在插入时主动设置时间戳。

相关推荐
大大大大晴天3 小时前
每天认识一个组件:ClickHouse
大数据
zwjapple4 小时前
skill总结
大数据·elasticsearch·搜索引擎
I Am a robert girl4 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒5 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
百年江湖随意沉浮5 小时前
DATA AI · 数据可视化
大数据
SelectDB5 小时前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析
SelectDB6 小时前
拿 Planet 的账单一行行对下来,我总结出三个可自查的校验点
大数据·数据库·数据分析
SelectDB6 小时前
Apache Doris + Vane:让多模态数据进入业务分析
大数据·数据库·数据分析
考拉讲支付6 小时前
延迟分账 / 核销分账的技术实现方案:服务完成后再分钱,到底怎么设计?
大数据·运维·人工智能·微信小程序·小程序·系统架构
大大大大晴天️6 小时前
Agent Loop 深度解析:理解、规划、行动、观察与纠错
大数据·ai-agent