Apache Cassandra特性

Apache Cassandra由Facebook基于Amazon的Dynamo及其在Google的Bigtable上的数据模型设计开发的面相列的数据库,实现没有单点故障的Dynamo风格的复制模型和强大的“列族”数据模型,提供高可用性和最终一致性。
1、弹性可扩展性 - Cassandra是高度可扩展的; 它允许添加更多的硬件以适应更多的客户和更多的数据根据要求。
2、始终基于架构 - Cassandra没有单点故障,它可以连续用于不能承担故障的关键业务应用程序。
3、快速线性性能 - Cassandra是线性可扩展性的,即它为你增加集群中的节点数量增加你的吞吐量。因此,保持一个快速的响应时间。
4、灵活的数据存储 - Cassandra适应所有可能的数据格式,包括:结构化,半结构化和非结构化。它可以根据您的需要动态地适应变化的数据结构。
5、便捷的数据分发 - Cassandra通过在多个数据中心之间复制数据,可以灵活地在需要时分发数据。
6、事务支持 - Cassandra支持属性,如原子性,一致性,隔离和持久性(ACID)。
7、写入 - Cassandra被设计为在廉价的商品硬件上运行。 它执行快速写入,并可以存储数百TB的数据,而不牺牲读取效率。

Cassandra节点节点

Cassandra的设计目的就是通过多个数据节点实现大数据工作负载,并通过在多个数据节点保存数据副本来解决单点故障,群集中所有节点之间对等,数据分布在群集所有节点上。
1、所有群集节点角色相同且相互独立,能同时互联到其他节点。
2、所有群集节点都可以接受读取和写入请求
3、当某群集节点关闭时,可以通过其他群集节点读取与该节点数据相同的副本。
4、当新增或移除群集节点后,群集会自动进行数据均衡 PS1: 当某节点性能不足时,可以暂停该节点不接受读写请求。

===========================================================

Cassandra数据模型

群集(Cluster)
|---群集节点(Cluster Node)
|---键空间(Keyspace)
|---列族(Column Famliy)
|---普通列(Column)
|---超级列(Super Column)
|--子列(subColumn)

群集(Cluster)是Cassandra数据模型中最外层,包含多个群集节点,对外提供服务

群集节点(Cluster Node)用来存储数据副本,群集中所有节点功能相同。

键空间(Keyspace)是数据的最外层容器,一个键空间可用包含多个列族(Column Family)一个键空间包含以下基本属性:

  1、复制因子,设置在群集中存储多少份数据副本

  2、副本放置策略,设置数据副本与数据中心和机架的关系

列族(Column Family)是有序收集行的容器,每行又是一个有序的列聚合,在Cassandra中可以随时向列族中添加列,且不要求每行记录包含所有列。

Cassandra数据模型中列分为普通列和超级列:

普通列包含三个属性:键(name)\值(value)\时间戳(clock),其存储结构为:

超级列是一个特殊列,其存储的是子列的map,其存储结构为:

===========================================================

分区键和群集键

在Cassandra中主键可分为两类:
1、单列主键
2、符合主键 对于单列主键,该主键即分区键(Partition Key)。
对于符合主键,主键的第一部分为分区键(Partition Key),第二部分为群集键(Clustering Key)。 分区键(Partition Key)决定数据位于哪个分区,而群集键(Clustering Key)决定相同分区上的数据如何排序。 对于表:
CREATE TABLE DemoTable
(
C1 INT,
C2 INT,
C3 INT,
C4 INT,
data text,
PRIMARY KEY((C1,C2), C3,C4)
);
则C1+C2作为分区键,然后同一分区中数据按照C3和C4进行排序。

===========================================================

Cassandra的数据模型和RDBMS的数据模型的区别:

==========================================================

摘抄自:https://www.w3cschool.cn/cassandra/

==========================================================

最新文章

  1. Android开发的小技巧,在Android Studio中使用Designtime Layout Attributes
  2. ajax局部刷新
  3. (译)关于async与await的FAQ
  4. swift学习记录之代理
  5. 参加2015年TOP100会议的零散笔记
  6. Android 中R文件丢失问题解决方案
  7. BZOJ 2083 Intelligence test
  8. vb.net机房收费系统之组合查询
  9. PHP内核探索之变量 图解
  10. 谷歌制图服务(Google Chart)接口生成二维码
  11. Sublime Text 快捷键--持续更新
  12. start with connect by prior 递归查询用法,很实用
  13. 洛谷P4003 无限之环(infinityloop)(网络流,费用流)
  14. ZOJ1008
  15. ecstore Fatal error: Class 'base_request' not found
  16. (转载)Unity_3DText穿透场景物体解决
  17. jQuery validator plugin之Plugin Method
  18. 【Ruby】【基础】
  19. 如何去掉IE文本框后的那个X css代码
  20. opencv core组件进阶

热门文章

  1. Java代理:静态代理、动态代理
  2. asp.net webapi 返回json结果的方法
  3. TagHelpers 使用
  4. 【PyImageSearch】Ubuntu16.04使用OpenCV3.3.0实现图像分类
  5. Unity项目中的资源管理
  6. Effective Java Chapter4 Classes and Interface
  7. js 数组去重的几种方式及原理
  8. 百杂讲堂之为什么32位系统只能操作4g内存
  9. WHID Injector:将HID攻击带入新境界
  10. python 递归函数操作方法