Cassandra FAQ

来源:互联网 发布:长川软件 编辑:程序博客网 时间:2024/06/04 19:56
1. Cassandra是什么?
是一个开源的nosql数据库
2. 长什么样子?
SortedMap<RowKey, SortedMap<ColumnKey, ColumnValue>>

primary key 可以指定多个,但是除了第一个是用于 partition 的, 其他的,都是用于排序的。譬如:
CREATE TABLE scores (
name text,
age int,
score int,
date timestamp,
PRIMARY KEY (name, age, score)
);
除了 name 是 row key, 用于 partition, age 和 score 则是用于 cluster sort 。CQL 查询的数据当且仅当 具有 cluster sort 的时候才可以进行 order by 。
3. 与关系型数据库的类比
Relational Model
Cassandra Model
Cassandra中的作用
Database
Keyspace
官方的推荐是一个 keyspace 对应一个 Application keyspace 关乎数据的分布式复制策略。
Primary Key
Row Key
唯一标识,是一个三元组(name, value, timestamp
Column name
Column name/key
必须是唯一的
Column value
Column value
 

4. 如何运行
1)启动server:进入cassandra/bin, run ./cassandra
2) 打开cql: 另外一个窗口进入相同文件夹, run ./cql
5. 为什么要用 nosql?
频繁的写入操作、相对较少的读取统计信息的操作(如网站访问计数器),应该使用基于内存的Key/Value(键/值)存储系统(如Redis)或者是具备本地更新特性的文档存储系统(如MongoDB)。
6. 那什么时候用 relational DB?
MySQL用于存储敏感的数据,比如用户的资料、交易的信息等。MongoDB用于存储大量的、相对不敏感的数据,比如博客文章的内容、文章访问次数等。
7. 什么时候用 Cassandra (Hadoop, MongoDB ...)?
Hadoop
海量数据(如数据仓库中需要分析的数据)适合存储在一个结构松散、分布式的文件存储系统中
Amazon S3
存储二进制文件(如mp3或者pdf文档)并且能够直接为用户的浏览器提供下载功能
Memcache
临时性的数据(如网站的session、缓存HTML页面信息等)
CassandraHBase
数据具备高可用性,丢失的风险降到最低,整个系统具备线性扩展的能力
8. 常用语句
create keyspace dev
 
use dev
 
create table emp (empid int primary key, emp_first varchar, emp_last varchar, emp_dept varchar);
 
insert into emp (empid, emp_first, emp_last, emp_dept)
values (1,'fred','smith','eng');
 
update emp set emp_dept = 'fin' where empid = 1;
 
select * from emp;
 
select * from emp where empid = 1;
 
create index idx_dept on emp(emp_dept);
 if you want to query columns other than the primary key, you need to create a secondary index on them:

Reference:
http://techlog.cn/article/list/10182760#c
https://github.com/shahuwang/blogposts/blob/master/Cassandra%E9%80%89%E5%9E%8B%E4%BB%8B%E7%BB%8D.md
http://book.51cto.com/art/201105/264201.htm
https://www.datastax.com/2012/01/working-with-apache-cassandra-on-mac-os-x
原创粉丝点击