iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
0

今天要稍微簡單的動手嘗試操作,利用我們Day3安裝的docker環境,在cqlsh就足以應付。

命名規格

CASSANDRA 推薦大家對於資料的命名方式是蛇行命名,例如my_keyspace。

這是因為進到CASSANDRA裡面,無論是keyspace,column family,column,在CASSANDRA裡面會全部自動轉成小寫,SCYLLA 也一貫延續這個風格。

建立keyspace

step1. 首先我們來看一下目前的keyspace

果然什麼都沒有,在這邊有個小技巧,輸入完describe 之後,空格剛打下keyspace的第一個字k,按下鍵盤的tab,這個時候cqlsh就會自動補齊keyspace這個關鍵字了。

在cqlsh裡面可以多多利用tab,而且完全不用額外安裝插件,非常的方便。

step2. 建立一個名稱叫做book_store的keyspace

step3. 還記得上一篇有提到keyspace建立時,要決定複製策略和複製因子嗎?

這個時候一樣按下tab就好,cqlsh會自動幫我們補充語法

step4. 要填什麼複製策略,關鍵字感到困惑嗎?沒事的,再按一次tab

下面就自動告訴你,有3種策略可以選,因為只是嘗試操作階段,所以我們選擇SimpleStrategy

step5. 把 SimpleStrategy複製貼上到語法的最後面,再繼續按下tab,沒錯,自動補語法又來了。

這個時候我們要決定複製因子,這個repliacation_factor,就是填寫複製因子的數量,官方的說明是有一個node,就可以選擇多複製一份,那麼我們在Day3的安裝,建置了3個node,於是repliacation_factor就填3吧。

記得自己補完右大括號,以及結尾最好有個分號

step6. 建立keyspace之後,其實我們位置還在外面,在輸入一次describe KEYSPACE,還是什麼都沒看到。

所以step1根本是在做笨事XD

使用use,像是操作RDBMS一樣,選擇使用的資料庫,我們切換到剛剛建立的book_store後,在輸入一次describe KEYSPACE,果然就看到了相關的描述。


table 操作

先等等,上一篇介紹不是說CASSANDRA/SCYLLA 沒有table這個定義嗎?

對CASSANDRA/SCYLLA 來說,table == column family,完全一樣的東西。

那為什麼會有table 這個關鍵字呢,原來命令的操作有經過大改版,在CASSANDRA舊版本/底層操作的API,叫做Thrift API,於此column family關鍵字的確叫做column family

而後來推出的指令操作API,才是我們常聽到的CQL API,在此column family的關鍵字叫做table,對於上一篇所介紹的column family,是正確的喔。

create

試著建立一張table / column

create table books ( book_name text, author text, isbn text, PRIMARY KEY(book_name));

insert

寫入一筆資料

 insert into books (book_name, author , isbn ) VALUES ( 'Cassandra技術手冊','Jeff Carpenter, Eben Hewitt', '9789864764723' );

select

SELECT COUNT(*) FROM books;
select * from books;

delete

指定isbn作為刪除條件

 delete from books where isbn = '9789864764723';

指定book_name為刪除條件

delete from books where book_name  = 'Cassandra技術手冊';

第一個delete的執行方式失敗了,第二個因為是使用primary key 當作where條件,所以成功。

後續我們會再針對這個說明,做一個詳細的說明。

truncate

清空整張table

TRUNCATE books;

drop

刪除整張table

DROP books;

是不是其實很像我們RDBMS,常用的T-SQL語法呢?


上一篇
Day5 . 資料與架構層次
下一篇
Day7. 基本欄位格式
系列文
scylla 從零開始攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言