分布式数据库的应用---cassandra
Cassandra项目的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其它节点上,对Cassandra的读操作,也会被路由到某个节点上面去读取.对于一个Cassandra集群来说,扩展性能比较简单,直管在集群里面添加节点就可以了.有文章说Facebook的Cassandra集群有超过100台服务器构成的数据库集群.
Cassandra也支持比较丰富的数据结构和功能强大的查询语言,和MongoDB比较类似,查询功能比MongoDB稍弱一些.Cassandra以单个节点来衡量,其节点的并发读写性能不是特别好,有文章评测下来Cassandra每秒大约不到1万次读写请求,真实的风不是数据库访问系统必然是N多个节点构成的系统,其并发性能取决于整个系统的节点数量,路由效率,而不仅仅是但节点的并发负载能力.
cassandra是高可扩展性的第二代分布式数据库,如果想充分掌握和了解cassandra背后的理论,需要掌握amazon的dynamo和google bigtable.
学习一个陌生的技术,最重要的一步就是将其运行起来,运行之后再根据sample来分析其数据模型,然后再逐一研究整个系统模型的实现.
1)下载cassandra:
下载地址:[url]http://incubator.apache.org/cassandra/[/url],目前最新的beta版本是0.6.3
2)解压并安装cassandra:
将下载的压缩包解压,我本机解压的位置是E:\tools\数据库\apache-cassandra-0.6.3;
修改conf目录下的配置文件log4j.properties;
log4j.appender.R.File=d:\\temp\\cassandra\\system.log
修改conf目录下的配置文件storage-conf.xml;
<CommitLogDirectory>d:\\temp\\cassandra\\commitlog</CommitLogDirectory>
<DataFileDirectories>
<DataFileDirectory>d:\\temp\\cassandra\\data</DataFileDirectory>
</DataFileDirectories>
设置系统的环境变量:
JAVA_HOME=D:\server\jdk1.6
CASSANDRA_HOME=E:\tools\数据库\apache-cassandra-0.6.3
启动Cassandra服务:
进入命令行模式下Cassandra的安装目录,执行bin目录下的cassandra.bat,待界面进入到 "INFO 14:28:41,343 Starting up server gossip",那么恭喜你,启动成功了!
3)进入到Cassandra命令模式,进行一下交互测试:
在命令行模式下执行bin目录下的Cassandra-cli.bat,将会进入到Cassandra交互模式;
cassandra> connect localhost/9160
Connected to: "Test Cluster" on localhost/9160
参考随压缩包附带的readme文档,参照范例提供测试如下:
cassandra> set Keyspace1.Standard2['employee']['name']='li'
Value inserted.
cassandra> set Keyspace1.Standard2['employee']['job']='programmer'
Value inserted.
cassandra> set Keyspace1.Standard2['employee']['age']='31'
Value inserted.
cassandra> get Keyspace1.Standard2['employee']
=> (column=name, value=li, timestamp=1280042422312000)
=> (column=job, value=programmer, timestamp=1280042539578000)
=> (column=age, value=31, timestamp=1280042724312000)
Returned 3 results.
小结一下:
cassandra的配置还是比较简单的,配置文件storage-conf.xml中描述当前分布式数据系统所需的一些配置关系,结合上面的语句我们可以理解这种对应关系:
set Keyspace1.Standard2['employee']['name'] = 'li'
\ \ \ \ \
\ \ \_ key \ \_ value
\ \ \_ column
\_ keyspace \_ column family
:此节点可以认为是数据库名称,我们称为"空间"名称.
Standard2表示为列式存贮的结构名称.
对Cassandra的理解和分析暂时只能达到这个层次,稍后会通过代码继续带给大家更多的细节和代码结构,我们会持续揭开Cassandra神秘的面纱.
Cassandra项目的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其它节点上,对Cassandra的读操作,也会被路由到某个节点上面去读取.对于一个Cassandra集群来说,扩展性能比较简单,直管在集群里面添加节点就可以了.有文章说Facebook的Cassandra集群有超过100台服务器构成的数据库集群.
Cassandra也支持比较丰富的数据结构和功能强大的查询语言,和MongoDB比较类似,查询功能比MongoDB稍弱一些.Cassandra以单个节点来衡量,其节点的并发读写性能不是特别好,有文章评测下来Cassandra每秒大约不到1万次读写请求,真实的风不是数据库访问系统必然是N多个节点构成的系统,其并发性能取决于整个系统的节点数量,路由效率,而不仅仅是但节点的并发负载能力.
cassandra是高可扩展性的第二代分布式数据库,如果想充分掌握和了解cassandra背后的理论,需要掌握amazon的dynamo和google bigtable.
学习一个陌生的技术,最重要的一步就是将其运行起来,运行之后再根据sample来分析其数据模型,然后再逐一研究整个系统模型的实现.
1)下载cassandra:
下载地址:[url]http://incubator.apache.org/cassandra/[/url],目前最新的beta版本是0.6.3
2)解压并安装cassandra:
将下载的压缩包解压,我本机解压的位置是E:\tools\数据库\apache-cassandra-0.6.3;
修改conf目录下的配置文件log4j.properties;
log4j.appender.R.File=d:\\temp\\cassandra\\system.log
修改conf目录下的配置文件storage-conf.xml;
<CommitLogDirectory>d:\\temp\\cassandra\\commitlog</CommitLogDirectory>
<DataFileDirectories>
<DataFileDirectory>d:\\temp\\cassandra\\data</DataFileDirectory>
</DataFileDirectories>
设置系统的环境变量:
JAVA_HOME=D:\server\jdk1.6
CASSANDRA_HOME=E:\tools\数据库\apache-cassandra-0.6.3
启动Cassandra服务:
进入命令行模式下Cassandra的安装目录,执行bin目录下的cassandra.bat,待界面进入到 "INFO 14:28:41,343 Starting up server gossip",那么恭喜你,启动成功了!
3)进入到Cassandra命令模式,进行一下交互测试:
在命令行模式下执行bin目录下的Cassandra-cli.bat,将会进入到Cassandra交互模式;
cassandra> connect localhost/9160
Connected to: "Test Cluster" on localhost/9160
参考随压缩包附带的readme文档,参照范例提供测试如下:
cassandra> set Keyspace1.Standard2['employee']['name']='li'
Value inserted.
cassandra> set Keyspace1.Standard2['employee']['job']='programmer'
Value inserted.
cassandra> set Keyspace1.Standard2['employee']['age']='31'
Value inserted.
cassandra> get Keyspace1.Standard2['employee']
=> (column=name, value=li, timestamp=1280042422312000)
=> (column=job, value=programmer, timestamp=1280042539578000)
=> (column=age, value=31, timestamp=1280042724312000)
Returned 3 results.
小结一下:
cassandra的配置还是比较简单的,配置文件storage-conf.xml中描述当前分布式数据系统所需的一些配置关系,结合上面的语句我们可以理解这种对应关系:
set Keyspace1.Standard2['employee']['name'] = 'li'
\ \ \ \ \
\ \ \_ key \ \_ value
\ \ \_ column
\_ keyspace \_ column family
:此节点可以认为是数据库名称,我们称为"空间"名称.
Standard2表示为列式存贮的结构名称.
对Cassandra的理解和分析暂时只能达到这个层次,稍后会通过代码继续带给大家更多的细节和代码结构,我们会持续揭开Cassandra神秘的面纱.