Lindorm-cqlsh是云原生多模数据库Lindorm团队基于Cassandra cqlsh修改后提供的Shell工具,提供Windows版本和Unix版本。您可以在本地或ECS上安装Lindorm-cqlsh工具,通过Lindorm-cqlsh连接并访问Lindorm宽表引擎。
前提条件
- 已将客户端的IP地址加入到Lindorm实例的白名单中,具体操作请参见设置白名单。
- 已获取云原生多模数据库Lindorm宽表引擎的CQL连接地址,具体操作请参见查看连接地址。
- 已下载并解压Lindorm-cqlsh,下载链接为下载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可以包含一个或多个表格或列簇。
创建成功后执行以下语句查看keyspace:CREATE KEYSPACE test_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
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
。
- Lindorm表级别无使用意义的配置项为:
- 在表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';
- 使用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';
- 通过Lindorm-cqlsh创建表格test_user。表格中包含first_name和last_name两个字段,字段的数据类型为text,并且first_name是这张表的PRIMARY
KEY。