最近尝试搭建一个云存储平台,在不断的对比之后,决定采用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下也差不多。
二、配置环境变量
包括JAVA和cassandra自己的环境变量。JAVA环境变量的配置说明很多,这里只说一下cassandra的环境变量配置。
右键我的电脑->属性