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';