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

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

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

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

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

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

相关推荐
acrel78 小时前
安科瑞Acrel-1000变电站综合自动化系统在合肥某新材料公司35kV综合自动化项目中的应用分析
大数据·人工智能
V哥AI增长8 小时前
小红书笔记在生成式AI引擎中的可见性机制解析:从抓取原理到GEO工程化实践
大数据·人工智能·笔记
long3168 小时前
MySQL 学习练习(配套 01 入门资料)
数据库·学习·mysql
数据库小学妹9 小时前
数据库等保三级和四级有什么区别?从访问控制到备份恢复的完整对比
数据库·安全·数据库安全·三级等保·等保合规·四级等保
看浪的路人10 小时前
第3讲:手写第一个 MCP Server(Python SDK)
jvm·数据库·oracle
大眼、不聚光11 小时前
5.mysql--主从同步安装部署
数据库·mysql
SimLine芯见11 小时前
以可靠性为中心的RCM KVM远程管控在多行业高端制造中的应用
大数据·人工智能·制造
Yan_chen66611 小时前
SQL-LABS_Less18-20实战攻略
数据库·sql·web安全·网络安全
oradh11 小时前
Oracle RAC OCR维护操作总结
数据库·oracle·ocr·rac ocr维护·ocr维护·vote disk
snow@li12 小时前
HikariCP:高性能数据库连接池全景深入梳理
java·数据库