本文知识点来源于官网地址https://www.cockroachlabs.com/docs/v22.1/architecture/distribution-layer.html
概览
CockroachDB(以下简称CRDB)将数据存储在key-value对组成的巨大的有序map结构。这个map里面描述了集群中的所有数据,以及数据的位置。数据及数据的位置信息(我们称之为meta数据)均以range为单位存储。所有的key都能在某一个range中找到具体的数据。
通过这个巨大的有序的map,可以实现:
- 简单查找:由于我们确定哪些节点负责存储哪些数据,查询可以快速定位到要查找的数据。
- 高效扫描:由于数据是顺序存放,很容易在扫描过程中找到特定的数据。
这个巨大的有序的map主要包括两部分内容:
- meta数据:描述集群中数据位置的元数据
- 用户数据:存储表的数据
Meta数据
集群中所有range的位置都存储在key空间开头的一个两级索引中,称为meta range。meta range中包含一级meta(meta1)及二级meta(meta2),meta1指向meta2,meta2指向集群中的数据。
可以用以下树型结构来理解两级索引和用户数据的关系: