All Products
Search
Document Center

ApsaraDB for Cassandra - Deprecated:Gunakan cqlsh untuk mengelola instance ApsaraDB for Cassandra

Last Updated:Jun 28, 2025

Topik ini menjelaskan cara mengelola instance ApsaraDB for Cassandra menggunakan cqlsh. cqlsh adalah shell baris perintah yang digunakan untuk berinteraksi dengan Cassandra berdasarkan Cassandra Query Language (CQL). Anda dapat menginstal Cassandra di mesin lokal atau pada instance Elastic Compute Service (ECS).

Unduh dan instal Cassandra

Anda dapat mengunduh versi terbaru Cassandra dari situs resmi Apache Cassandra dan mengekstrak paket perangkat lunak yang diunduh untuk menginstal Cassandra.

$ wget http://mirror.bit.edu.cn/apache/cassandra/3.11.4/apache-cassandra-3.11.4-bin.tar.gz
$ tar -zxf apache-cassandra-3.11.4-bin.tar.gz 
$ cd apache-cassandra-3.11.4                

Gunakan cqlsh untuk terhubung ke instance ApsaraDB for Cassandra

Masuk ke konsol ApsaraDB for Cassandra, temukan instance ApsaraDB for Cassandra Anda, lalu peroleh Titik akhir dan nomor port node yang ingin Anda hubungkan. Kemudian, jalankan perintah berikut untuk terhubung ke node:

bin/cqlsh $host $port -u $username -p $password                       

Jika Anda perlu sering terhubung ke node, disarankan menyimpan Titik akhir dan nomor portnya ke variabel lingkungan $CQLSH_HOST dan $CQLSH_PORT. Anda dapat menjalankan perintah bin/cqlsh -help untuk melihat lebih banyak parameter yang didukung oleh cqlsh.

Pernyataan CQL umum

Anda dapat menjalankan perintah HELP atau ? di cqlsh untuk melihat semua pernyataan CQL yang dapat digunakan untuk mengelola instance ApsaraDB for Cassandra.

cqlsh> HELP
Perintah shell yang didokumentasikan:
===========================
CAPTURE  CLS          COPY  DESCRIBE  EXPAND  LOGIN   SERIAL  SOURCE   UNICODE
CLEAR    CONSISTENCY  DESC  EXIT      HELP    PAGING  SHOW    TRACING
Topik bantuan CQL:
================
AGGREGATES               CREATE_KEYSPACE           DROP_TRIGGER      TEXT     
ALTER_KEYSPACE           CREATE_MATERIALIZED_VIEW  DROP_TYPE         TIME     
ALTER_MATERIALIZED_VIEW  CREATE_ROLE               DROP_USER         TIMESTAMP
ALTER_TABLE              CREATE_TABLE              FUNCTIONS         TRUNCATE 
ALTER_TYPE               CREATE_TRIGGER            GRANT             TYPES    
ALTER_USER               CREATE_TYPE               INSERT            UPDATE   
APPLY                    CREATE_USER               INSERT_JSON       USE      
ASCII                    DATE                      INT               UUID     
BATCH                    DELETE                    JSON            
BEGIN                    DROP_AGGREGATE            KEYWORDS        
BLOB                     DROP_COLUMNFAMILY         LIST_PERMISSIONS
BOOLEAN                  DROP_FUNCTION             LIST_ROLES      
COUNTER                  DROP_INDEX                LIST_USERS      
CREATE_AGGREGATE         DROP_KEYSPACE             PERMISSIONS     
CREATE_COLUMNFAMILY      DROP_MATERIALIZED_VIEW    REVOKE          
CREATE_FUNCTION          DROP_ROLE                 SELECT          
CREATE_INDEX             DROP_TABLE                SELECT_JSON                       

Untuk mengetahui cara mengeksekusi pernyataan CQL tertentu, jalankan perintah HELP pada pernyataan tersebut. Beberapa pernyataan CQL tidak memungkinkan Anda menentukan parameter. Jika Anda mengeksekusi pernyataan CQL seperti itu, sistem akan mengembalikan pengaturan yang diperoleh dari pernyataan tersebut. Pernyataan CQL tersebut termasuk CONSISTENCY, EXPAND, dan PAGING. Contoh:

cqlsh> CONSISTENCY
Tingkat konsistensi saat ini adalah ONE.
cqlsh> EXPAND
Output yang diperluas saat ini dinonaktifkan. Gunakan EXPAND ON untuk mengaktifkan.
cqlsh> PAGING
Paging kueri saat ini diaktifkan. Gunakan PAGING OFF untuk menonaktifkan
Ukuran halaman: 100              

Kueri variabel lingkungan

Anda dapat mengeksekusi pernyataan DESCRIBE untuk menanyakan nilai variabel lingkungan yang digunakan dalam instance ApsaraDB for Cassandra. Contoh:

cqlsh> DESCRIBE CLUSTER;
Cluster: Test Cluster
Partitioner: Murmur3Partitioner                       

Pernyataan DESCRIBE CLUSTER menanyakan nama dan pembagi partisi instance ApsaraDB for Cassandra. Anda dapat memilih salah satu dari empat pembagi partisi berikut: RandomPartitioner, Murmur3Partitioner, OrderPreservingPartitioner, dan ByteOrderedPartitioner. Di Cassandra versi sebelum 1.2, pembagi partisi default adalah RandomPartitioner. Di Cassandra 1.2 dan yang lebih baru, pembagi partisi default adalah Murmur3Partitioner.

Untuk menanyakan keyspaces yang tersedia dalam instance ApsaraDB for Cassandra, eksekusi pernyataan berikut:

cqlsh> DESCRIBE KEYSPACES;                       

Sistem mengembalikan semua keyspaces yang disediakan oleh instance ApsaraDB for Cassandra, seperti system_traces, system_schema, system_auth, dan system_distributed, serta keyspaces yang telah Anda buat.

Untuk menanyakan versi cqlsh, Cassandra, dan protokol, eksekusi pernyataan berikut:

cqlsh> SHOW VERSION;
[cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]                       

Buat keyspace

Keyspaces dalam instance ApsaraDB for Cassandra mirip dengan database dalam instance ApsaraDB RDS. Keyspace berisi satu atau lebih tabel atau keluarga kolom. Jika Anda memulai cqlsh tanpa menentukan keyspace, prompt perintah cqlsh> akan ditampilkan. Kemudian, Anda dapat mengeksekusi pernyataan CREATE KEYSPACE untuk membuat keyspace. Contoh:

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

Dalam contoh ini, keyspace bernama test_keyspace dibuat, dan mode replikasi diatur ke SimpleStrategy. Selain itu, instance ApsaraDB for Cassandra yang digunakan untuk pengujian hanya terdiri dari satu node. Oleh karena itu, faktor replikasi diatur ke 1. Namun, jika instance ApsaraDB for Cassandra digunakan dalam lingkungan produksi, disarankan mengatur faktor replikasi menjadi 3.

Setelah membuat keyspace, Anda dapat mengeksekusi pernyataan DESCRIBE KEYSPACE untuk menanyakan keyspace. Contoh:

cqlsh> DESCRIBE KEYSPACE  test_keyspace;
CREATE KEYSPACE test_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;                        

Anda juga dapat mengeksekusi pernyataan USE untuk beralih ke keyspace. Contoh:

cqlsh> USE test_keyspace;
cqlsh:test_keyspace>                      

Buat tabel

Untuk membuat tabel, eksekusi pernyataan berikut:

cqlsh> use test_keyspace;
cqlsh:test_keyspace> CREATE TABLE test_user (first_name text , last_name text, PRIMARY KEY (first_name));
                      

Dalam contoh ini, tabel bernama test_user dibuat di keyspace test_keyspace. Tabel tersebut berisi dua bidang tipe data TEXT: first_name dan last_name. Bidang first_name adalah kunci utama tabel. Anda juga dapat mengeksekusi pernyataan berikut untuk membuat tabel test_user di keyspace test_keyspace:

cqlsh> CREATE TABLE test_keyspace.test_user(first_name text , last_name text, PRIMARY KEY (first_name));
                       

Untuk menanyakan pernyataan CQL yang Anda eksekusi untuk membuat tabel test_user di keyspace test_keyspace, eksekusi pernyataan berikut:

cqlsh:test_keyspace> 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';
cqlsh:test_keyspace>                        

Anda dapat mengeksekusi pernyataan DESCRIBE TABLE untuk menanyakan semua pernyataan yang Anda eksekusi untuk membuat tabel dan skema tabel, termasuk pengaturan kustom dan pengaturan default.

Baca dan tulis data

Anda dapat mengeksekusi pernyataan INSERT INTO untuk menyisipkan data ke dalam tabel. Contoh:

cqlsh:test_keyspace> INSERT INTO test_user (first_name, last_name) VALUES ('test', 'Hadoop');
cqlsh:test_keyspace> INSERT INTO test_user (first_name, last_name) VALUES ('Zhang', 'San');
cqlsh:test_keyspace> INSERT INTO test_user (first_name) VALUES ('Li');                       

Pernyataan di atas digunakan untuk menyisipkan tiga catatan data ke dalam tabel test_user. Dalam catatan data terakhir, hanya nilai bidang first_name yang ditentukan dan bidang last_name dibiarkan kosong.

Anda dapat mengeksekusi pernyataan SELECT COUNT untuk memeriksa apakah catatan data tersebut dimasukkan. Contoh:

cqlsh:test_keyspace> SELECT COUNT(*) FROM test_user;
 count
-------
     3
(1 rows)
Peringatan :
Kueri agregasi digunakan tanpa kunci partisi                        

Hasil yang dikembalikan menunjukkan bahwa catatan data tersebut dimasukkan. Anda juga dapat mengeksekusi pernyataan berikut untuk menanyakan catatan data:

cqlsh:test_keyspace> SELECT * FROM test_user;
 first_name | last_name
------------+-----------
       test |    Hadoop
       Wang |      null
      Zhang |       San
(3 rows)
cqlsh:test_keyspace> SELECT * FROM test_user WHERE first_name='test';
 first_name | last_name
------------+-----------
       test |    Hadoop
(1 rows)                       

Nilai null dikembalikan untuk bidang last_name yang terkait dengan bidang first_name yang nilainya Wang. Di Cassandra, nilai null menunjukkan bahwa kolom yang ditentukan oleh bidang tersebut tidak memiliki data, dan kolom tanpa data tidak menempati ruang dalam sistem penyimpanan. Namun, di basis data relasional umum, kolom tetap menempati ruang penyimpanan meskipun tidak memiliki data.

Hapus kolom atau baris

Anda dapat mengeksekusi pernyataan DELETE untuk menghapus satu atau lebih kolom. Sebagai contoh, Anda dapat mengeksekusi pernyataan berikut untuk menghapus kolom last_name:

cqlsh:test_keyspace> DELETE last_name FROM test_user WHERE first_name='test';
cqlsh:test_keyspace> SELECT * FROM test_user WHERE first_name='test';
 first_name | last_name
------------+-----------
       test |      null
(1 rows)                        

Kolom yang ditentukan oleh bidang last_name dihapus.

Anda juga dapat mengeksekusi pernyataan DELETE untuk menghapus baris. Contoh:

cqlsh:test_keyspace> DELETE FROM test_user WHERE first_name='test';
cqlsh:test_keyspace> SELECT * FROM test_user WHERE first_name='test';
 first_name | last_name
------------+-----------
(0 rows)
cqlsh:test_keyspace>                        

Catatan data yang nilainya bidang first_name adalah test dihapus.

Pernyataan INSERT and UPDATE yang digunakan bersama-sama sama dengan pernyataan UPSERT. Jika catatan data yang ingin Anda sisipkan sudah ada, sistem tidak akan memperbarui catatan data yang ada dengan nilai kunci utama yang sama, tetapi menyisipkan catatan data baru dan menghapus yang ada. Contoh:

cqlsh:test_keyspace> INSERT INTO test_user (first_name, last_name) VALUES ('Wang', 'Shi');
cqlsh:test_keyspace> SELECT * FROM test_user;
 first_name | last_name
------------+-----------
       Wang |       Shi
      Zhang |       San
(2 rows)                       

Nilai Shi dikembalikan untuk bidang last_name yang terkait dengan bidang first_name yang nilainya Wang.

Jika Anda mengeksekusi pernyataan UPDATE untuk memperbarui catatan data yang tidak ada, sistem akan menyisipkan catatan data tersebut. Contoh:

cqlsh:test_keyspace> SELECT * FROM test_user;
 first_name | last_name
------------+-----------
       Wang |       Shi
      Zhang |       San
(2 rows)
cqlsh:test_keyspace> UPDATE test_user SET last_name = 'Si' WHERE first_name = 'Li';
cqlsh:test_keyspace> SELECT * FROM test_user;
 first_name | last_name
------------+-----------
       Wang |      Shi
      Zhang |       San
         Li |        Si
(3 rows)
cqlsh:test_keyspace>                       

Catatan data yang nilainya bidang first_name adalah Li disisipkan ke dalam tabel, tetapi catatan data ini tidak ada sebelum pembaruan.

Bersihkan atau hapus tabel

Anda dapat mengeksekusi pernyataan TRUNCATE atau DROP TABLE untuk membersihkan atau menghapus tabel. Contoh:

cqlsh:test_keyspace> TRUNCATE test_user;
cqlsh:test_keyspace> DROP TABLE test_user;