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'不设置即可。
创建列簇详情如下图所示: