SQlite源码分析

目录管理器

数据库的目录管理器以元数据的格式保存了系统中数据的相关信息.目录管理器记录了系统中基本实体(用户、模式、表、列、索引等)的名称及它们的关系,并且以一系列表的形式存储在数据库中。元数据保持与数据一样的格式,可以使得系统在使用上更加紧凑、简单:用户可以使用同一种语言和工具来研究其他数据的元数据,而且,内部系统用于管理元数据的代码大部分与管理其他表的代码一样.代码和语言的复用是重要的经验.
出于效率原因,我们通常采用不同方式来处理基本的目录数据和通常的表.目录中经常访问的部分常常根据需求物化在内存中,所采用的数据结构,一般是对目录的扁平关系结构进行非规范化处理,转换成主存中的对象网络形式.内存中缺少的数据独立性是可以接受的,因为,内存中的数据结构只供查询解析器和优化器以程序化的方式使用.额外的目录数据在解析时会被缓存在查询计划中,这些数据常常也还是采用适用于查询的非规范化格式.此外,目录表通常服务于特殊情况的事务处理技巧,用来减少事务处理中的热点(hot spots).