Hbase表结构

1、Hbase表结构:可以看成map,里面有行键,行键是按照字母顺序排序。行键下面是列族,每个列族可以有不同数量的列甚至是没有列。每个列里面包含着不同时间版本的列的值。

  行键:是按照字母的顺序排序的,这样做的好处就是在扫描表的时候感兴趣的项,是在相邻的。给定的行可以在每个列族中有任意数量的列,或者根本没有列,不能用二维表的思想去想象。

       列族:以把它想象成map的map。一个列族可以有任意数量的列。

      最后一个维度是时间。所有数据都使用整数时间戳(从epoch开始的秒数)或您选择的另一个整数进行版本控制。客户端可以在插入数据时指定时间戳。

{
  // ...
  "aaaaa" : {
    "A" : {
      "foo" : "y",
      "bar" : "d"
    },
    "B" : {
      "" : "w"
    }
  },
  "aaaab" : {
    "A" : {
      "foo" : "world",
      "bar" : "domination"
    },
    "B" : {
      "" : "ocean"
    }
  },
  // ...
}

  在大多数情况下,每个列族可能有自己的规则来决定一个给定单元格要保留多少个版本(一个单元格由它的rowkey/列对标识),应用程序将简单地请求给定单元格的数据,而不指定时间戳。在这种情况下,Hbase/BigTable将返回最新的版本(具有最高时间戳的版本),因为它按时间倒序存储它们。

  如果应用程序在给定的时间戳上请求给定的行,Hbase将返回时间戳小于或等于所提供的单元格数据。

  使用我们假想的Hbase表,查询“aaaaa”/“A:foo”的行/列将返回“y”,而查询“aaaaa”/“A:foo”/10的行/列/时间戳将返回“m”。查询“aaaaa”/“a:foo”/2的行/列/时间戳将返回空结果。

{
  // ...
  "aaaaa" : {
    "A" : {
      "foo" : {
        15 : "y",
        4 : "m"
      },
      "bar" : {
        15 : "d",
      }
    },
    "B" : {
      "" : {
        6 : "w"
        3 : "o"
        1 : "w"
      }
    }
  },
  // ...
}

https://dzone.com/articles/understanding-hbase-and-bigtab

猜你喜欢

转载自www.cnblogs.com/guoyu1/p/12031180.html