数据中心产品开发规范(8)

2019-04-22 22:03

开发规范(JAVA部分)

hbase(main)> create 'mytable',{NAME=>'colfam1', VERSIONS=>1}

你可以在同一个create语句里为列族指定多个属性,如下所示: hbase(main)> create

'mytable',{NAME=>'colfam1',VERSIONS=>1,TTL=>'18000'}

你也可以指定列族存储的最少时间版本数,如下所示: hbase(main)> create

'mytable',{NAME=>'colfam1',VERSIONS=>5, MIN_VERSIONS=>'1'}

在列族上同时设定TTL也是迟早有用的。如果当前存储的所有时间版本都早于TTL,至少MIN_VERSION个最新版本会保留下来。这样确保在你的查询以及数据早于TTL时有结果返回。

5.3 ColumnFamily列族设计

列族是针对多个列的分组,分组的依据是不固定的。虽然理论上HBase一个表可以创建多个列族,但是HBase官方建议一个表不要创建多于一个的列族。经过测试,单个列族的写入和读取效率要远远超过多个列族时的情况。在存储时,一个列族会存储成一个StoreFile,多个列族

本文档仅限内部使用,未经双方许可,请勿扩散到第三方。

第 35 页 共 40 页

开发规范(JAVA部分)

对应的多个文件在分裂时会对服务器造成更大的压力。所以建议,一个表创建一个列族。

列族的名称不宜过长,因为在存储时每列都会拼上列族名称,过长的列族将会浪费更多的存储空间。

删除列族时,将同时删除列族下的列及列值数据。

创建表时,最少要创建一个列族。创建表后,可以添加多个列族。 Version版本是针对列族而言的,如果一个表有多个列族,可以为每个列族设置不同的版本数量。譬如,允许列族A最多有5个版本,列族B最多有3个版本。

5.4 Qualifier列设计

HBase与传统的关系数据库一个明显的不同之处,就是创建表时不需要创建列,而是在写入数据时动态地创建列。而且其中的空列并不真正占用存储空间。

列内容被封装成为KeyValue对象,从中可以获取多个信息,如下所示:

//行键

String rowKey = Bytes.toString(kv.getRow()); //列族

String family = Bytes.toString(kv.getFamily()); //列名称

本文档仅限内部使用,未经双方许可,请勿扩散到第三方。

第 36 页 共 40 页

开发规范(JAVA部分)

String qualifier = Bytes.toString(kv.getQualifier()); //列值

String value = Bytes.toString(kv.getValue()); //版本号

long timestamp = kv.getTimestamp();

5.5 版本设计

如果表的某个列族涉及到多版本的问题,则必须在创建列族时指定MaxVersions。虽然,HBase默认的版本数是3,但是如果在创建表时没有明确指定,则仍然只能保存一个版本,因为HBase会认为你不想启用列族的多版本机制。

可以在写入数据时指定版本号,如果不指定版本号,则将采用默认的版本号,即时间戳。

读取数据时,如果没有指定版本号,将只读取最新版本数据,而非最新版本号的数据。

5.6 HBase命名规范

项目 说明 示例 ? 采用英文单词、阿拉伯数字的组合形? 式,其中,单词必须大写,并且首字符必须为英文字符,不能是数字。 根据项目名称构建命名空间:DLQX(电力气象首字母拼接形式),简短明了。 命名空间 本文档仅限内部使用,未经双方许可,请勿扩散到第三方。

第 37 页 共 40 页

开发规范(JAVA部分)

? 不建议用连接符(下划线)拼接多个? 单词,简单语义的可采用单个单词,复杂语义的可采用多个单词的首字母拼接。 不建议过长的命名空间名称,譬如不推荐采用以下形式:USER_INFO_MANAGE等。 ? ? 长度尽量限制在4~8字符之间。 命名空间一般可与项目名称、组织机构名称等保持一致。 ? 采用英文单词、阿拉伯数字、连接符? 符合规范的表名称: (_)的组合形式,其中,单词必须大写,USER_INFO_MANAGE、 并且首字符必须为英文字符,不能是数字,可用连接符拼接多个单词。 表名称 ? ? WEATHER_DATA、 长度尽量限制在8~16字符之间。 T_ELECTRIC_GATHER等。 尽量采用具有明确意义的英文单词,而不建议采用汉字的拼音字母或者拼音首字母组合。 ? 采用英文单词、阿拉伯数字的组合形? 式,其中,单词必须大写,并且首字符符合规范的列族名称: 列族名称 D1、D2、DATA等。 必须为英文字符,不能是数字。 ? 长度尽量限制在1~6字符之间,过? 不推荐的列族名称: 本文档仅限内部使用,未经双方许可,请勿扩散到第三方。

第 38 页 共 40 页

开发规范(JAVA部分)

长的列族名称将占用更多的存储空间。 USER_INFO、D_1等。 ? 采用英文单词、阿拉伯数字、连接符? 符合规范的列名称: (_)的组合形式,其中,单词必须大写,USER_ID、DATA_1、REMARK等。 并且首字符必须为英文字符,不能是数字,可用连接符拼接多个单词。 列名称 ? ? ? 不推荐的列名称: 长度尽量限制在1~16字符之间。 尽量采用具有明确意义的英文单词,而不建议采用汉字的拼音字母或者拼音首字母组合。 UserID、1_DATA等。

本文档仅限内部使用,未经双方许可,请勿扩散到第三方。

第 39 页 共 40 页


数据中心产品开发规范(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016-2017学年度第一学期小主持人社团活动教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: