CockroachDB是一个分布式关系型数据库,它的主要设计目标是可扩展性,强一致性和高可靠性。CockroachDB能够在无人为干预情况下,以极短的中断时间容忍磁盘、主机、机架甚至整个数据中心的故障。CockroachDB采用完全去中心化架构,集群中各个节点的地位完全相同,同时所有功能封装在一个二进制可执行程序文件中,可以做到最小化设置和没有外部依赖的直接部署。
CockroachDB对数据库客户端提供标准SQL接口(兼容PostgreSQL),集群中任意节点都可以作为接入节点处理用户的SQL请求。接入节点把SQL请求转换为一组KV操作,并且在必要时将这些操作发送至集群中其它节点进行处理,完成后将结果返回给客户端。CockroachDB底层将数据组织成由有序的Key-Value对组成的一个巨大的KV Map,其中Key和Value均为字节串(byte strings)。也就是说,CockroachDB底层将数据组织成一个巨大的有序Map,这个Map由一个一个Key-Value对组成,按照Key值单调有序存放,key和value都以字节串的形式存储。
这个巨大的有序KV Map逻辑上被切分成很多较小的段,每一个这样的小段叫做范围(Range,Google的Spanner也叫Range,PingCap的TiDB叫做Region)。每个Range中的数据由本地KV存储引擎(RocksDB&