数据库的系统表用来存放结构元数据,通过对元数据实现“增、删、改、查”等操作实现对数据库管理系统的控制。可以说系统表就是数据库的“总目录”,如果对系统表的操作和维护效率低下,则会成为整个数据库管理系统的性能“瓶颈”。
本篇介绍了传统系统表设计存在的问题,并详述了CirroData分布式数据库在系统表设计上所做的优化改进,从而大大提高了整个系统的管理效率。
01 背景介绍
数据库的系统表用来存放结构元数据,有两方面的功能:
- 数据库元数据的存储管理;
- 通过结构化的组织方式为数据库用户、管理员等提供数据库元数据的可视化视图,方便管理数据库。
CirroData借鉴Unix系统中一切皆文件的设计思想,将各种元数据当作普通的数据库表来进行设计与实现。目前实现了database,table, schema, index,cluster等几十张系统表。
本篇中CirroData的优化涉及系统表查询计划的执行,包括系统表数据的存储和扫描。
02 CirroData系统表数据扫描模块架构
如上图所示,CirroData系统表数据扫描分三个模块,数据扫描层、计算层和存储层。
- 数据扫描层负责下发数据扫描指令给计算层并将计算层读取的数据返回给数据扫描层的调用者执行器。
- 计算层负责对从存储层读取的数据进行格式转换,过滤。
- 存储层负责存储系统表的数据,并对外提供Read/Write/Delete功能。