hbase 列族 版本数,TTL和二级索引

版本数量

最大版本数量

通过HColumnDescriptor为每个列族配置要存储的最大行数版本为最大版本默认值为1。这是因为在所描述的一个重要参数,数据模型部分的HBase也没有覆盖行的值,但每行而存储不同的值按时间(和限定)。在重要的压缩过程中删除多余的版本。最大版本的数量可能需要根据应用需求增加或减少。

不建议将最高版本数设置为极高的级别(例如,数百或更多),除非这些旧值对您非常重要,因为这会大大增加StoreFile大小。

最小版本数量

像行版本的最大数量一样,通过HColumnDescriptor为每个列族配置要保留的最小行数版本min版本的默认值为0,这意味着该功能被禁用。行版本参数的最小数量与生存时间参数一起使用,并且可以与行版本数量参数组合,以允许诸如“保留最后T分钟值数据,最多N个版本,但是至少保留M个版本 “(其中M是最小行数的值,M <N)。此参数只应在为列族启用生存时间时设置,并且必须小于行版本的数量。

生存时间(TTL)

ColumnFamilies可以以秒为单位设置TTL长度,一旦达到到期时间,HBase将自动删除行。这适用于所有版本的行 - 即使是当前版本。在该行的HBase中编码的TTL时间以UTC指定。

存储仅包含过期行的文件将在小型压缩中删除。设置hbase.store.delete.expired.storefilefalse禁用此功能。将最小版本数设置为0以外的值也会禁用此功能。

最近的HBase版本也支持设置时间以每个单元为基础生存。

单元TTL处理和ColumnFamily TTL之间有两个显着的区别:

  • 单元TTL以毫秒为单位而不是秒。

  • 单元TTL不能将一个单元的有效生命周期延长超过ColumnFamily级TTL设置。

二级索引

过滤查询

根据具体情况,可能适合使用客户端请求过滤器在这种情况下,不会创建二级索引。但是,请不要在应用程序(如单线程客户端)上对这样的大表进行全面扫描。

定期更新二级索引

二级索引可以在另一个通过MapReduce作业定期更新的表中创建。该工作可以在一天内执行,但根据加载策略,它可能仍然可能与主数据表不同步。

双写二次索引

另一种策略是在将数据发布到集群时构建二级索引(例如写入数据表,写入索引表)。如果这是在数据表已经存在之后采取的方法,那么对于具有MapReduce作业的二级索引将需要引导

汇总表

在时间范围非常广泛的情况下(例如,长达一年的报告)以及数据量大的地方,总结表是一种常见的方法。这些将通过MapReduce作业生成到另一个表中。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值