5.2.5. 基本使用

1. 两种列簇存储方式

  • 启用行存数据-索引外的-列簇存储='store@true'
  • 启用索引内-索引数据-列簇存储='index@true'

2. 列簇使用语法

(1) 旧版创建方式
create columnfamily physical_table_name (
default at 'index@true' 'store@true' 'ssdindex@tim,doc' 'ssdindex2@fdt,fdx' 'cleanday@200,yyyyMMdd',
cf_name_01 at 'fields@col_001,col_002' 'index@false' 'cleanday@150,yyyyMMdd',
cf_name_02 at 'fields@col_003,col_004,col_005' 'store@false' 'cleanday@100,yyyyMMdd',
cf_name_03 at 'fields@col_006,col_007,col_008' 'cleanday@60,yyyyMMdd'
);
  • create columnfamily:语法关键字。
  • physical_table_name: 物理表名称,可变。
  • cf_name_0*:列簇名称,可变。
  • default:默认列簇管理策略。
  • fields:字段列表,物理表中的字段;不能对MAPPING对象(映射表)做列簇管理。
  • index:索引列簇,true代表需要索引列簇管理,false代表不需要索引列簇管理;不写默认为true。
  • store:数据列簇(行存储列簇),true代表需要数据列簇管理,false代表不需要数据列簇管理;不写默认为true。store只对行存数据起作用,列存数据不可用。
  • ssdindex、ssdindex2、ssdindex3:异构特性设置,参考4.2协同存储章节。
  • cleanday:列簇保存周期,用作数据清理淘汰。

注:后面的属性由于含有逗号,而逗号是sql的关键字,需要用单引号括起。如果需要修改列簇的保存周期,只需根据原有的脚本修改天数,重复执行创建即可。

(2) 新版创建方式

新增在创建表时直接指定列簇信息(具体内容参照旧版),建立列簇表,格式如下:

create table lsql_column(col1 y_string_is,col2 y_string_is,col3 y_string_is,col4 y_string_is)tableproperties(
columnfamily='default at index@true store@true ssdindex@tim,doc ssdindex2@fdt,fdx cleanday@200,yyyyMMdd'
,columnfamily='cf1 at fields@col1 index@false cleanday@150,yyyyMMdd'
,columnfamily='cf2 at fields@col2,col3 store@false cleanday@100,yyyyMMdd'
,columnfamily='cf3 at fields@col4 cleanday@60,yyyyMMdd');

注:同时兼容旧版列簇创建方式。

3. 列簇创建实例

(1) 创建物理表

进入lsql所在节点:

cd /opt/software/lsql/bin
./beeline.sh

创建物理表“physical_table_test”:

create table physical_table_test(
col_001 y_string_id,
col_002 y_string_id,
col_003 y_string_id,
col_004 y_string_id,
col_005 y_string_id,
col_006 y_string_id,
col_007 y_string_id,
col_008 y_string_id,
col_009 y_string_id,
col_010 y_string_id
);

物理表详情如下图所示:

(2) 创建物理表“physical_table_test”的列簇

create columnfamily physical_table_test (
default at 'index@false' 'store@false' 'ssdindex@tim,doc' 'ssdindex2@fdt,fdx' 'cleanday@200,yyyyMMdd',
cf1_2 at 'fields@col_001,col_002' 'ssdindex@tim,tip' 'ssdindex2@doc' 'cleanday@150,yyyyMMdd',
cf3_5 at 'fields@col_003,col_004,col_005' 'index@false' 'cleanday@100,yyyyMMdd',
cf6_8 at 'fields@col_006,col_007,col_008' 'store@false' 'cleanday@60,yyyyMMdd',
cf9_10 at 'fields@col_009,col_010' 'cleanday@20,yyyyMMdd'
);

根据上面的代码我们可以获取到的信息为:

  • 列簇cf1_2:“col_001,col_002”字段做一个列簇,其中索引的“tim,tip,doc”做异构存储;列簇存储周期为150天。
  • 列簇cf3_5:“col_003,col_004,col_005”字段做一个列簇,数据进行列簇,索引不做列簇管理;列簇存储周期为100天。
  • 列簇cf6_8:“col_006,col_007,col_008”字段做一个列簇,数据不做列簇管理,索引进行列簇管理;列簇存储周期为60天。
  • 列簇cf9_10:“col_009,col_010”字段做一个列簇;数据存储周期为60天。
  • 列簇default:数据不做列簇,索引不做列簇,其中索引的“tim,doc,fdt,fdx”做异构存储;列簇存储周期为200天。

注:如果只对个别列进行列簇定期清理数据处理,那只对个别列进行设置即可,其他列的存储策略走默认default路线存储 ,数据永久存储时:'cleanday@200,yyyyMMdd'不设置即可。

创建列簇详情如下图所示:

Copyright © lucene.xin 2020 all right reserved修改时间: 2021-07-02 11:42:23

results matching ""

    No results matching ""