全部產品
Search
文件中心

Lindorm:通過Lindorm-cqlsh串連寬表引擎

更新時間:Jul 06, 2024

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

操作步驟

  1. 執行以下命令將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命令查看。

  2. 通過Lindorm-cqlsh建立keyspace。Lindorm中的keyspace與關係型資料庫中的database概念類似,一個keyspace可以包含一個或多個表格或列簇。

    CREATE KEYSPACE test_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};

    建立成功後執行以下語句查看keyspace:

    DESCRIBE KEYSPACE test_keyspace;
  3. 使用USE命令切換至目標keyspace。

    USE test_keyspace;

    返回以下資訊:

    cqlsh:test_keyspace>
  4. 通過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';