cassandra

  最近尝试搭建一个云存储平台,在不断的对比之后,决定采用cassandra 作为底层数据库。这里记录 cassandra 的学习过程。

    Cassandra是一个混合型的非关系的数据库,主要特性是分布式、基于Column的结构化和高伸展性。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。Cassandra集群没有中心节点,各个节点的地位完全相同。

    Cassandra的系统架构是基于DHT(分布式哈希表)的完全P2P架构,与传统的基于 Sharding的数据库集群相比,Cassandra可以几乎无缝地加入或删除节点,非常适于对于节点规模变化比较快的应用场景。Cassandra的数据会写入多个节点,来保证数据的可靠性,在一致性、可用性和网络分区耐受能力(CAP)的折衷问题上,Cassandra比较灵活,用户在读取时可以指定要求所有副本一致(高一致性)、读到一个副本即可(高可用性)或是通过选举来确认多数副本一致即可(折衷)。这样,Cassandra可以适用于有节点、网络失效,以及多数据中心的场景。

        首先介绍一下cassandra的启动和配置。

一、下载cassandra

        http://cassandra.apache.org/   最新版的cassandra 1.0.8可以从这里获取,下载tar压缩包。cassandra使用JAVA编写,因此无平台限制,只要有JAVA即可。我是在windows下安装的cassandra,但linux下也差不多。

二、配置环境变量

        包括JAVAcassandra自己的环境变量。JAVA环境变量的配置说明很多,这里只说一下cassandra的环境变量配置。

        右键我的电脑->属性->高级->环境变量,在系统变量里新建一个,name里输入Cassandra_Homepath输入cassandra的目录。如我的cassandra解压在D盘根目录,那么path输入D:\apache-cassandra-1.0.8。配置好后,在命令行界面输入 echo %Cassandra_Home%查看是否配置成功。

三、修改配置文件

        cassandra的配置文件位于cassandra目录的conf文件夹下,我们需要配置的是cassandra.yamllog4j-server.properties。若你在conf里找不到cassandra.yaml,而是一个xml文件,那请去下载最新版的cassandra

        log4j-server.properties需要配置log4j.appender.R.File属性,这是log文件的路径,我将它配置为D:/apache-cassandra-1.0.8/my/log/log。注意,这里的路径是“文件”的路径,不是“目录”的路径。

        cassandra.yaml需要配置较多。

        cluster_name:这是集群的名字,可以使用默认设置,我将它修改为FirstCluster。一个集群里,所有节点的配置文件里这个属性都应该设置为相同的,这样它们才能互相找到。

        initial_token:默认留空,我们可以配置为0或其它数字,现在先留空。

       data_file_directories:存放数据库数据文件的目录路径(不是文件路径),我将它配置为D:/apache-cassandra-1.0.8/my/data

       commitlog_directory:存放提交日志的目录路径。

       saved_caches_directory:缓存文件夹路径。

       还有一些属性,目前不需要配置,在后面进行集群的时候配置。

       另外注意,以上所有路径最好都使用正斜杠,因为反斜杠在程序里会解析为特殊的符号。

四、启动cassandra

       命令行进入cassandra目录的bin文件夹,启动cassandra.batlinux下启动cassandra),cassandra开始运行。这个命令行窗口不能关闭,否则cassandra也被关闭了。

       提示找不到MX4J,可以忽视,或者去下一个mx4j-tools.jar并拷贝在cassandra目录下的lib文件夹内。

       无法跳过的错误通常是环境变量配置不对或配置文件配置错误,按提示解决即可。

五、测试cassandra

       命令行进入cassandra目录的bin文件夹,启动cassandra-cli.bat。首先尝试连接到本机上的cassandra服务:

        connect localhost/9160; (分号一定不能少)

       若成功,会提示你 成功连接到FirstCluster。接着创建一个keyspace

        create keyspace DEMO;

        这一步有可能失败,通常失败提示是:cannot locate cassandra.yaml。若遇见这个提示,将conf文件夹下的cassandra.yaml拷贝到bin文件夹下即可。

        创建成功后,进入DEMO keyspace

        use DEMO;

        创建一个column family

        create column family Student;

        往里面插入记录:

        set Student[utf8('1')][utf8('id')] = utf8(10010); 

        set Student[utf8('1')][utf8('name')] = utf8('fykhlp');

        查询记录:

        get Student[utf8('1')];  或   list Student;

六、附cassandra数据模型


1.keyspace:相当于关系型数据库里的数据库,前文所说的cluster相当于服务名。

2.columnFamily:相当于关系型数据库里的表,它里面只有两列,即keycolumns。但是columns里面可以有很多的记录,如上图studentA里的columns。上面的插入语句里,1就是columnFamily里的keystudentA),idcolumns里的name10010value

3.columncassandra里的最基本的存储单位,由namevaluetimestamp组成。timestamp是时间戳,name表示你插入的属性名,如ageheightvalue是属性的值(实际上也反过来用)。具体来说,column相当于关系型数据库里的一条记录,里面的每条(ageheight)相当于记录的某个字段。

4.superColumn:特殊的columns,它的value部分可以包含多个columns

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值