Tous les produits
Search
Centre de documentation

ApsaraDB for Cassandra - Deprecated:Utiliser cqlsh pour gérer une instance ApsaraDB for Cassandra

Dernière mise à jour :Aug 11, 2026

Cette rubrique explique comment gérer une instance ApsaraDB for Cassandra à l'aide de cqlsh. cqlsh est un shell en ligne de commande utilisé pour interagir avec Cassandra via le langage de requête Cassandra (CQL). Vous pouvez installer Cassandra sur une machine locale ou sur une instance Elastic Compute Service (ECS).

Télécharger et installer Cassandra

Vous pouvez télécharger la dernière version de Cassandra depuis le site officiel d'Apache Cassandra, puis décompresser le package logiciel téléchargé pour installer 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                

Utiliser cqlsh pour se connecter à une instance ApsaraDB for Cassandra

Connectez-vous à la console ApsaraDB for Cassandra, localisez votre instance ApsaraDB for Cassandra, puis récupérez le endpoint et le numéro de port du nœud auquel vous souhaitez vous connecter. Exécutez ensuite la commande suivante pour vous connecter au nœud :

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

Si vous devez vous connecter fréquemment à un nœud, nous vous recommandons d'enregistrer son endpoint et son numéro de port dans les variables d'environnement $CQLSH_HOST et $CQLSH_PORT. Exécutez la commande bin/cqlsh -help pour afficher davantage de paramètres pris en charge par cqlsh.

Instructions CQL courantes

Dans cqlsh, exécutez la commande HELP ou ? pour afficher toutes les instructions CQL utilisables pour gérer les instances ApsaraDB for Cassandra.

cqlsh> HELP
Documented shell commands:
===========================
CAPTURE  CLS          COPY  DESCRIBE  EXPAND  LOGIN   SERIAL  SOURCE   UNICODE
CLEAR    CONSISTENCY  DESC  EXIT      HELP    PAGING  SHOW    TRACING
CQL help topics:
================
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                       

Pour savoir comment exécuter une instruction CQL spécifique, lancez la commande HELP suivie de cette instruction. Certaines instructions CQL ne permettent pas de spécifier de paramètres. Lorsque vous exécutez ce type d'instruction, le système renvoie les paramètres interrogés par celle-ci. Cela concerne notamment les instructions CONSISTENCY, EXPAND et PAGING. Voici des exemples :

cqlsh> CONSISTENCY
Current consistency level is ONE.
cqlsh> EXPAND
Expanded output is currently disabled. Use EXPAND ON to enable.
cqlsh> PAGING
Query paging is currently enabled. Use PAGING OFF to disable
Page size: 100              

Interroger les variables d'environnement

Exécutez l'instruction DESCRIBE pour interroger les valeurs des variables d'environnement utilisées dans une instance ApsaraDB for Cassandra. Exemple :

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

L'instruction DESCRIBE CLUSTER permet d'interroger le nom et le partitionneur de l'instance ApsaraDB for Cassandra. Vous pouvez choisir parmi les quatre partitionneurs suivants : RandomPartitioner, Murmur3Partitioner, OrderPreservingPartitioner et ByteOrderedPartitioner. Dans les versions de Cassandra antérieures à la 1.2, le partitionneur par défaut est RandomPartitioner. À partir de Cassandra 1.2, le partitionneur par défaut est Murmur3Partitioner.

Pour interroger les keyspaces disponibles dans une instance ApsaraDB for Cassandra, exécutez l'instruction suivante :

cqlsh> DESCRIBE KEYSPACES;                       

Le système renvoie tous les keyspaces fournis par l'instance ApsaraDB for Cassandra, tels que system_traces, system_schema, system_auth et system_distributed, ainsi que les keyspaces que vous avez créés.

Pour interroger les versions de cqlsh, de Cassandra et du protocole, exécutez l'instruction suivante :

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

Créer un keyspace

Les keyspaces d'une instance ApsaraDB for Cassandra sont similaires aux bases de données d'une instance ApsaraDB RDS. Un keyspace contient une ou plusieurs tables ou familles de colonnes. Si vous démarrez cqlsh sans spécifier de keyspace, l'invite de commande cqlsh> s'affiche. Vous pouvez alors exécuter l'instruction CREATE KEYSPACE pour créer un keyspace. Exemple :

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

Dans cet exemple, un keyspace nommé test_keyspace est créé et le mode de réplication est défini sur SimpleStrategy. De plus, l'instance ApsaraDB for Cassandra utilisée pour les tests ne comporte qu'un seul nœud. Le facteur de réplication est donc défini sur 1. Toutefois, si l'instance ApsaraDB for Cassandra est utilisée en environnement de production, nous vous recommandons de définir le facteur de réplication sur 3.

Après avoir créé un keyspace, vous pouvez exécuter l'instruction DESCRIBE KEYSPACE pour l'interroger. Exemple :

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

Vous pouvez également exécuter l'instruction USE pour basculer vers le keyspace. Exemple :

cqlsh> USE test_keyspace;
cqlsh:test_keyspace>                      

Créer une table

Pour créer une table, exécutez les instructions suivantes :

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

Dans cet exemple, une table nommée test_user est créée dans le keyspace test_keyspace. La table contient deux champs de type de données TEXT : first_name et last_name. Le champ first_name constitue la clé primaire de la table. Vous pouvez également exécuter l'instruction suivante pour créer la table test_user dans le keyspace test_keyspace :

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

Pour interroger les instructions CQL que vous avez exécutées pour créer la table test_user dans le keyspace test_keyspace, exécutez l'instruction suivante :

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>                        

L'instruction DESCRIBE TABLE permet d'interroger toutes les instructions exécutées lors de la création de la table, ainsi que le schéma de celle-ci, y compris les paramètres personnalisés et les paramètres par défaut.

Lire et écrire des données

Exécutez l'instruction INSERT INTO pour insérer des données dans une table. Exemple :

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

Les instructions ci-dessus servent à insérer trois enregistrements de données dans la table test_user. Pour le dernier enregistrement, seule la valeur du champ first_name est spécifiée ; le champ last_name reste vide.

Exécutez l'instruction SELECT COUNT pour vérifier si les enregistrements ont bien été insérés. Exemple :

cqlsh:test_keyspace> SELECT COUNT(*) FROM test_user;
 count
-------
     3
(1 rows)
Warnings :
Aggregation query used without partition key                        

Les résultats renvoyés confirment l'insertion des enregistrements. Vous pouvez également exécuter l'instruction suivante pour interroger les données :

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)                       

Une valeur null est renvoyée pour le champ last_name associé au champ first_name dont la valeur est Wang. Dans Cassandra, une valeur null indique que la colonne spécifiée par le champ ne contient aucune donnée ; une colonne vide n'occupe aucun espace dans le système de stockage. En revanche, dans les bases de données relationnelles classiques, une colonne occupe de l'espace de stockage même si elle est vide.

Supprimer une colonne ou une ligne

Exécutez l'instruction DELETE pour supprimer une ou plusieurs colonnes. Par exemple, exécutez les instructions suivantes pour supprimer la colonne 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)                        

La colonne spécifiée par le champ last_name est supprimée.

Vous pouvez également exécuter l'instruction DELETE pour supprimer une ligne. Exemple :

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>                        

L'enregistrement de données dont la valeur du champ first_name est test est supprimé.

L'utilisation conjointe des instructions INSERT and UPDATE équivaut à l'instruction UPSERT . Si l'enregistrement que vous souhaitez insérer existe déjà, le système ne met pas à jour l'enregistrement existant ayant la même valeur de clé primaire. Il insère le nouvel enregistrement et supprime l'ancien. Exemple :

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)                       

Une valeur Shi est renvoyée pour le champ last_name associé au champ first_name dont la valeur est Wang.

Si vous exécutez l'instruction UPDATE pour mettre à jour un enregistrement qui n'existe pas, le système insère cet enregistrement. Exemple :

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>                       

Un enregistrement dont la valeur du champ first_name est Li est inséré dans la table, bien qu'il n'existait pas avant la mise à jour.

Vider ou supprimer une table

Exécutez l'instruction TRUNCATE ou DROP TABLE pour vider ou supprimer une table. Exemple :

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