美文网首页
Cassandra架构

Cassandra架构

作者: Bitson | 来源:发表于2018-12-03 17:57 被阅读0次

    参考:

    cassandra简介

    casssandra架构1架构二

    HQL要点

    1. cassandra是p2p架构,用gossip协议,hbase是主从架构

    2. 数据模型和HBase非常相似,因为他们都是基于bigtable来实现的

    3. 数据的

    - write:数据写到缓存,到一定大小再flush到磁盘,memtable和sstabke磁盘文件一对一)

    - compaction:也是周期性地将标记为删除的数据进行删除,合并多个sstable

    - update:找到primary key相同的行,找到则更新,找不到就是创建新行

    - delete:用tombstone标记

    - read:联合memtable和多个sstable的数据拼装出完整的数据

    这些操作都和hbase的很类似都很相似

    4. cassandra是一个AP系统,提供最终一致性。可以通过调整配置另它更趋向于一个CP系统,一般情况下,一个分布式存储系统只能在C和A之间权衡。而Hbase是一个CP系统,拥有强一致性,因为单份数据只能从一个region server的region里获取

    5. 一致性计算

    - R 是读取数据时候需要读取的节点数

    - W 是更新数据时需要保证写完的节点数,写完W个节点后返回写如成功,例如写如一份就返回成功,其他的部分可以使用异步写

    - N 数据的副本数

    - R + W > N 是强一致性,例如关系型数据库中,主从数据库同步复制,R = 1,W = 2,N = 2

    - R + W <= N 是弱一致性,例如Nosql数据库中,主从数据库异步复制,R = 1,W = 1,N = 2

    6. 物化视图(materialized view)

    基于另一个表来创建一个新表,原表数据更新后,新表的数据会自动更新,但数据的更新会有延迟,因为是异步更新,HBase没有找到物化视图的资料

    7. 二级索引

    二级索引将索引列存储到一个新的隐藏的表中,primary key是索引列,value是原表的primary key。HBase有一些二级索引的方案,有基于coprocessor的方案(phoenix)和非coprocessor的方案

    适用场景:

    - 表中很多行具有相同的值,表中不同的值越多,隐藏表中的索引列的值就越多,查询成本越大

    不适用场景:

    - high-cardinality 列,这一列有很多不同的值, 此时,查询了很多值,却只会取其中很小一部分作为结果。此时,可以用物化视图。另一个极端,如布尔值,区分度太小,也不适合。

    - counter column。(频繁更新?)

    - 频繁更新/删除的列(频繁更新两个表?)

    - 从多个partition 取数据时,此时,涉及到多个partition,随着集群越来越大,可能越来越慢。

    8. 批量操作

    批量插入和更新操作是原子操作,当批量操作在一个partition里进行时,性能比较好,当批量操作是跨分区的时候,会有性能问题。coordinator负责管理所有写操作,会成为瓶颈。

    相关文章

      网友评论

          本文标题:Cassandra架构

          本文链接:https://www.haomeiwen.com/subject/oyoycqtx.html