4.2. LSQL数据类型

4.2.1 SQL语句与表名、字段名

  • 表名与字段名区分大小写,若表名和字段名为大写字母,则查询语句中表名、字段名必须为大写;
  • 表名及字段名可以有数字、字母、下划线组成,不能以数字及_或者特殊字符开头,只能以字母开头;
  • 表名和字段名不能包含关键词,如 or、and等;
  • 分区:partition 不能大写;
  • 基于RamIndexFilter的筛选:RamIndexFilter@0000000001:10240:over_rand@ 不能大写。

4.2.2 isdmpn 含义

i      表示 进行索引 indexed
s      表示 进行了行存储 stored
d      表示 进行了列存储 docValues
m      表示 多值列  
p      表示 存储了词的偏移量 可以进行词的顺序模糊匹配
n      表示 既不索引也不存储(背景是:抛弃一些不需要的字段)

4.2.3 行存储于列存储

LSQL 数据库支持行存、列存、行存加列存。根据不同的业务场景使用不同的存储方式能够提高业务效率。

  • 行存:只做查询(只有 select),不统计的情况下(count、avg、sum)推荐使用行存。

  • 列存:做统计功能时,需要统计的字段必须为列存,行存无法使用。

  • 字段做行存查询走行存,字段做列存查询走列存

    字段做行存加列存查询时,查询的字段数以12为分界点,当查询的字段数小于 12 个时,查询优先走列存,当查询的字段数大于12 个时,查询优先走行存

    就单独查询而言查询的字段小于12 个,列存类型效率高,查询的字段大于12 个,行存类型效率高。

    带索引:可以走null匹配(采用暴力扫描,如果值比较多会触发过载保护,出现is null和is not null两者之和不等于总值的情况)

    仅行存储:不可以走null匹配

    带有列存储:可以走null匹配

4.2.4 基本数据类型

基本类型的存储方式有按列存储与按行存储两种方式;

4.2.5 分词类型

默认lsql可以支持所有的lucene的分词格式,也支持自定义的分词,由于分词格式理解比较难,默认仅暴露出text,textik,wildcard4类型。

4.2.6 多值列类型

  1. 多值列形式

    多值列适合在一个列里面存储多个值,如存储一个标签数组。

    • 多值列返回的值无序。
    • 字符串多值列是去重的,int型是不去重。
    • 多值列的数据请按照json数组传递如["北京","上海"]。

  2. 控制返回多值列结果格式

    在/opt/software/lsql/config/site/lsql-site.properties配置文件加入以下参数:

    • sys.multival.join=space(此参数代表多值列返回结果按照空格分隔形式返回)

    • sys.multival.join=json (此参数代表多值列返回结果按照json数组形式返回,默认为此参数)

    更新完配置文件需要重启LSQL。

4.2.7 对于时间的高效处理

数据里面时间格式是yyyy-MM-dd hh:mm:ss。

  1. lsql没有时间类型,应该怎么处理

    可以用tlong类型代替时间类型存储的值转换成 yyyyMMddhhmmss ,这样是定长的,而且可读性好(比unix时间戳可读性好)。如果时间精度是秒,毫秒,纳秒的话一定要使用 tlong(范围查找以及排序比long快很多倍,但会占用较多的存储空间),如果是天,小时的话,可以使用long 节省存储空间。

  2. 常见的用于时间操作的转换函数

    cast (from_unixtime(unix_timestamp(substring(recevicetime,0,18),'dd-MMM-yy HH.mm.ss'),'yyyyMMddHHmmss') as bigint),
    cast (from_unixtime(unix_timestamp(substring(recevicetime,0,18),'dd-MMM-yy HH.mm.ss'),'yyyyMMddHHmm')as bigint),
    cast (from_unixtime(unix_timestamp(substring(recevicetime,0,18),'dd-MMM-yy HH.mm.ss'),'yyyyMMddHH')as bigint) ,
    select (2017-cast(substring('201831198307123487',7,4) as bigint) );
    
Copyright © lucene.xin 2020 all right reserved修改时间: 2021-07-09 10:32:34

results matching ""

    No results matching ""