cassandra主键索引介绍

简介: 主键索引格式如下: summery.db:index文件的索引,对partition做sampling索引,加快查找。 index.db:索引文件,data文件中每个partition都会有一个索引项,指向该partition在data文件中的偏移,还有对clustering的采样(sampling)索引,可直接指向具体clustering数据偏移。

主键索引格式如下:

image

  • summary.db:
    index文件的索引,对partition做sampling索引,加快查找。
  • index.db:
    索引文件,data文件中每个partition都会有一个索引项,指向该partition在data文件中的偏移,还有对clustering的采样(sampling)索引,可直接指向具体clustering数据偏移。
  • data.db:
    数据文件,完整格式

查找过程

summary是一个sstable概述,header中记录了最大partition,最小partition,这样我们指定key查找时,可以很方便判断是否要跳过这个这个sstable。当memtable flush本地文件时,不断写data及index文件,同时也会对index.db文件取样,index.db索引项每写入128个,会在summary中记录一下当前采样项目,同时会记录index.db的文件偏移,summary文件目前就是为了加快查找。index.db文件中的rowIndexEntry其实就是索引data文件中的PartitionKey数据的,一一对应,dataFilePostion记录了该partition在data文件中的偏移。在cassandra中一个partition允许上G大小,所以势必会有很多cluster,如果一次主键查找需要扫描整个上G数据段,效率可想而知。所以cassandra 在rowIndexEntry会写入很多indexInfo,indexInfo是clustering的索引,也是128行clustring数据采样一次,产生一个indexInfo,所以这个indexInfo会包括这段范围内的clustering信息,起始/结束时clustering,还有对应数据文件的偏移。rowIndexEntry数据结构尾部是一串offset,指向前面的一个个indexInfo,因为clustering是变长的,indexInfo也是变长的,使用offset记录偏移加速访问。正因为上述索引体系结构,对于partitionKey+clustering的查找,可以先找到indexInfo,再去读数据文件。

钉钉群

lALPDgQ9ql0mM3XMp8yo_168_167_png_620x10000q90g

钉钉群入群链接:https://c.tb.cn/F3.ZRTY0o

相关文章
|
消息中间件 存储 Kafka
【Kafka】kafka维护消息状态的跟踪方法
【4月更文挑战第6天】【Kafka】kafka维护消息状态的跟踪方法
|
云安全 缓存 监控
什么是CC攻击,有什么办法防御CC攻击
CC攻击的前身是一个名为Fatboy的攻击程序,而之所以后来人们会称之为CC,是因为DDoS攻击发展的初期阶段,绝大部分DDoS攻击都能被业界熟知的“黑洞”(Collapsar,一种安全防护产品)所抵挡,CC攻击的诞生就是为了直面挑战黑洞,所以Challenge Collapsar(挑战黑洞).
什么是CC攻击,有什么办法防御CC攻击
|
9月前
|
消息中间件 搜索推荐 调度
RocketMQ实战—8.营销系统业务和方案介绍
本文详细介绍了电商营销系统的业务流程、技术架构及挑战解决方案。涵盖核心交易与支付后履约流程,优惠券和促销活动的发券、领券、用券、销券机制,以及会员与推送的数据库设计。技术架构基于Nacos服务注册中心、Dubbo RPC框架、RocketMQ消息中间件和XXLJob分布式调度工具,实现系统间高效通信与任务管理。针对千万级用户量下的推送和发券场景,提出异步化、分片处理与惰性发券等优化方案,解决高并发压力。同时,通过RocketMQ实现系统解耦,提升扩展性,并利用XXLJob完成爆款商品推荐的分布式调度推送。整体设计确保系统在大规模用户场景下的性能与稳定性。
RocketMQ实战—8.营销系统业务和方案介绍
|
5月前
|
JSON 算法 API
拼多多API跨店比价功能,选品效率提升60%!
拼多多推出API跨店比价功能,助力商家与消费者高效选品。通过自动化比价与智能算法,实现选品效率提升60%。开发者可快速集成,优化采购与购物体验。智能高效,抢占市场先机。了解详情:https://o0b.cn/evan
461 0
|
8月前
|
NoSQL 算法 安全
分布式锁—1.原理算法和使用建议
本文主要探讨了Redis分布式锁的八大问题,包括非原子操作、忘记释放锁、释放其他线程的锁、加锁失败处理、锁重入问题、锁竞争问题、锁超时失效及主从复制问题,并提供了相应的优化措施。接着分析了Redis的RedLock算法,讨论其优缺点以及分布式专家Martin对其的质疑。此外,文章对比了基于Redis和Zookeeper(zk)的分布式锁实现原理,包括获取与释放锁的具体流程。最后总结了两种分布式锁的适用场景及使用建议,指出Redis分布式锁虽有性能优势但模型不够健壮,而zk分布式锁更稳定但部署成本较高。实际应用中需根据业务需求权衡选择。
|
11月前
|
消息中间件 缓存 NoSQL
Redis原理—5.性能和使用总结
本文详细探讨了Redis的阻塞原因、性能优化、缓存相关问题及数据库与缓存的一致性问题。同时还列举了不同缓存操作方案下的并发情况,帮助读者理解并选择合适的缓存管理策略。最终得出结论,在实际应用中应尽量采用“先更新数据库再删除缓存”的方案,并结合异步重试机制来保证数据的一致性和系统的高性能。
Redis原理—5.性能和使用总结
|
缓存 NoSQL Java
lua脚本在redis中的使用场景
lua脚本在redis中的使用场景
529 0
|
Java 数据库连接 数据库
Spring高手之路14——深入浅出:SPI机制在JDK与Spring Boot中的应用
Spring Boot不仅是简化Spring应用开发的工具,它还融合了许多先进的机制。本文深入探讨了Spring Boot中与Java的标准SPI相似的机制,揭示了它的工作原理、应用场景及与标准SPI的异同。文章通过实际代码示例为你展示了如何在Spring Boot中使用这一机制,并以形象的比喻帮助你理解其背后的思想。
822 0
Spring高手之路14——深入浅出:SPI机制在JDK与Spring Boot中的应用
|
分布式计算 Hadoop 大数据
Shell脚本-修改/etc/hosts文件
在学习大数据配置hadoop集群使用虚拟机的时候,每次开机集群各个机器的ip都可能发生变化,但修改静态ip又不太会操作,写个脚本来操作