Cassandra
张兆坤的那些事
最近主要折腾kubernetes、istio、SpringCloud、可观测性这个四个方向,内容多且复杂,最重要是坚持!
展开
-
Cassandra源代码分析(一)Table和ColumnFamilyStore
Table是Cassandra中表示DB对象的顶级描述,这里的Table实际上是一个古老的名词,合理的意思应该是Keyspace,表示的是数据库级别的描述信息。在每一个放置了 column family 的节点上,具有相同的 cf-name 的 column-family 会被保存在一起,称为一个 column family store (CFS)原创 2010-07-28 07:51:00 · 4343 阅读 · 1 评论 -
Cassandra中的二级索引
怎么去给一个Row的Column建立二级索引是Cassandra中一个常见拟题。下面的这个帖子来讲一个实现方式,当然不是只有这一种才能实现。对于有经验的Cassandra用户来讲,这个帖子应该会提起兴趣哦,这里描述的实现方式根本不用Super Column,也就不会有使用Super Column带来的复杂度和约束了。此外,应该指出的是,Cassandra0.7版本以上都会实现原生的二级索引,它使下翻译 2011-12-25 21:49:11 · 5819 阅读 · 1 评论 -
Cassandra参考资料汇总
(1)Cassandra的客户端http://wiki.apache.org/cassandra/CassandraCli0_7http://jonathanhui.com/cassandra-cli-clienthttp://www.datastax.com/docs/0.8/dml/using_cli(2)Cassandra的索引http://www.datasta原创 2011-12-22 22:39:03 · 1480 阅读 · 0 评论 -
Cassandra使用案例
CloudKick:http://www.360doc.com/relevant/45799301_more.shtml应用场景,监控与实时数据分析,主要用于存储三种类型的数据:数字和文本表示的度量数据;按时间段累计的汇总数据;时间片段的状态数据。CloudKick主要利用了cassandra的良好的写入特点,不过存储的数据结构很简单,不涉及从RDBMS的模型转换为NOsql的模式变迁原创 2012-01-02 12:38:09 · 2582 阅读 · 0 评论 -
用Column Family作为索引
用一个ColumnFamily来存储数据,用一个或者多个ColumnFamily来为这些数据提供索引服务,是一个常见的数据存储策略。索引策略主要依赖需要被索引的数据。记住,索引中的每一行都存储在单一的节点上,所以当一个单行索引被大量使用的时候,这个节点的负载会比平均负载大一些。以下为一些常见使用的索引策略。一对一这种情况对应于关系数据库的唯一索引,被索引的值不存在重复,每一个被索引的值原创 2011-12-23 23:29:27 · 3169 阅读 · 0 评论 -
Cassandra中Gossip具体实现方式
Cassandra集群没有中心节点,各个节点的地位完全相同,它们通过一种叫做gossip的协议维护集群的状态。 通过gossip,每个节点都能知道集群中包含哪些节点,以及这些节点的状态,这使得Cassandra集群中的任何一个节点都可以完成任意key的路由,任意一个节点不可用都不会造成灾难性的后果。原创 2010-09-02 20:17:00 · 15843 阅读 · 6 评论 -
Cassandra数据副本策略
LocalStrategy :只在本地节点中保持一个副本。RackUnawareStrategy:不考虑机柜因素,将Token按照从小到大的顺序,从第一个Token位置处依次取N个节点作为副本。RackAwareStrategy:考虑机柜因素,在primaryToken之外,先找一个处于不同数据中心的点,然后在不同机柜找。DatacenterShardStategy:这需要复制策略属性文件,在该文件中定义在每个数据中心的副本数量。在各数据中心副本数量的总和应等于Keyspace的副本数量。举例来原创 2010-08-23 22:50:00 · 4119 阅读 · 3 评论 -
Cassandra节点管理
讲述Cassandra的节点Bootstrap,增加节点,删除节点,移动节点,恢复节点,负载平衡过程中的那些事!原创 2010-08-22 08:23:00 · 8000 阅读 · 0 评论 -
Cassandra的分布式删除(DistributedDeletes)
因此,Cassandra所做的是那些分布式系统设计者所做的,都会遭遇一个不知道如何去解决的问题:定义一个附加限制,并且把它和我们要做的东西融合成一个。在这里,我们定义了一个常量,GCGraceSeconds,让每一个节点跟踪本地墓碑值的年龄。一旦墓碑值的年龄超过这个常量,它将进行Compation的时候被收集(看MemtableSSTable)。这意味着,如果你有一个节点宕机时间比GCGraceSeconds更长的话,你应该把它作为一个失败的节点,并按照在Operations中描述的那样取代它。默认的设置是原创 2010-08-21 12:10:00 · 3472 阅读 · 0 评论 -
Cassandra源代码分析(二)动态变更Keyspace和ColumnFamily定义
本节讲述的是Cassandra0.7版本的一些特性,即在Cassandra集群运行过程中动态修改Keyspace的数据模型。在Cassandr中有一个名称为System的Keyspace,它包含4个Columnspace,分别为LocationInfo、HintsColumnFamily、 Migrations、Schema,具体的定义参见类CFMetaData。Schema中存储keyspace定义信息,Migrations中记录了keyspace的变更信息。原创 2010-08-03 22:33:00 · 3808 阅读 · 0 评论 -
Cassandra,我又回来了
早在2010年中的时候,我就对Casandra特别感兴趣,那时候还是0.7版本,累计2个月每天晚上都花2小时来啃源代码,读写流程都调试N遍了,也整出来几篇小文,不过后台工作方向上最终没有它的用武之地,后面就慢慢没有再持续更进了。这个差不多5年以后的现在,有些场景觉得Cassandra很合适,就又把他拿出来溜一把。 业务上有类似播放列表的需求,由于需要分析用户的行为数据(用户的播原创 2015-11-29 23:49:12 · 6238 阅读 · 2 评论