必威体育Betway必威体育官网
当前位置:首页 > IT技术

cassandra使用与介绍

时间:2019-07-18 21:11:03来源:IT技术作者:seo实验室小编阅读:74次「手机版」
 

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

插入一条数据 :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

它会自己均衡数据,这里就直接结束了,否则继续。

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读