`

Cassandra NOSQL 数据库

阅读更多
Cassandra或许不会因为是NoSQL而得到关注,但是它在完成某些特定工作上,有迷人的魅力,这Netflix和Instagram两家公司一定知道。

过去的这些年,NoSQL的参与者,例如MongoDB已经得到了快速发展,受到了非常多的关注,但是 Apache Cassandra的光环褪去,作为创造了Cassandra的Facebook已经放弃了它,Cassandra的社区也好像过时了快。但
是Cassandra的命运迎来的转机,Netflix近来决心把他们自己的数据中心的oracle改成Cassandra Amazon云。不久
以后,Facebook也再次开始使用Cassandra,而Twitter和WebEx都不同程度的使用着Cassandra.

Cassandra的一个大问题在于它太个性,好像不好把它进行分类,虽然类似HBase,它是一个Column-family数据库,但是它却有很大的独得性。它跟文档NoSQL数据库也是不同的类别例如MongoDB或Couchbase,或key-value-pair数据库DynamoDB,Redis,Riak,等等都不一样,它自成一类。

什么是cloumn-family数据库?

一个column-family数据库它按行关键字来存储数据,它非常类似一张表,跟人们熟悉的关系数据库的表很容易混淆,尤其是自从google著名的column-family应用被称为BigTable以后,人们更容易把column的存储结构与关系数据库下的表相混淆了,但是一定要注意此表非彼表。

首先,他们基本上缺少架构schema,架构可以让你很容易的添加你想添加的列(但是你需要考虑存储优化,数据分布等问题),在Cassandra里,表的关键字不紧紧围了方便查找,它可以允许系统有效的在集群上对数据分片,看下面标准的column family结构吧,它看起来非常类似JSON.


ColumnFamilyName {

rowkey1 = {column1:"value1", column2:"value2"},

rowkey2 = {column1:"value2.1", column2:"value2.2", column3:"value2.3"},

rowkey3 = {column2:"value3.2", column3:"value3.3"},

rowkey4 = {column1:"value4.1", column3:"value4.3"}

}


上面是标准的column family数据库数据存储结构,看起来有一定的局限性,但是作为补充,它还包括一个超级列的概念,类似下面的结构:


SuperColumnFamily {

ColumnFamily1 {

cf1rowkey1 = {column1:"value1", column2:"value2"},

cf1rowkey2 = {column1:"value2.1", column2:"value2.2", column3:"value2.3"},

cf1rowkey3 = {column2:"value3.2", column3:"value3.3"},

cf1rowkey4 = {column1:"value4.1", column3:"value4.3"}

},

ColumnFamily2 {

cf2rowkey1 = {column1:"value1", column2:"value2"},

cf2rowkey2 = {column1:"value2.1", column2:"value2.2", column3:"value2.3"},

cf2rowkey3 = {column2:"value3.2", column3:"value3.3"},

cf2rowkey4 = {column1:"value4.1", column3:"value4.3"}

}

}



另外你还可以找到另外几种结构,例如composite columns和其他类型的列,包括静态和动态列等等。还有些特殊的列类型包括计数列,时间戳列等。


什么情况下使用Cassandra?

一,时间类型的数据

       时间类型的数据包括任何温度传感器,工作日志,或股票价格数据等,也包括博客数据,电影片段数据等等,这些数据被证明如果使用文档数据库例如MongoDB会导致失败。

二,产品目录

三,信息过滤系统的子系统信息推荐系统-Recommendations

四,诈    骗与垃  圾信息侦  听系统

五,后端的大数据存储系统

        应该说后台数据库存储系统,用Cassandra的地方不是太多,主要是应用它的缓存功能全局网数据复制
        的能力,如果你需要异地备份双活数据库的话,你可以使用下Cassandra.

Cassandra与Hbase

Cassandra有自己的优点和缺点,正如Hbase一样,它们都有各自的使用场合两者都在Hadoop生态下,Cassandra用来对读写进行高复合工作,而对毫秒级的数据一致性不是太擅长,而HBase则可以弥补这些,从更大的范围讲,Cassandra适合业务系统,而HBase则更多的用在数据仓库和事务场景的系统上。

说说事务......


开发人员经常困惑什么时候才真正的需要原子级别的一致性,同样如果你开始使用RDBMS,你也会困惑,因为关系型数据库经常需要跨越多个地点收集相同的一组数据。这样一个人的信息可能被打乱放到了多个表中,因为它们有不同的电话好吗,有不同的地址等等,这样就引出-好的数据库架构到底是什么样的?

在现在的任何系统之下,你都需要对数据一致性进行妥协,因为无论你使用什么类型的数据库,都不可能提供长时间运行的事务(足够轻量级的可以满足互联网应用级的要求),因为没有人可以在信息持久话的模式下做操作,而且每个用户对应一个连接,而事务则经常打断用户的操作,影响用户的体验,这就是进行原子级的数据一致性的代价。

但是在很多情况下,一毫秒甚至500毫秒不会有太多的不同,如果我修改了一些行关键字,最终Cassandra会进行持久话,那么我就可以进行读操作,可能这读操作是虚拟读。这里的问题在于,你不会关注一个短暂的错误,例如你正在看电影,发现里面的片段少了,没有数据加载,但是紧紧一会后,你再次单击那部电影,恢复正常了,可以正常观看了,这里你不太会太在意,你在意的是,每当电影目录被更新,你的操作都会被奇怪的中断,所以当前在互联网级的应用上,你需要在性能和系统规模及数据一致性之间做出妥协,有的时候,一致性跟性能及规模来说并不是过于重要。



在安装好JDK1.6的Windows系统上安装Cassandra,并进行简单的测试。

1 下载Cassandra

去http://cassandra.apache.org/下载即可。写此文章时最新的版本是1.0.1,

2 安装Cassandra
将下载的压缩包解压,假设解压的位置是F:\jl_work\apache-cassandra-1.0.1。



3:jre的安装与windows环境变量的配置
1)如果你的机器没有安装jre,请先下载windows版jre程序并配置好java的环境变量(已下载安装过就不用再装了)

去sun官方下载windows版式的jre   http://java.sun.com/javase/downloads/index.jsp
2)设置环境变量"我的电脑"--"高级"选项卡--"环境变量"--"系统变量--新增",根据自己安装的jre与cassandra的位置来设置系统变量的值
我的机器jre安装在: C:\Program Files\Java\jre1.6.0_02

cassandra 安装在:F:\jl_work\apache-cassandra-1.0.1




4: 正式的启动Cassandra服务

在cmd窗口中执行F:\jl_work\apache-cassandra-1.0.5\bin下面的cassandra.bat启动cassandra服务



成功后会看到以下画面


出现上面的图后表示服务启动成功了,记住,这个cmd的窗口不要关闭,关闭了服务就被一起关闭了,接下来客户端的连接就不行了。
5:客户端的连接
服务启动成功之后,cassandra里面默认有一个测试数据库,访问的方式是在cmd窗口中执行F:\jl_work\apache-cassandra-1.0.5\bin下面的cassandra-cli.bat批处理文件,然后出现cassandra提示符,在提示符后面输入connect localhost/9160;就可以连上默认的数据库。下图是连接成功后的界面。





1)create keyspace mcas; 可理解为创建一个数据库
2)create column family timebasedtoken withcomparator=UTF8Type and

default_validation_class=UTF8Type andkey_validation_class=UTF8Type;

create column family timebasedtoken with

key_validation_class=UTF8Type and

comparator =UTF8Type and

column_metadata =

[

{column_name:serid ,validation_class:UTF8Type },

{column_name:seed,validation_class:UTF8Type},


{column_name: offset, validation_class:LongType},


{column_name: state, validation_class:LongType},

{column_name:modelType, validation_class: UTF8Type},

{column_name:timeWindow, validation_class: LongType},


{column_name: idType, validation_class:UTF8Type},

{column_name:idNumber, validation_class: UTF8Type},

{column_name:badPwCount, validation_class: LongType},


{column_name: staticPwd, validation_class:UTF8Type},

{column_name:staticPwVolity, validation_class: LongType},

{column_name:algorith, validation_class: UTF8Type},


{column_name: pwLength, validation_class:UTF8Type},

{column_name:chgCode, validation_class: UTF8Type},

{column_name:lastPwd, validation_class: UTF8Type}

];可理解为创建一个表


update column family timebasedtoken with keys_cached =1000000; //修改key缓存容量
再接着我们试着插入一条新记录,并读出这条记录的值。

插入的命令是"set"关键字
在命令提示符下输入 set User1[tableName1][column1] = testValue;
如果提示"Value inserted"表示插入成功。
同样我们把插入的值读出来,使用的关键字是"get"

在命令提示符下输入
get
timebasedtoken [ascii(0000000001)];
如图,我们把刚才插入的数据给读了出来。








在linux 下配置
















配置修改如下:



即:


exportJAVA_HOME=/usr/java


PATH=$JAVA_HOME/bin:$PATH


exportPATH


CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CASSANDRA_HOME/lib/*.jar


export CLASSPATH




然后修改







即:


PATH=$PATH:$HOME/bin


CASSANDRA_HOME=$HOME/apache-cassandra-1.0.5/




exportPATH


export
CASSANDRA_HOME




配置修改完成




然后修改cassandra下面的conf下面的cassandra.yaml文件


rpc_address: 0.0.0.0
rpc_address变量修改为:0.0.0.0 否则外界ip访问不了




ok基本修改完成




linux下面启动cassandra和windows下面没什么差别




可能会修改jvm内存












常用的命令:




update column family timebasedtoken with keys_cached = 5000000; 修改keys缓存




./nodetool–h localhost cfstats(bin目录下面才能运行) //查看本机cassandra状态(里面含有各个keyspace)


运行运行成功后显示的一个例子






vmstat 2








所圈为cpu空闲百分数






ps -ef | grep cass 查找指定名称的进程








kill
杀死进程


kill 5536


http://www.cnblogs.com/elearn007/p/3800207.html
http://bbs.51cto.com/thread-971173-1-1.html
分享到:
评论

相关推荐

    NoSQL数据库入门 高清PDF

    根据提供的信息,我们可以推断出该文档主要围绕“NoSQL数据库入门”这一主题展开,并且它是一本高清PDF格式的学习指导书籍。尽管文档的部分内容似乎与Linux公社网站介绍有关,但我们的重点将放在提取与NoSQL数据库...

    NoSQL数据库入门思维导图

    【标题】:“NoSQL数据库入门思维导图” 【描述】提到这是一个使用特定软件MindManager打开的资源,包含两张关于数据库的思维导图。这暗示了我们将会探讨的是NoSQL数据库的基础概念以及常见的NoSQL数据库类型。 ...

    NoSQL数据库学习教程.pdf

    NoSQL数据库学习教程 CAP定律是NoSQL数据库存在的三大基石之一,CAP定律是指在分布式系统中,无法同时满足一致性、可用性和分区容忍性这三个属性。其中,一致性是指所有节点在同一时间看到相同的数据;可用性是指...

    NoSQL数据库PPT

    ### NoSQL数据库概述 #### 一、什么是NoSQL数据库? NoSQL(Not Only SQL)数据库是一种非关系型数据库,它与传统的SQL(Structured Query Language)关系型数据库有所不同。NoSQL数据库的设计初衷是为了处理大...

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库与关系型数据库的比较.docx

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库与关系型数据库的比较.docx

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库概论与历史.docx

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库概论与历史.docx

    大数据技术原理与应用之NoSQL数据库.pptx

    "大数据技术原理与应用之NoSQL数据库" 在大数据技术原理与应用领域中,NoSQL数据库扮演着非常重要的角色。NoSQL数据库是指不遵循传统关系数据库管理系统(RDBMS)的数据库管理系统,主要特点是去中心化、可扩展性强...

    大数据挑战与NoSQL数据库技术PDF

    大数据挑战与NoSQL数据库技术是当今信息技术领域中的热门话题,特别是在数据量呈指数级增长的背景下,传统的数据库管理系统已经无法满足高效存储和处理大规模数据的需求。NoSQL(Not Only SQL)数据库应运而生,成为...

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库的分布式系统原理.docx

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库的分布式系统原理.docx

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库的查询语言-CQL.docx

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库的查询语言-CQL.docx

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库在大数据与云计算中的应用.docx

    NoSQL数据库(如MongoDB,Cassandra):NoSQL数据库在大数据与云计算中的应用.docx

    NoSQL数据库入门

    5. **案例研究**:学习NoSQL数据库的实际应用,例如,Facebook使用Cassandra存储用户消息,LinkedIn利用MongoDB处理其用户档案数据,Google使用Bigtable处理海量日志。 6. **选择NoSQL的考量**:理解何时选择NoSQL...

    最新统计排名前十的SQL和NoSQL数据库排行榜

    NoSQL数据库如MongoDB、Cassandra和PostgreSQL则在大数据处理和分布式系统中展现出强大实力。选择SQL还是NoSQL,取决于具体的应用场景、数据类型和性能需求。随着技术的发展,两者都在不断演进,以满足日益变化的...

    8种Nosql数据库系统对比

    NoSQL数据库,全称为"Not Only SQL",是近年来在大数据处理和分布式系统中广泛应用的一种非关系型数据库。与传统的关系型数据库相比,NoSQL数据库在处理大规模数据、高并发访问和分布式存储方面具有优势,尤其适合...

    NoSQL数据库学习教程 (1)

    NoSQL数据库学习教程 NoSQL,全称"Not Only SQL",是一种非关系型数据库系统,它在处理现代互联网应用中的大规模、高并发和动态数据需求时展现出了强大的优势。传统的关系型数据库在应对Web2.0网站时,尤其是在面对...

    nosql数据库简介.pptx

    NoSQL数据库,全称为"Not Only SQL",是一种非关系型的数据库系统,旨在解决传统关系型数据库在处理大规模数据和高并发场景下遇到的问题。在90年代,由于网站访问量较小,静态网页为主,单一数据库可以满足需求。但...

    BUPT NoSQL数据库

    本章节主要探讨了NoSQL数据库中的三种重要类型:图数据库、文档数据库和列族数据库,并结合北京邮电大学(BUPT)的相关课程作业进行深入学习。 首先,让我们详细了解一下图数据库。图数据库以节点、边和属性三元组...

Global site tag (gtag.js) - Google Analytics