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

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

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

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

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

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

相关推荐
Elastic 中国社区官方博客1 小时前
搜索倍增器:推动收入、生产力和 AI 实现规模化
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
wjkjpcba1 小时前
机器人控制板PCBA怎么加工?从SMT贴片到BGA焊接解析机器人电子制造工艺
大数据·人工智能
Capricorn19883 小时前
解决全网抄 Karpathy 导致的 LLM Wiki 污染?基于知芽 Notebook Skill 的 raw/ 笔记法排障指南
大数据·论文阅读·人工智能·笔记·论文笔记
保定公民3 小时前
达梦数据库存储过程中的数组类型详解:基础数组与记录数组的差异化应用
数据库·达梦·存储过程·达梦数据库·dm8·dm
梦Arrebol3 小时前
Redis 内容及相关实验
数据库·redis
临沂GEO4 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白4 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
吴声子夜歌4 小时前
Java面试——HBase原理及应用
java·面试·hbase
人民新视野4 小时前
党建引领促交流 互学互鉴共提升 —— 赴启信创格(北京)营销科技有限公司交流学习活动总结
大数据·人工智能·科技