cassandra使用与介绍

1.cassandra简介

 Cassandra是一个高可靠的大规模分布式存储系统。高度可伸缩的、一致的、分布式的结构化key-value存储方案,

 集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。


 Cassandra使用了Google BigTable的数据模型,与面向行的传统的关系型数据库不同,这是一种面向列的数据库,

 列被组织成为列族(Column Family),在数据库中增加一列非常方便。


 Cassandra的数据会写入多个节点,来保证数据的可靠性。适用于有节点、网络失效,以及多数据中心的场景。

2.cassandra特点及数据类型介绍

特点:

    1.  列表数据结构

      在混合模式可以将超级列添加到5维的分布式Key-Value存储系统。

    2.  真正的可扩展性

      Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以增加动态添加节点即可。你不必重启任何进程,改变应用查询,或手动迁移任何数据。

    3. 分布式写操作

      你以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。

数据类型:


3.cassandra集群搭建

cassandra.yaml 文件路径:/usr/local/cassandra/conf/cassandra.yaml

1.更改 cassandra.yaml 中 cluster_name: '??'      ??为:cassandra集群名称,cassandra集群中所有配置文件中的这个要改成同一个的名字。

2.更改 cassandra.yaml 中  - seeds: "??,??"       ??为:集群中其他机器的ip

3.依次启动cassandra集群   

cd    /usr/local/cassandra/bin

./cassandra            (后台运行)

./cassandra -f        (关闭crt等连接工具cassandra会停止服务)

 

4.cassandra创建keyspace和 column family以及表的有关操作

提到Keyspace,可以把keyspace 想像成关系型数据库中的database,而database 的层次应该是database>table>columns,

当然keyspace也有相对应的层次结构keyspace>column family>column, super column,所以在设计keyspace就像在设计database一样.

使用cassandra自带的查询工具查询数据:

    1. cd    /usr/local/cassandra/bin
    2. ./cqlsh 10.200.21.59(机器ip)
    3. use cloud ;      (cloud 为cassandra的Keyspace)
    4. select * from recent;          (此步骤为输入的cql语句)

查看表空间describe keyspaces;

查看已有表:describe tables;

查看表结构:describe table table_name;

cassandra表有关的操作:

        cassandra为非关系型数据,建表的结构就决定了以后查询的条件,所以建表之前一定要清楚以后次表的查询操作


第一主键 只能用=号查询

  第二主键 支持= > < >= <=

  索引列 只支持=号

通过以上实验可以得出cassandra cql order by 字段必须是复合主键的第二个字段,并且需要where后跟上第一个字段的条件判断。

cassandra只能按某个条件删除数据,不能一次全部删除数据      delete from mytable where key1=?

cassandra操作map类型数据:

添加map列:ALTER TABLE users ADD todo map<timestamptext>;

插入一条数据 :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'}) ;

更新一条数据: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';


 

使用集合类型要注意:
1.集合的每一项最大是64K。
2.保持集合内的数据不要太大,免得Cassandra 查询延时过长,只因Cassandra 查询时会读出整个集合内的数据,集合在内部不会进行分页,集合的目的是存储小量数据。
3.不要向集合插入大于64K的数据,否则只有查询到前64K数据,其它部分会丢失。

5.cassandra导入数据

COPY favorites(username,id,content,migratestatus,updatetime) from '../favorites.scv';

 

6.如果一台机器宕机,从集群中删除这台机器步骤

 

第一步:先每个机器都修复下每个keyspace
nodetool repair -h ip_address_of_node keyspace_name
第二步:如果你要删除的机器是UP状态的机器,没有宕机
你可以在要删除的机器上执行 nodetool decommission. 就直接结束了,否则继续:
第三步:如果你的机器是宕机的。
你要先用在一个活着的机器上执行nodetool status 命令,获取宕机节点的id
$ nodetool status

 

Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
—  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
UN  192.168.2.101  112.82 KB  256     31.7%             420129fc-0d84-42b0-be41-ef7dd3a8ad06  RAC1
DN  192.168.2.103  91.11 KB   256     33.9%             d0844a21-3698-4883-ab66-9e2fd5150edd  RAC1
UN  192.168.2.102  124.42 KB  256     32.6%             8d5ed9f4-7764-4dbd-bad8-43fddce94b7c  RAC1

 

第四步: 在活的节点上执行删除操作
nodetool removenode d0844a21-3698-4883-ab66-9e2fd5150edd
它会自己均衡数据,这里就直接结束了,否则继续。





 






你可能感兴趣的:(cassandra)