日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用cqlsh訪問Cassandra

可以在本地或ECS上安裝Cassandra,通過cqlsh工具訪問云數(shù)據(jù)庫Cassandra。

下載和安裝Cassandra

在Apache Cassandra官方網(wǎng)站下載最新版本的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                

使用cqlsh連接云數(shù)據(jù)Cassandra

在云數(shù)據(jù)Cassandra的控制臺查看云數(shù)據(jù)Cassandra的地址和端口,然后在本地或ECS上使用cqlsh連接,命令如下:

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

如果您需要經(jīng)常連接到特定節(jié)點,您可以將節(jié)點的地址和端口信息保存到環(huán)境變量$CQLSH_HOST和$CQLSH_PORT中。更多關(guān)于cqlsh命令支持的參數(shù)可以使用bin/cqlsh -help

基本的cqlsh命令

cqlsh支持多種操作Cassandra的基本命令,您可以使用HELP?命令查看所有支持的命令:

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                       

如果需要查看特定命令的幫助,可以使用HELP。需要注意的是,很多cqlsh命令并不接收相關(guān)的參數(shù),當(dāng)您使用這些命令時,其輸出為當(dāng)前的設(shè)置,比如CONSISTENCYEXPANDPAGING命令,如下:

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              

在cqlsh里面查看環(huán)境變量

您可以使用DESCRIBE命令,來查看一些集群的一些環(huán)境變量的值,例如:

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

DESCRIBE CLUSTER顯示了集群的名字以及采用的Partitioner,Cassandra 1.2版本開始默認(rèn)為Murmur3Partitioner,其他可選的Partitioner有RandomPartitioner(Cassandra 1.2 版本之前默認(rèn)的Partitioner)、OrderPreservingPartitioner以及ByteOrderedPartitioner等。

如果您需要查看集群里面可用的Keyspaces,可以使用下面命令:

cqlsh> DESCRIBE KEYSPACES;                       

上面命令將system_traces、system_schema、system_auth、system system_distributed等系統(tǒng)自帶的Keyspaces都顯示出來了,如果您創(chuàng)建了Keyspaces,也會在這里顯示。

可以使用下面命令查看cqlsh、Cassandra以及protocol的版本:

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

通過cqlsh創(chuàng)建Keyspace

Cassandra中的Keyspace和關(guān)系型數(shù)據(jù)庫中的database概念比較類似,一個Keyspace可以包含一個或多個tables或column families。當(dāng)您啟動cqlsh時沒有指定Keyspace,那么命令提示符為cqlsh>,您可以使用CREATE KEYSPACE命令來創(chuàng)建Keyspace,具體如下:

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

上面命令創(chuàng)建了名為test_keyspace的Keyspace;并且采用SimpleStrategy進行副本復(fù)制。由于當(dāng)前的測試集群只有單個節(jié)點,所以設(shè)置副本因子(replication factor)為1。如果是生產(chǎn)環(huán)境,請勿將副本因子設(shè)置為1,建議將副本因子設(shè)置為3。

創(chuàng)建完Keyspace之后,您可以使用DESCRIBE KEYSPACE命令來查看這個Keyspace:

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

現(xiàn)在您可以使用USE命令來切換到這個Keyspace:

cqlsh> USE test_keyspace;
cqlsh:test_keyspace>                      

通過cqlsh創(chuàng)建表

創(chuàng)建表:

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

上述命令表示在test_keyspace下面創(chuàng)建了一張名為test_user的表。其中包含了first_name和last_name兩個字段,類型都是text,并且first_name是這張表的PRIMARY KEY。當(dāng)然,您也可以通過下述命令在test_keyspace里面建表:

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

查看建表語句:

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>                        

DESCRIBE TABLE命令會將建表語句以格式化的形式顯示出來,除了您制定的設(shè)置,還包含了許多默認(rèn)的設(shè)置。

通過cqlsh讀寫數(shù)據(jù)

往表里面插入一些數(shù)據(jù):

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

上述語句表示往test_user表中插入三條數(shù)據(jù),其中最后一條數(shù)據(jù)只指定了Key,last_name沒有值。

您可以使用SELECT COUNT語句查看數(shù)據(jù)是否插入成功。

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

通過命令的輸出查看已成功插入數(shù)據(jù)。您還可以使用下述命令查詢這條數(shù)據(jù):

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)                       

可以看出,由于first_name為Wang對應(yīng)的last_name沒有數(shù)據(jù),這里直接顯示null。在Cassandra中,null代表對應(yīng)的列沒有數(shù)據(jù),在底層存儲是不占用空間的,而在常見的關(guān)系型數(shù)據(jù)庫里面是占一定空間的。

刪除列或行

使用DELETE命令刪除一些列。例如,刪除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)                        

可以看出last_name列已經(jīng)成功被刪除。

使用DELETE命令刪除一整行的數(shù)據(jù):

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>                        

可以看到Key為test的數(shù)據(jù)已經(jīng)成功被刪除。

insert/update相當(dāng)于upsert,如果您插入數(shù)據(jù)對應(yīng)的Key在Cassandra已經(jīng)存在了,這時候Cassandra不會在原來數(shù)據(jù)位置上修改數(shù)據(jù),而是會新寫入一份數(shù)據(jù),舊的數(shù)據(jù)會被Cassandra刪除。

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)                       

可以看出,Key為Wang的數(shù)據(jù)對應(yīng)的last_name已經(jīng)有值了。

如果使用UPDATE命令更新不存在的數(shù)據(jù),Cassandra會插入新的數(shù)據(jù),例如:

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>                       

可以看出,Key為Li的數(shù)據(jù)被插入到表中了,而更新之前該數(shù)據(jù)不存在。

清空或刪除表

如果您需要清空一張表,您可以使用TRUNCATE命令或DROP TABLE命令,例如:

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