`
yuanke
  • 浏览: 73621 次
  • 性别: Icon_minigender_2
  • 来自: 临沂
社区版块
存档分类
最新评论

Cassandra常用命令

阅读更多

ssh admin@192.168.1.1 

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

  2015-01-04

查看表空间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<text>
);

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<text>;

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<timestamp, text>;

2.使用Insert或Update命令,设置或更新数据。

UPDATE users SET todo =
  { '2012-9-24' : 'enter mordor', '2014-10-2 12:00' : 'throw ring into mount doom' } WHERE user_id = 'frodo';

3.使用UPDATE命令设置指定元素的value

UPDATE users SET todo['2014-10-2 12:00'] = 'throw my precious into mount doom' WHERE user_id = 'frodo';

4.使用INSERT命令设置指定行的map数据。

INSERT INTO users (user_id, todo) VALUES ('frodo', { '2013-9-22 12:01' : 'birthday wishes to Bilbo', '2013-10-1 18:00': 'Check into Inn of Pracing Pony'}) ;
旧的MAP数据会被覆盖。
    在 Cassandra  2.1.1后,可以使用如下语法增加map元素。如果key已存在,value会被覆盖,不存在则插入。
UPDATE users SET todo = todo + { '2013-9-22 12:01' : 'birthday wishes to Bilbo', '2013-10-1 18:00': 'Check into Inn of Pracing Pony'} WHERE user_id='frodo';

5.删除元素。

DELETE todo['2013-9-22 12:01'] FROM users WHERE user_id = 'frodo';
UPDATE users SET todo=todo - {'2013-9-22 12:01','2013-10-01 18:00:00-0700'} WHERE user_id='frodo';

6.查询元素。

SELECT user_id, todo FROM users WHERE user_id = 'frodo';
map输出顺序取决于map类型。

7.使用TTL

UPDATE users USING TTL <computed_ttl> SET todo['2012-10-1'] = 'find water' WHERE user_id = 'frodo';
INSERT INTO users (user_name, password) VALUES ('cbrown', 'ch@ngem4a') USING TTL 86400;
在设定的computed_ttl数值秒后,数据会自动删除。
 
使用集合类型要注意:
1.集合的每一项最大是64K。
2.保持集合内的数据不要太大,免得Cassandra 查询延时过长,只因Cassandra 查询时会读出整个集合内的数据,集合在内部不会进行分页,集合的目的是存储小量数据。
3.不要向集合插入大于64K的数据,否则只有查询到前64K数据,其它部分会丢失。
 

高级应用

一、给集合添加索引

从 Cassandra  2.1起,可以给集合添加索引。
示例:
CREATE INDEX ON users(emails); CREATE INDEX mymapvalues ON users(todo);
索引名字可以不指定。
上面第二个语句使用Map列的列名在其values上创建了索引,也可以在其keys上创建索引,如下:
DROP INDEX mymapvalues; CREATE INDEX mymapkeys ON playlists (KEYS(todo));
 

二、过滤集合中的数据

假设已经给集合添加了索引,就可以使用where子句的CONTAINS条件按照给定的值进行过滤。
SELECT user_id FROM users WHERE emails CONTAINS 'baggins@gmail.com';
注意给定的值是集合项的一项,短于集合某项不会进行模糊匹配。
对于MAP,可以使用key或value进行过滤。
SELECT user_id FROM users WHERE todo CONTAINS 'birthday wishes to Bilbo';
SELECT user_id FROMusers WHERE todo CONTAINSKEY'2013-09-23 12:01:00-0700';
分享到:
评论

相关推荐

    cassandra cql3

    - **启动 cqlsh**:`cqlsh` 是 Cassandra 的命令行工具,用于执行 CQL 命令。 - **Linux 和 MacOS X**:直接运行 `cqlsh`。 - **Windows**:通过 Cygwin 或者安装的 Cassandra 目录中的 `cqlsh.bat` 文件来启动。 ...

    redis常用命令,redis配置文件,redis持久化,redis事务,redis主从复制,jedis的使用

    下面是对 Redis 的常用命令、配置文件、持久化、事务、主从复制、Jedis 使用的详细讲解。 Redis 常用命令 Redis 提供了很多有用的命令来管理和操作数据。下面是一些常用的 Redis 命令: * SET key value:设置...

    NoSQL数据库系统-Cassandra分布式结构化数据存储视频教程

    第12节 - 12-Cassandra的其他常用命令 第13节 - 13-CQL的介绍 第14节 - 14-创建键空间 第15节 - 15-键空间的使用-修改-删除 第16节 - 16-创建表-查看表 第17节 - 17-Cassandra的索引 第18节 - 18-Cassandra表修改-...

    redis实战pdf文档

    在这一文档中,读者可以了解到Redis的核心概念、数据类型、操作方法、常用命令、高级特性等。 Redis是一个开源的使用内存存储的高性能Key-Value数据库系统,具有丰富的数据结构和高级特性,能够应对各种不同的场景...

    redis实战 红豆出品 兄弟连redis

    本知识点将从Redis的基本使用、数据类型及操作、常用命令、高级特性四个方面详细介绍Redis。 一、Redis基本使用 1.1 Key-Value存储系统简介 Key-Value存储系统是一种数据结构,它将数据存储为一系列的键值对。每...

    redis实战红丸出品

    本书内容涵盖了Key-Value存储系统的基础知识、Redis的选择理由、快速入门指南、数据类型与操作、常用命令以及高级特性等方面。 Key-Value存储系统是一种数据存储模型,通过键值对的方式存储数据,常见的系统有...

    大数据常用脚本.rar

    利用grep、awk、sed等命令,可以高效地处理文本数据和文件操作。 3. Pig Latin:Apache Pig是一个用于大数据分析的平台,它的高级语言Pig Latin允许用户编写复杂的数据处理逻辑。通过Hadoop MapReduce,Pig Latin...

    Redis实战《红丸出品》

    本知识体系将从Redis的基本概念、数据类型操作、常用命令以及高级特性等方面进行详细说明。 ### Redis基础概念 #### Key-Value存储系统简介 Redis是Key-Value存储系统的典型代表,与Voldemort、Dynamo、memcached...

    IT运维人员需掌握的常用技术.pdf

    以下是这些常用技术的详细介绍: 1. 微软系统: - Windows:运维人员需要熟悉Windows Server操作系统,尤其是Active Directory的管理和配置,包括用户权限、组策略和域控制器的设置。 - 服务和应用:ISA...

    Redis实战 中文

    第三章则着重介绍了Redis的常用命令,包括键值相关的命令(如keys、exists、del、expire等)以及服务器相关的命令(如ping、echo、select、info、config get等)。这些命令是操作Redis数据库的基础,读者通过学习...

    redis实战redis实战redis实战redis实战

    在"Redis常用命令"章节中,将学习一系列的键值相关命令,如keys、exists、del、expire、rename等,以及服务器相关命令,例如ping、echo、info、monitor、config get等。 "Redis高级实用特性"章节会介绍Redis的高级...

    redis实战手册

    Redis的常用命令涵盖了键值相关命令、服务器相关命令等多个方面。键值相关命令包括keys、exists、del、expire、move、persist等,这些命令用于对键进行操作和管理。服务器相关命令则包括ping、echo、select、quit、...

    Python库 | datastax-0.0.3.tar.gz

    Python的标准库包含了大量常用的模块,如os、sys、math等,此外还有许多第三方库,如Numpy、Pandas、Matplotlib等,用于科学计算、数据分析和可视化等。 "tar.gz"是一种常见的文件打包和压缩格式,由"tar"(归档)...

    redis实战-红丸出品

    为了帮助读者更好地使用Redis,书中还提供了Redis常用命令的介绍,其中包括键值相关的命令如keys、exists、del、expire等,以及服务器相关的命令如ping、echo、select、quit等。这些命令对于日常的Redis操作至关重要...

    Redis实战 中文 .pdf

    在常用命令章节,作者介绍了与键值相关的命令,如keys、exists、del、expire等,这些命令是操作Redis时最常用的。服务器相关命令如ping、echo、select、info等,则是维护和诊断服务器状态的重要手段。 书中未完成的...

Global site tag (gtag.js) - Google Analytics