Cassandra学习笔记
来源:互联网 发布:人口数据泄露 编辑:程序博客网 时间:2024/05/22 01:27
Cassandra (https://en.wikipedia.org/wiki/Apache_Cassandra)
1. Data Model
在column family中的每一行,类似于SQL table中的一行。但是每一行的column不需要严格定义data schema,而且column可以嵌套column。像是Map<key, Map<key, value>> 这种。
可以了解一下BigTable(https://en.wikipedia.org/wiki/Bigtable)与之类似的定义。
2. DHT存储方式
源于Amazon DynamoDB(https://en.wikipedia.org/wiki/Amazon_DynamoDB),基于分布式哈希表。
- 使用key决定如何在节点中存储。有几种可选策略
- hash (consistent hash): 计算k的哈希值,每一个节点负责一个哈希值范围。好处是保证负载均衡,缺点是不能进行range search (2.1版本后,可以使用value indexing进行range search)
- byteordered: 不进行哈希,直接按序存储。优点是支持range search,但是缺点很明显:1. 无法保证traffic均匀分布在每个节点上;2. 大量读写相似数据的情况下容易使某一个节点变成hot spot.
- replication factor: 决定数据分成几个copy
- simpleStrategy: 不考虑data center影响,按序选择节点复制
- NetworkStrategy: 定义每个data center复制几份
- 保证一致性
- Cassandra保证的是Eventually Consistency, 即:多个数据拷贝节点可能在写的时候存在一段时间不一致,但是会最终一致
- 与之对应的强一致性指所有数据节点在写后保证永远返回最新的值
- Cassandra几种一致性策略
- ALL: 每次写,要等待所有的拷贝节点都ACK写成功。这样设置可以保证强一致性
- QUORUM:每次写等待至少一半的拷贝节点都ACK写成功。注意,如果读的时候也是用这个策略(也就是读取至少一半的拷贝节点,选择timestamp最新的),则能保证强一致性,因为读写至少会共用一个节点
- ONE/TWO/THREE:至少1/2/3个拷贝节点ACK写成功,弱一致性
- Cassandra保证的是Eventually Consistency, 即:多个数据拷贝节点可能在写的时候存在一段时间不一致,但是会最终一致
3. 读/写
类似bigtable
- 不直接写入硬盘,写时先写入内存中的memTable.达到一定条件后,转移到硬盘中的SSTable (类似于Write back cache, 保障了写的QPS).
- 以Column Family为单位写入
- 读取时,一个Column Family可能存储在多个SSTable上,使用Bloom Filter决定是在哪一个上进行检索
- 节点级别,维护着一个commit log,可以用来恢复MemTable数据
- periodically进行compaction,把一个Column Family对应的多个SSTable进行合并。
0 0
- cassandra 学习笔记
- cassandra学习笔记一
- cassandra学习笔记二
- cassandra学习笔记三
- cassandra学习笔记四
- cassandra学习笔记五
- cassandra 学习笔记
- cassandra学习流水笔记
- cassandra学习笔记二
- Cassandra学习笔记
- Cassandra学习笔记
- cassandra学习笔记
- Cassandra 学习笔记
- Cassandra 学习笔记
- Cassandra 学习笔记
- Cassandra 学习笔记
- Cassandra学习笔记(1)
- cassandra学习笔记2--Cassandra数据模型
- 集成SSSP
- android textview Russian Ruble
- 在iOS8下通过编码设置和管理VPN连接
- EasyUI的datagrid删除后一页所有数据不自动显示前页数据
- JSP中判断一个JAVA后台传来的集合是否为空
- Cassandra学习笔记
- 更轻量的 View Controllers
- fonts.useso 导致网站加载慢
- 中国剩余定理 poj1006
- spring4与quartz2.2集群配置
- 读书笔记
- Mybatis的Dao向mapper传多个参数(三种解决方案)
- 【BLE】-CC2541低功耗测试实验-芯片验证篇
- 并查集——1073 家族