http://www.cnblogs.com/LBSer/p/3328841.html

 9月初听了一个讲座,演讲者是张月同学,他给我们分享了Cassandra nosql数据库,讲得很精彩,听完之后收益良多。

  Cassandra是一个noSQL数据库,在国外被广泛使用,比如FaceBook、Twitter、Intel等,国内用的较少,只有奇虎360等公司在大规模使用。张月首先讲了Cassandra怎么来的,之后讲了Cassandra的一些具体细节,让我印象比较深刻的有数据分布以及通讯协议两个部分,最后讲了Cassandra的效率以及使用情况。

1. Cassandra怎么来的

他山之石可以攻玉,Cassandra从Dynamo和BigTable中借鉴了相应的思想。

类似Dynamo的特性

类似bigTable的特性

对称、P2P的结构,没有主节点

稀疏、列存储模型

基于 Gossip的集群管理

commit log,内存有 MemTable,SSTable Files

分布式哈西表

支持Hadoop

最终一致性

2. Cassandra中的数据是怎样分布的?

1.2版本之前使用的是普通一致性哈西算法,如图上部所示,一共6个节点,每个节点计算Hash值a,之后各个节点根据各自的hash值映射到一段区间上,比如Node1对应着A,此外,各个节点保存着其它节点的两个副本,比如Node1还保存着Node5的E,以及Node6的F。

普通的一致性哈西有个缺点,当增加或删除节点时会导致数据分布不均衡,比如Node2宕机后,原先Node2的数据全部分布到Node3上,造成Node3的数据量大大多余其它节点;同理,当在区间B插入一个节点Node7时,会使得Node2和Node7的数据量大大小于其它节点。

为了解决上述问题,1.2版本使用带有虚拟节点的一致性哈西算法,如图下部所示,一共6个节点,每个节点需要计算两次hash,首先与传统一样计算Hash值a,然后根据这个值a计算多个hash值a1,a2,a3...,即将一个节点映射到多个hash值,从而每个节点不再仅仅对应一个区间,而是对应着许多小区间,如果保证各个hash值是随机的,则能使得这些小区间的分布也是随机的,从而确保了数据分布的均衡性

 3. Gossip协议管理集群

每隔T秒,集群中各个节点将都会将自己的Heartbeat信息通过Gossip传递给其他节点。Gossip协议效率较高,只需要Log(N)次就能将所有节点状态信息传递给各个节点。

4. Cassandra的效率以及使用情况

张月给了张图,上面显示Cassandra读写速度远远大于Hbase和MongoDB,但是也有很多人质疑这个图,因为他没有给出这张图的实验条件,比如多大数据量,各个数据库是否在同一集群上等等。不过我后来查看了些文献,发现Cassandra的性能还是很不错的。

5. 讨论

会后有个问题:既然Cassandra性能这么出色, 为什么国内很少有公司使用Cassandra? 为什么国外的facebook和twitter等都弃用Cassandra而转用HBase了,Cassandra有什么不足?

张月的回答是国内的宣传不够,至于facebook和twitter为什么转用HBase,可能和HBase天生支持Hadoop有关系,可以结合mapreduce,虽然Cassandra也支持Hadoop,但是配置起来特别麻烦。

后来我网上查了下,Cassandra还是有一些缺点,或许因为这些使得很多大公司转向HBase。

a)Cassandra来源自Facebook,但是在Facebook内部Cassandra 目前只用在inbox search产品上,容量大约有一两百T,且Inbox Search在Facebook的也不是核心应用;

b)Cassandra出身较晚,自身还存在不少问题。

NoSQL之Cassandra的更多相关文章

  1. 开源软件:NoSql数据库 - 图数据库 Cassandra

    转载原文:http://www.cnblogs.com/loveis715/p/5299495.html Cassandra简介 在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了 ...

  2. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  3. 10 things you should know about NoSQL databases

    For a quarter of a century, the relational database (RDBMS) has been the dominant model for database ...

  4. Cassandra

    NoSQL之Cassandra   9月初听了一个讲座,演讲者是张月同学,他给我们分享了Cassandra nosql数据库,讲得很精彩,听完之后收益良多. Cassandra是一个noSQL数据库, ...

  5. Cassandra内部架构

    Cassandra是一个开源的.分布式.无中心节点.弹性可扩展.高可用.容错.一致性协调.面向列的NoSQL数据库 Cassandra集群(Cluster) Cluster Data center(s ...

  6. C#写的NoSQL开源项目/系统(系列)

    http://www.cnblogs.com/unruledboy/archive/2013/01/07/CSharpNoSQL.html 闲扯 好久没写开源项目了,也没写对新开源项目的介绍,今晚看了 ...

  7. IM 去中心化概念模型与架构设计

    今天打算写写关于 IM 去中心化涉及的架构模型变化和设计思路,去中心化的概念就是说用户的访问不是集中在一个数据中心,这里的去中心是针对数据中心而言的. 站在这个角度而言,实际上并非所有的业务都能做去中 ...

  8. Hash函数及其应用

    本文部分内容摘自网络,参考资料链接会在文后给出,在此感谢原作者的分享. 计算理论中,没有Hash函数的说法,只有单向函数的说法.所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数 ...

  9. 资源list:Github上关于大数据的开源项目、论文等合集

    Awesome Big Data A curated list of awesome big data frameworks, resources and other awesomeness. Ins ...

随机推荐

  1. SQL SERVER 2008 附加数据库出现只读问题。

    问题描述 在附加数据库时出现的图片:   解决办法 步骤一,修改文件夹的 1.打开该数据库文件存放的目录或数据库文件的属性窗口,选择"属性"菜单->选择"安全&qu ...

  2. CentOS 7 安装MySQL 8.0.11

    1. 下载安装包 wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar 下载 ...

  3. 二叉树(Binary Tree)相关算法的实现

    写在前面: 二叉树是比较简单的一种数据结构,理解并熟练掌握其相关算法对于复杂数据结构的学习大有裨益 一.二叉树的创建 [不喜欢理论的点我跳过>>] 所谓的创建二叉树,其实就是让计算机去存储 ...

  4. ServiceBase.OnStart 方法

    msdn 解释 派生类中实现时,在由服务控制管理器 (SCM) 或在操作系统启动时 (对于自动启动的服务) 时,将启动命令发送到服务时执行. 指定当服务启动时要执行的操作. 命名空间:   Syste ...

  5. 学习sqlserve的一些笔记

    创建表: create table 表名 { //定义列名 id ,) primary key,//自动编号:从1开始每次增长1,约束:主键约束 name ) not null //非空约束 } 表数 ...

  6. 发起一个NetCore技术联盟促进NetCore技术应用

    一.简介 1.从十几年前开始net,到两年前转java,到去年底发现netcore2这玩艺,从此以后坚定成为netcore的追随着. 2.有心促进netcore的应用,聚集一些人员共同学习,减少技术使 ...

  7. httpclient 用法

    链接地址 https://www.cnblogs.com/mykcode/p/7833090.html 在程序用调用 Http 接口.请求 http 资源.编写 http 爬虫等的时候都需要在程序集中 ...

  8. A tiny program to benchmark image transpose algorithms

    Here is the code: #include <stdio.h> #include <xmmintrin.h> #include <windows.h> t ...

  9. CentOS 6 - 升级内核

    有的时候,需要升级Linux内核,今天我就是在CentOS 6中升级内核,在没有升级内核之前,我的CentOS 6只有2.6.32这一个内核,也是默认启动的内核.下面就开始一步步操作升级内核了! 一, ...

  10. “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...