8.4.8 分层结构
OceanBase对外提供的是与关系数据库一样的SQL操作接口,而内部却实现成一个线性可扩展的分布式系统。系统从逻辑实现上可以分为两个层次:分布式存储引擎层以及数据库功能层。
OceanBase一期只实现了分布式存储引擎,这个存储引擎支持如下特性:
●支持分布式数据结构,基线数据逻辑上构成一颗分布式B+树,增量数据为内存中的B+树;
●支持目前OceanBase的所有分布式特性,包括数据分布、负载均衡、主备同步、容错、自动增加/减少服务器等;
●支持根据主键更新、插入、删除、随机读取一条记录,另外,支持根据主键范围顺序查找一段范围的记录。
二期的OceanBase版本在分布式存储引擎之上增加了SQL支持:
●支持SQL语言以及MySQL协议,MySQL客户端可以直接访问;
●支持读写事务;
●支持多版本并发控制;
●支持读事务并发执行。
从另外一个角度看,OceanBase融合了分布式存储系统和关系数据库这两种技术。通过分布式存储技术将基线数据分布到多台ChunkServer,实现数据复制、负载均衡、服务器故障检测与自动容错,等等;UpdateServer相当于一个高性能的内存数据库,底层采用关系数据库技术实现。我们后来发现,有一个号称“世界上最快的内存数据库”MemSQL采用了和OceanBase UpdateServer类似的设计,在拥有64个CPU核心的服务器上实现了每秒150万次单行写事务。OceanBase相当于GFS+MemSQL,ChunkServer的实现类似GFS,UpdateServer的实现类似MemSQL,目标是成为可扩展的、支持每秒百万级单行事务操作的分布式数据库。
后续将分为两章,分别讲述OceanBase分布式存储引擎层以及数据库功能层的实现细节。