💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
![](https://img.kancloud.cn/49/9b/499b32fbaf1912f8206b5438c440ff44_799x438.png) 我们都知道 HBase 是一个可以随机读写的数据库,而它所基于的持久化层HDFS 却是要么新增,要么整个删除,不能修改的系统。那 HBase 怎么实现我们的增删查改的?真实的情况是这样的:HBase 是一种 Log-Structured Merge Tree架构模式,HBase 几乎总是在做新增操作。当你新增一个单元格的时候,HBase在 HDFS 上新增一条数据。当你修改一个单元格的时候,HBase 在 HDFS 又新增一条数据,只是版本号比之前那个大(或者你自己定义)。 当你删除一个单元格的时候,HBase 还是新增一条数据!只是这条数据没有 value,类型为 DELETE,这条数据叫墓碑标记 (Tombstone)。真正的删除发生在什么时候,由于数据库在使用过程中积累了很多增删查改操作,数据的连续性 和顺序性必然会被破坏。为了提升性能,HBase 每间隔一段时间都会进行一次合并(Compaction),合并的对象为 HFile 文件。另外随着数据写入不断增多,Flush 次数也会不断增多,进而 HFile 数据文件就会越来越多。然而,太多数据文件会导致数据查询 IO 次数增多,因此 HBase 尝试着不断对这些文件进行合并。<br/> Log-Structured Merge Tree架构模式: >1. Log-Structured Merge (LSM) >2. 区别于传统数据库的更新现有数据 >3. 使用类似日志结构合并(LSM)的方式 >4. 只需要将值写到Log的末尾然后进行排序 >5. 优点:插入和更新数据非常快 >6. 缺点:占用更多空间 | | 传统数据库 | LSM系统 | | --- | --- | --- | | 特点 | 直接更新现有数据随机读写 | 将值写到Log末尾并合并通过顺序读写提高性能 | | 示例 |Hello my name is Bruce(Heather) | Hello my name is Bruce <br/> Hello my name is Heather |