如何设计一个关系型数据库?
回答:要设计一个关系型数据库,首先要将其划分为两大部分:一个是存储部分,该部分类似一个文件系统,将数据持久化到存储设备当中;有存储是不够的,还需要一个程序实例模块,对存储进行逻辑上的管理,而程序实例部分将包含:将数据的逻辑关系转换为物理的存储关系的存储管理模块;优化执行效率的缓存模块;将SQL语句进行解析的SQL解析模块;记录操作的日志管理模块;进行多用户管理的权限划分模块;灾难恢复的容灾机制模块;优化数据查询效率的索引管理模块;使数据库支持并发操作的锁模块。
存储模块:存储数据,将数据化最终持久化存入磁盘中
程序实例模块:使用逻辑结构来映射出物理结构,在程序中提供获取及管理数据的方式,还有必要的问题追踪机制。
存储管理模块:对数据的格式,以及文件的风格进行统一的管理,以及把物理数据通过逻辑的形式给组织和表示出来。
缓存机制模块:引入缓存机制,将取出的数据块放在缓存中,下次需要的时候直接从内存返回。缓存不宜过大,并且算法里需要有淘汰机制。
SQL解析模块:将SQL编译解析,转化成机器可识别的指令。为了进一步提升SQL的执行效率,将SQL缓存到缓存中,编译好的SQL方便下次直接进行解析。
日志管理模块:SQL操作需要记录下来,方便做数据库的主从同步和灾难恢复。
权限划分模块:提供给用户访问数据的私密空间。
容灾机制模块:当数据库挂了该如何恢复,恢复到什么程度。
索引管理模块:提升查询数据的速度
锁管理模块:让数据库支持并发