首先使用cassandra-cli 進入命令列:$ bin/cassandra-cli -host 192.168.0.101
1.建立keyspace
CREATE KEYSPACE usertable with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy' and strategy_options = {replication_factor:2};
2.建立列簇
create column family data with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type;
3.建立一個計算機的列簇
計數器列族主要包含計數器列,這個列是一個64位的有符號數的值,可供用戶端使用,採用遞增或是遞減的方式提供給用戶端使用。計數器列跟蹤最近的值或是計算使用它的值,並不斷更新自己,你必須建立一個列族專門給用戶端做計數用。
我們同時建立一個使用該計數器的列族,並使這個列族的CounterColumnType的default_validation_class預設指向該計數器。比如:
[default@demo] CREATE COLUMN FAMILYpage_view_counts
WITH default_validation_class=CounterColumnType
AND key_validation_class=UTF8Type AND comparator=UTF8Type;
插入一行資料時和計數器列同時更新(與計數器的初始值設定為0)
[default@demo] INCR page_view_counts['www.datastax.com'][home]BY 0;
計算機增量:
[default@demo] INCR page_view_counts['www.datastax.com'][home]BY 1;
4.插入一行或是一列資料
面的例子說明了使用set指令為user列族插入列值。在這個例子中我們採用key為bobbyjo,在bobbyjo上插入了很多列,它們屬於users這個列族,記住bobbyjo只是一行的標識。注意我們每次只能插入一列。
[default@demo] SET users['bobbyjo']['full_name']='RobertJones';
[default@demo] SET users['bobbyjo']['email']='bobjones@gmail.com';
[default@demo] SET users['bobbyjo']['state']='TX';
[default@demo] SET users['bobbyjo']['gender']='M';
[default@demo] SET users['bobbyjo']['birth_year']='1975';
在接下來的例子中我們採用yomama作為行的key,在users這個列族中插入若干列和值。
[default@demo] SET users['yomama']['full_name']='CathySmith';
[default@demo] SET users['yomama']['state']='CA';
[default@demo] SET users['yomama']['gender']='F';
[default@demo] SET users['yomama']['birth_year']='1969';
在下面的例子中,我們為創blog_entry列族建一個key為yomama的列:
[default@demo] SET blog_entry['yomama'][timeuuid()]= 'I love my new shoes!';
5.讀取行和列的資料
在Cassandra用戶端中我們使用GET指令從指定的列族中讀取資料。
採用List指令沖指定的列族中讀取相關的列值出來(預設是返回100行的資料)。
下面的例子就是從users列族中返回100行的資料:
[default@demo] LIST users;
Cassandra內部預設採用十六進位的位元組存放資料。假如你沒有指定行key的校正類型,那麼列的比較子和校正器都是採用列族定義的預設值,Cassandra用戶端將按照預設的的方式為行插入資料,不管是行key還是列名,還是列值都是一樣的採用十六進位的方式(同樣資料也是以十六進位的方式返回)。
想輸入和返回我們可讀的資料格式,我們就必須指定編碼格式,Cassandra可以提供的編碼格式有: ascii bytes integer (a generic variable-length integer type) lexicalUUID long utf8
比如以下例子採用UTF-8的格式返回資料:
[default@demo] GET users[utf8('bobby')][utf8('full_name')];
你也可以通過ASSUME指令在用戶端的整個會話過程中採用那一種資料格式,比如下面的例子中採用ASCII-encoded作為資料傳回值。
[default@demo] ASSUME users KEYS AS ascii;
[default@demo] ASSUME users COMPARATOR ASascii;
[default@demo] ASSUME users VALIDATOR ASascii;
6.設定一到期的列
當你在Cassandra設定一個列時,你可以指定它的到期時間,或是他的生命週期屬性time-to-live。
比如:我們的使用者跟蹤優惠證券的到期時限是10天,我們就能定義一個優惠卷的列到期時間指定為10天,如:
[default@demo] SET users['bobbyjo']
[utf8('coupon_code')] = utf8('SAVE20') WITHttl=864000;
那麼過了十天或是864000秒,該列將不可讀,然而它的值並沒有從磁碟中刪除知道Cassandra完成壓縮和收縮。
7.列的索引
Cassandra用戶端可以建立第二索引(列值的索引),當建立該列族是你可以指定它的第二索引或是在後期使用UPDATE COLUMN FAMILY修改它的索引。
比如在users列族中的birth_year列添加第二索引:
[default@demo] UPDATE COLUMN FAMILY users
WITH comparator = UTF8Type
AND column_metadata = [{column_name:birth_year, validation_class: LongType, index_type: KEYS}];
因為在birth_year添加了第二索引,所以它的值可以作為條件直接查詢。
[default@demo] GET users WHERE birth_date =1969;
8.刪除行和列
Cassandra提供DEL指令刪除行或是列(或是子列)
比如在uses列族中的'yomama'行刪除coupon_code列:
[default@demo] DEL users ['yomama']['coupon_code'];
通過以下指令驗證刪除的情況
[default@demo] GET users ['yomama'];
或是直接刪除整行
[default@demo] DEL users ['yomama'];
9.刪除列簇和keyspace
Cassandra提供了類似關聯式資料庫一樣刪除表和資料庫的方式刪除列族和keyspaces,以下的例子顯示如何通過Drop指令刪除users列族和名為demo的keyspace。
[default@demo] DROP COLUMN FAMILY users;
[default@demo] DROP KEYSPACE demo;