Lindorm-cqlsh是云原生多模数据库 Lindorm团队基于Cassandra cqlsh修改后提供的Shell工具,提供Windows版本和Unix版本。您可以在本地或ECS上安装Lindorm-cqlsh工具,通过Lindorm-cqlsh连接并访问Lindorm宽表引擎。
前提条件
- 已将客户端的IP地址添加至Lindorm白名单。 
- 已获取云原生多模数据库 Lindorm宽表引擎的CQL连接地址,具体操作请参见查看连接地址。  
- 已下载并解压Lindorm-cqlsh。 - 如果应用部署在ECS实例,您需要确保云原生多模数据库 Lindorm实例和ECS实例满足以下条件,以保证网络的连通性。ECS实例信息的查看方法请参见查看实例信息。 - 所在地域相同,并建议所在可用区相同(以减少网络延时)。 
- 网络类型相同。 
 
基本命令
访问Lindorm宽表支持以下Lindorm-cqlsh命令。
Documented shell commands:===========================
CAPTURE  COPY  DESCRIBE  LOGIN   DESC  EXIT  HELP PAGING  SHOW
CQL help topics:================
CREATE_KEYSPACE        TEXT                ALTER_KEYSPACE           TIME       CREATE_ROLE
DROP_USER              TIMESTAMP           ALTER_TABLE              CREATE_TABLE
GRANT                  ALTER_USER          INSERT                   UPDATE   
CREATE_USER            INSERT_JSON         USE                      ASCII
DATE                   INT                 UUID                     BATCH
DELETE                 JSON                BEGIN                    KEYWORDS        
BLOB                   DROP_COLUMNFAMILY   LIST_PERMISSIONSBOOLEAN  LIST_ROLES      
COUNTER                DROP_INDEX          LIST_USERS               DROP_KEYSPACE   
PERMISSIONS            CREATE_COLUMNFAMILY REVOKE                   DROP_ROLE                 
SELECT                 CREATE_INDEX        DROP_TABLE                SELECT_JSON操作步骤
- 执行以下命令将Lindorm-cqlsh与云原生多模数据库 Lindorm连接。 - bin/cqlsh <host> <port> -u <username> -p <password>说明- 建议将bin/cqlsh所在的目录Python环境的版本设置为python2.7.x版本。 
- <host>:在云原生多模数据库 Lindorm控制台上获取的宽表引擎CQL连接地址,例如 - ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com。
- <port>:云原生多模数据库 Lindorm宽表引擎的CQL连接地址端口号,默认为9042。 
- <username>:Lindorm宽表引擎的用户名,默认为root。 
- <password>:Lindorm宽表引擎用户名对应的密码,如果您忘记密码,可以通过集群管理系统重置密码。 
- 云原生多模数据库 Lindorm支持多种Lindorm-cqlsh的访问命令,更多信息您可以通过 - bin/cqlsh -help命令查看。
 
- 通过Lindorm-cqlsh创建keyspace。Lindorm中的keyspace与关系型数据库中的database概念类似,一个keyspace可以包含一个或多个表格或列簇。 - CREATE KEYSPACE test_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};- 创建成功后执行以下语句查看keyspace: - DESCRIBE KEYSPACE test_keyspace;
- 使用USE命令切换至目标keyspace。 - USE test_keyspace;- 返回以下信息: - cqlsh:test_keyspace>
- 通过Lindorm-cqlsh访问Lindorm宽表的代码示例如下: - 通过Lindorm-cqlsh创建表格test_user。表格中包含first_name和last_name两个字段,字段的数据类型为text,并且first_name是这张表的PRIMARY KEY。 - CREATE TABLE test_user(first_name text, last_name text, PRIMARY KEY (first_name));说明- 创建表格操作前如果您没有执行 - USE test_keyspace;命令,可以通过以下语句创建表格。- CREATE TABLE test_keyspace.test_user(first_name text, last_name text, PRIMARY KEY (first_name));
- 查看表test_user的详细信息。 - DESCRIBE TABLE test_user;- 返回以下信息: - CREATE TABLE test_keyspace.test_user ( first_name text PRIMARY KEY, last_name text ) WITH bloom_filter_fp_chance = 0.01 AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} AND comment = '' AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} AND crc_check_chance = 1.0 AND dclocal_read_repair_chance = 0.1 AND default_time_to_live = 0 AND gc_grace_seconds = 864000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 0 AND min_index_interval = 128 AND read_repair_chance = 0.0 AND speculative_retry = '99PERCENTILE';说明- DESCRIBE TABLE命令将创建表语句以格式化的形式显示出来,除了您制定的配置项,还包含一些默认的配置项。Lindorm表级别的配置和Cassandra部分属性是不一样的,对于不一样的属性使用Cassandra CQL默认配置展示。 - Lindorm表级别无使用意义的配置项为: - crc_check_chance、gc_grace_seconds、read_repair_chance、speculative_retry、dclocal_read_repair_chance、crc_check_chance。
- 完全兼容的配置项为: - compression、default_time_to_live。
 
- 在表test_user中插入数据。 - INSERT INTO test_user (first_name, last_name) VALUES ('test', 'LINDORM'); INSERT INTO test_user (first_name, last_name) VALUES ('Zhang', 'San'); INSERT INTO test_user (first_name) VALUES ('Wu');
- 查看数据是否成功插入。以下命令不建议在海量数据场景中使用。 - SELECT COUNT(*) FROM test_user;- 返回以下信息: - count ------- 3 (1 rows)- 也可以通过以下命令查看插入的具体数据。 - SELECT * FROM test_user;- 返回以下信息: - first_name | last_name ------------+----------- test | LINDORM Wu | null Zhang | San (3 rows)
- 删除表test_user中的指定行的last_name列的值,然后查询删除后的表数据。 - DELETE last_name FROM test_user WHERE first_name='test'; SELECT * FROM test_user WHERE first_name='test';- 返回以下信息: - first_name | last_name ------------+----------- test | null
- 删除表test_user中指定行的数据,然后查询删除后的表数据。 - DELETE FROM test_user WHERE first_name='test'; SELECT * FROM test_user WHERE first_name='test';- 返回以下信息: - first_name | last_name ------------+----------- (0 rows)
- 清空表或者删除表。只有super用户才能执行 - TRUNCATE、DROP TABLE、DROP KEYSPACE命令。- TRUNCATE test_user; DROP TABLE test_user;
- 使用Lindorm SEARCH INDEX。 - 通过CQL为Lindorm宽表创建搜索索引,创建搜索索引前需确保表的属性满足创建需求,相关需求请提交工单咨询值班。 - CREATE TABLE test_keyspace.tb (cn1 text PRIMARY KEY, cn2 text, cn3 text) WITH extensions = {'CONSISTENCY_TYPE':'strong', 'MUTABILITY':'MUTABLE_LATEST'}; CREATE SEARCH INDEX tbidx ON test_keyspace.tb WITH COLUMNS (cn2, cn3); REBUILD SEARCH INDEX ON test_keyspace.tb ; INSERT INTO test_keyspace.tb (cn1, cn2, cn3) VALUES ('v11', 'v12', 'v13'); SELECT * FROM test_keyspace.tb WHERE cn2 like '%v1';说明- 上述代码表示在表 - tb中创建索引表- tbidx,并写入数据,然后进行模糊查询。相关语法请参见管理搜索索引。
- 使用Lindorm Secondary INDEX。 - 通过CQL为Lindorm宽表创建Lindorm Secondary Index,创建前需确保表的属性满足创建需求,相关信息请参考二级索引。 - CREATE TABLE test_keyspace.tb (cn1 text PRIMARY KEY, cn2 text, cn3 text) WITH extensions = {'CONSISTENCY_TYPE':'strong', 'MUTABILITY':'MUTABLE_LATEST'}; CREATE INDEX tbidx ON test_keyspace.tb (cn2); INSERT INTO test_keyspace.tb (cn1, cn2, cn3) VALUES ('v11', 'v12', 'v13'); SELECT * FROM test_keyspace.tb WHERE cn2 = 'v12';