Lindorm CQL是一种类型化语言,支持丰富的数据类型集。本文档主要介绍了Lindorm CQL支持的数据类型。

基础数据类型

数据类型 支持的常量 描述
bigint integer 64-bit singed long值
blob blob 任意长度的bytes
boolean boolean 取值:true或者false
counter integer Counter列(64-bit signed的值)
date integer, string 日期时间
decimal integer, float 可变精度十进制
double integer, float 64-bit IEEE-754 floating值
float integer, float 32-bit IEEE-754 floating值
inet string IP地址,可以为IPV4和IPV6。由于没有ip类型,所以输入为String进行存储。
int integer 32-bit signed int
smallint integer 16-bit signed int
text string UTF8编码的字符串
time integer, string 时间类型,纳秒精度
timestamp integer, string 时间戳,精度是毫秒
timeuuid uuid 版本1 UUID,通常用作无冲突时间戳
tinyint integer 8-bit signed int
uuid uuid 一个UUID
varint integer 任意精度整数
nested string 支持json字符串的嵌套类型

Counter

计数器类型用于定义计数器列。Lindorm的counter和Cassandra的counter是有一定区别的,Cassandra的counter表只允许包含counter列,但是Lindorm CQL的表允许counter列和非counter列共存。示例如下:
CREATE TABLE persioninfo  (name text primary key, age counter, address text);
UPDATE persioninfo SET age = age + 2 WHERE name = 'my';
INSERT INTO persioninfo  (name, age, address) VALUES ( 'my', 30, 'hz');

Timestamp

允许输入int数据类型的数据以及string类型的字符串,用来表示某一个时间点。下面的示例用来表示:2011年03月2号 04:05:00AM GMT。
CREATE TABLE persioninfo ( name text PRIMARY KEY , birthtime timestamp , address text );
INSERT INTO persioninfo (name, birthtime, address) VALUES ( 'my', 1299038700000, 'hz');
INSERT INTO persioninfo (name, birthtime, address) VALUES ( 'mm', '2011-03-02 04:05+0000', 'hz');
INSERT INTO persioninfo (name, birthtime, address) VALUES ( 'lucy', '2011-03-02 04:05:00+0000', 'bj');

Time

支持int以及string表示times的数据类型,如果是string表示时间的话,格式为hh:mm:ss[.fffffffff],其中[.fffffffff]是可选的。示例如下:
CREATE TABLE persioninfo ( name text PRIMARY KEY , birthtime time , adress text );
INSERT INTO persioninfo (name,birthtime,adress) VALUES ( 'lili', '08:12:54', 'hz');

date

支持使用int以及string表示date数据类型。如果使用string表示的date类型,格式为yyyy-mm-dd。示例如下:
 CREATE TABLE persioninfo ( name text PRIMARY KEY , birthday date , address text );
 INSERT INTO persioninfo (name,birthday,address) VALUES ( 'lucy', '2021-02-01', 'beijing');

nested

嵌套类型。在建表的时候可以指定对应的列为nested,该类型的数值支持按照String写入Json数据,支持执行select搭配search_query语句进行嵌套类型的子查询,需要结合Lindorm的search index功能一起使用,需要注意的是describe出来该列暂时还是text类型。此外,nested类型在开源侧driver展示的还是text数据类型。示例如下:
 CREATE TABLE persioninfo ( name text PRIMARY KEY , info nested , address text );
 CREATE SEARCH INDEX  sidx ON ctable3 WITH COLUMNS (info ,address );
 INSERT INTO ctable3 (name,info,address) VALUES ( 'lilei', '{"school":"alibaba"}', 'hz');
 SELECT * FROM ctable3 WHERE search_query = '{+address:hz}';

暂时不支持的数据类型

  • 集合数据类型:SET、LIST、MAP
  • 用户自定义类型:User-Defined Types
  • 基础数据类型:durations