论文部分内容阅读
本文研究一种嵌入式数据库系统EDB2。它直接在flash中运行,且可脱离操作系统。它抛弃了“外存”概念,将flash和RAM都视为“内存”。它采用了XIP的思想,直接从内存的flash运行代码和读取数据,省却了在运行代码和读取数据之前代码与数据先从flash复制到RAM的时间,也节省系统RAM的容量,还降低了功耗。另外,EDB2能在无操作系统的嵌入式系统中运行,节省了存储空间,也节省了应用程序通过文件系统跟数据库交互过程文件系统本身消耗的时间,还降低了功耗。EDB2适用于因flash空间紧缺而装不下操作系统,或对时间的要求高,需要直接在flash中执行代码的嵌入式应用场合。
本文设计了EDB2的体系结构。它以实用、体积小、便于嵌入式应用为主要追求目标,包括用户接口、库表索引、flash空间管理、文件地址映射、RAM空间管理五个子系统。用户接口子系统为用户进行数据库操作提供接口。库表索引子系统为数据库索引提供支持。flash空间管理子系统负责flash空间的管理,包括空间分配、磨损平衡、垃圾收集策略的实现。文件地址映射子系统解决的是为文件在RAM中构建索引的问题。RAM空间管理子系统负责RAM中数据结构和缓冲区的空间管理工作。
本文研究了EDB2对自身的flash和RAM的管理以及文件逻辑地址到物理地址的映射问题,并描述了主要的相关数据结构,算法和函数。对flash的管理采用了磨损平衡以及垃圾收集机制,对RAM的管理采用了动态分配机制,文件地址映射采用了B树数据结构。
本文在EDB2中定义了三种文件:库表文件、库表索引文件、系统文件。库表文件和系统文件都采用了顺序文件格式,库表索引文件采用了B树文件格式。
本文设计了用户接口,包括创建库表、删除库表、打开库表、关闭库表、添加记录、删除记录、查询记录、更新记录等函数。用户接口函数不求众多,只求满足应用要求。
本文讨论了EDB2与Berkeley DB或SQLite在记录格式、数据存储方式、并发性、用户接口四个方面的不同之处。
本文最后给出了EDB2在物流管理中的一个应用实例。