Hyperbase Shell指令为Hyperbase表创建、生成和删除全局索引

  使用配置
内容纲要

概要描述

本节我们将介绍如何使用Hyperbase Shell指令为Hyperbase表创建、生成和删除全局索引

详细说明

一. 创建全局索引

# 语法
add_index 'table', 'global_index_name', 'index_definition'
# 该语句为指定表 table添加全局索引,生成一张索引表,索引表的表名将是 table_global_index_name(注意区分索引名和索引表名);
# index_definition为索引的定义,用于指示Hyperbase如何建索引

# 索引的定义形式如下:
COMBINE_INDEX|INDEXED= cf:cq:n[|cf:cq:n|...]|rowKey:rowKey:m,[UPDATE=true]

# 说明
- cf:cq:n 指定生成索引所用的列以及索引长度:cf 是该列所在的列族,cq 是该列的列限定符,n 是索引字段在索引词条中的长度。例如 f1:q1:n1 为表中每一行记录用 f1:q1 列的数据生成的一段长度为n1字段放在索引词条中。如果指定的 f1:q1 列的值长度不足n1,Hyperbase将用0表示空格将长度补足。如果长度超过n1,超过的部分将在索引词条的末尾添上;
- 如果需要使用多列生成索引,可以在定义中添加多组 cf:c:n,组之间用 | 隔开;
- 每个生成的索引词条中都会包含一段原表Row Key生成的长度为m的字段,由 rowKey:rowKey:m 指定;
- [UPDATE=true] 为可选项,设为true代表索引词条会随着对应原表数据的更新自动更新,设为false则不会;

1.1 用单列创建全局索引

对bi表用 ps:nm 列创建名为 psnmindex 的索引。索引词条中 ps:nm 对应字段长度为8,rowKey对应字段长度为10。创建的索引表表名为 bi_psnmindex。

add_index 'bi','psnmindex','COMBINE_INDEX|INDEXED=ps:nm:8|rowKey:rowKey:10'

1.2 用多列创建全局索引

对bi表用 ps:nm 和 ps:pw 两列创建名为 psnmpwindex 的索引。索引词条中 ps:nm 对应字段长度为8,ps:pw 对应字段长度为9,rowKey对应字段长度为10。创建的索引表表名为 bi_psnmpwindex。

add_index 'bi','psnmpwindex','COMBINE_INDEX|INDEXED=ps:nm:8|ps:pw:9|rowKey:rowKey:10,UPDATE=true'

二. 生成全局索引

Hyperbase中可以直接为全表生成全局索引: rebuild_global_index ;也可以按表的Row Key分段生成索引: rebuild_global_index_with_range 。但是,在数据量较大时, rebuild_global_index_with_range 生成索引的性能更优。

2.1 全表生成全局索引

# 语法
rebuild_global_index 'table','index_name'

# 示例
rebuild_global_index 'bi', 'psnmindex'

2.2 分段生成全局索引

在Hyperbase表非常大时,可以分段生成全局索引,指令为 rebuild_global_index_with_range,为指定的Row Key区间中的记录生成索引。

# 语法
# start_key 为区间的下限,end_key 为区间的上限
# 该指令为[start_key, end_key) 左闭右开 区间生成索引;
# Encoder为编码方式,表示'start_key'和 'end_key'的输入类型,目前支持’string'、'hex’和’binary’三种,默认使用’string’来编码。
rebuild_global_index_with_range 'table','index_name', 'start_key', 'end_key','encoder'

# 示例
# 默认使用string来编码start_key和end_key示例
rebuild_global_index_with_range 't1', 'index_name', 'rowkey1', 'rowkey2'
rebuild_global_index_with_range 't1', 'index_name', 'rowkey1', 'rowkey2', 'string'

# 使用二进制编码start_key和end_key示例
# 可从60010界面中的user tables列表里,选取region的start_key和end_key,直接拷贝下来即可。
rebuild_global_index_with_range 't1', 'index_name', '\x00\x00\x00\x00\x1D', '\x00\xC1\xF2\xF1\x8C', 'binary'

三. 查看全局索引

# 语法
scan 'index name'

# 示例
scan 'bi_psnmindex'

四. 删除全局索引

# 语法
delete_global_index 'table name', 'index name'

# 示例
delete_global_index 'bi', 'psnmindex'

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。