zoukankan      html  css  js  c++  java
  • Hbase TTL(Time To Live)详解

    一、概念解析:TTL:time to live,存活时间

    二、Hbase TTL设置的两种方式:

      1) ColumnFamily TTL

      2) Cell TTL

    三、ColumnFamily TTL详解

      create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 30, BLOCKCACHE => true},{NAME => 'f2',VERSIONS => 1,BLOCKCACHE => true}

      解析:

        f1列簇下的所有cell的存活时间为30秒,从最后一次更新开始计时

        f2列簇下的所有cell的存活时间为默认值,TTL => 'FOREVER'

      实例演示:

        1、创建测试使用的表

          create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 30, BLOCKCACHE => true},{NAME => 'f2',VERSIONS => 1,BLOCKCACHE => true}

        2、插入数据

          put 't1','0001', 'f1:name','123'

          put 't1','13954059087', 'f2:name','123'

        3、查看表数据

          

        4、30秒之后查看

          

        5、修改 VERSIONS => 3,查看效果

          disable 't1'

          alter 't1',NAME => 'f1',VERSIONS => 3

          enable 't1'

          describe 't1'

          添加数据:

          put 't1','0001', 'f1:name','1'

          put 't1','0001', 'f1:name','2'

          put 't1','0001', 'f1:name','3'

         插入三条数据稍微存在一点间隔,便于发现规律,我们这里设置TTL为30秒(间隔略短,为了测试方便)

            执行语句:

          get 't1','0001',{COLUMN=>'f1:name',VERSIONS=>3}

        

       

    四、Cell TTL详解  

            1.0.0, 0.98.9版本及以后可以使用这个特性。

      

        val put = new Put(Bytes.toBytes(keyPhone))
        put.addColumn(Bytes.toBytes(Constants.TB_HBASE_FAMILY), Bytes.toBytes(colName), Bytes.toBytes(colValue.toString))
        put.setTTL(0L)  // 在这里可以使设置,Cell TTL

      查看源码这个值,是通过Mutation来设置的。
        public Mutation setTTL(long ttl) {
    setAttribute(OP_ATTRIBUTE_TTL, Bytes.toBytes(ttl));
    return this;
    }

    五、 总结

      ColumnFamily TTL和 Cell TTL的区别:

      1)时间单位的区别:

        ColumnFamily TTL的时间单位是:秒

             Cell TTL的时间单位是:毫秒

      2)优先级的问题:

        Cell TTL设置的值,优先于ColumnFamily TTL的值,但是需要注意的是,Cell TTL不能大于ColumnFamily TTL的值。

      如果使用ColumnFamily TTL,则TTL值对该列簇下面的所有列,都起作用,包括多版本的值。Cell TTL针对当前列起作用。

  • 相关阅读:
    11.枚举类.md
    10. Lambda表达式.md
    9.内部类
    8.抽象类、接口和多态.md
    7.final关键字.md
    jQuery学习笔记(5)-事件与事件对象
    Log4Net学习笔记(1)-完整的例子
    SqlServer知识点-操作xml
    NHibernate常见错误汇总(0)-持续更新中
    jQuery学习笔记(4)-设置元素的属性和样式
  • 原文地址:https://www.cnblogs.com/dreamfor123/p/8806351.html
Copyright © 2011-2022 走看看