Cassandra常用命令

来源:互联网 发布:getimagesize php 编辑:程序博客网 时间:2024/06/05 03:51

ssh admin@192,168.6.201


cqlsh 192.168.6.202
desc keyspaces;
use forseti_fp;
ceate index 索引 on device——session(id);

2015-01-04
cassandra
查看表空间describe keyspaces;
查看已有表:describe tables;
查看表结构:describe table table_name;
key spaces
describe keyspaces;
describe keyspace {keyspace};
use {keyspace};
select * from system.schema_keyspaces;
Column Families
describe tables;
describe columnfamily {table};
select * from system.schema_columnfamilies;

describe tables
table
;

参考:datastax documention : CQL for cassandra 2.x
Cassandra 提供collection 用于处理某些特殊类型的需求,如单用户记录的多个邮件地址,此处翻译为 集合类型。
Cassandra 提供了三种集合类型,分别是Set,List,Map。
基本概念与操作
一、Set
Set存储了一组类型相同的不重复元素,当被查询时会返回排好序的结果,但是内部构成是无序的值,应该是在查询时对结果进行了排序。
使用示例:
1.创建带有Set类型列的表
CREATE TABLE users (
user_id text PRIMARY KEY,
first_name text,
last_name text,
emails set
);
2.插入数据
INSERT INTO users (user_id, first_name, last_name, emails) VALUES(‘frodo’, ‘Frodo’, ‘Baggins’, {‘f@baggins.com’, ‘baggins@gmail.com’});
3.使用UPDATE命令和‘+’操作符向set列添加一个元素。
UPDATE users SET emails = emails + {‘fb@friendsofmordor.org’} WHERE user_id = ‘frodo’;
4.查询
SELECT user_id, emails FROM users WHERE user_id = ‘frodo’;
结果如下
user_id | emails
———+——————————————————————-
frodo | {“baggins@caramail.com”,”f@baggins.com”,”fb@friendsofmordor.org”}
注: Cassandra 会按照set内数据类型进行排序返回 查询结果,如果希望按照插入序返回结果,请使用list.
5.删除一个元素
UPDATE users SET emails = emails - {‘fb@friendsofmordor.org’} WHERE user_id = ‘frodo’;
6.删除所有元素
可以使用UPDATA或DELETE命令
UPDATE users SET emails = {} WHERE user_id = ‘frodo’; DELETE emails FROM users WHERE user_id = ‘frodo’;
一般来说,Set,list和Map要求最少有一个元素,否则Cassandra无法把其同一个空值区分。
二、List
list查询时会按照元素在list中的index顺序来返回结果,可以存储多个重复的值。
操作示例:
1.向users表添加一个list列
ALTER TABLE users ADD top_places list;
2.使用UPDATA命令向list插入值。
UPDATE users SET top_places = [ ‘rivendell’, ‘rohan’ ] WHERE user_id = ‘frodo’;
3.在list前面插入值
UPDATE users SET top_places = [ ‘the shire’ ] + top_places WHERE user_id = ‘frodo’;
4.在list后面插入值
UPDATE users SET top_places = top_places + [ ‘mordor’ ] WHERE user_id = ‘frodo’;
5.使用列表索引设置特定位置的值
UPDATE users SET top_places[2] = ‘riddermark’ WHERE user_id = ‘frodo’;
原先的值会被覆盖,这种操作会读入整个list,效率比3,4低
6.使用DELETE命令和索引删除某个特定位置的值。
DELETE top_places[3] FROM users WHERE user_id = ‘frodo’;
7.使用UPDATE命令和‘-’移除list中所有的特定值。
UPDATE users SET top_places = top_places - [‘riddermark’] WHERE user_id = ‘frodo’;
6和7相比,推荐使用7,因为6操作是非线程安全的,如果在操作时其它线程在前面添加了一个元素,会导致移除错误的元素。使用7不会有此问题。
三、Map
Map提供了名字到值的映射,Map可以存储时间戳相关的信息,每一个元素在内部作为一列存储,可以修改,替换,删除和查询,拥有一个单独的TTL值。
操作示例:
1.添加Map列
ALTER TABLE users ADD todo map

0 0
原创粉丝点击