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可以包含一個或多個表格或列簇。
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';