cassandra主键索引介绍

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介: 主键索引格式如下: 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

相关文章
|
5月前
|
存储 关系型数据库 MySQL
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
385 0
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
|
关系型数据库 PostgreSQL 索引
PostgreSQL 11 新特性解读:分区表支持创建主键、外键、索引
PostgreSQL 10 版本虽然支持创建范围分区表和列表分区表,但创建过程依然比较繁琐,需要手工定义子表索引、主键,详见 PostgreSQL10:重量级新特性-支持分区表,PostgreSQL 11 版本得到增强,在父表上创建索引、主键、外键后,子表上将自动创建,本文演示这三种场景。
6599 0
|
5月前
|
存储 NoSQL 分布式数据库
Hbase的三种索引_全局索引,覆盖索引,本地索引(七)
Hbase的三种索引_全局索引,覆盖索引,本地索引(七)
90 0
|
7月前
|
存储 SQL 关系型数据库
MySQL学习笔记-主键索引和二级索引
MySQL学习笔记-主键索引和二级索引
47 0
|
8月前
|
关系型数据库 数据库 数据库管理
关系型数据库中的主键和外键
关系型数据库中的主键和外键
|
9月前
|
NoSQL 关系型数据库 MySQL
MongoDB-复合索引
和 MySQL 一样, MongoDB 也支持复合索引, 也就是将多个字段的值作为索引。 ?> 插入测试数据:
149 0
|
9月前
|
SQL 关系型数据库 MySQL
MySQL复合索引和单列索引的单表查询分析
MySQL复合索引和单列索引的单表查询分析
|
11月前
|
关系型数据库 数据库 索引
主键和唯一索引的区别
主键和唯一索引的区别
130 0
|
存储 关系型数据库 MySQL
MySQL InnoDB表和索引之聚簇索引与第二索引
MySQL InnoDB表和索引之聚簇索引与第二索引
66 0
|
关系型数据库 MySQL 索引
mysql:主键、外键和索引的区别?
mysql:主键、外键和索引的区别?
157 0