一种嵌入式轻量级数据库系统技术方案

技术编号:37988109 阅读:10 留言:0更新日期:2023-06-30 10:02
本发明专利技术公开了一种嵌入式轻量级数据库系统。本发明专利技术包括数据库文件和管理软件。数据库文件由文件头和存储单元组成,每个存储单元是由用户数据和管理数据组成。文件头包括数据库标识符,存储单元的管理数据包括数据状态值、数据校验值、用户数据长度和键值。数据库系统使用分配记录表和回收记录表对数据库文件进行管理,分配记录表记录查询到的存储单元的键值和偏移地址,回收记录表记录回收的存储单元长度和偏移地址。数据库系统的缓存区包括多个数据块,缓存区是从数据库文件中读取存储单元形成,通过刷新值管理缓存区。管理软件实现的功能包括查询数据、删除数据和添加数据。本发明专利技术FLASH存储占用少,内存消耗小,管理数据简单,使用方便。使用方便。使用方便。

【技术实现步骤摘要】
一种嵌入式轻量级数据库系统


[0001]本专利技术属于计算机
,尤其是嵌入式
,具体涉及一种嵌入式轻量级数据库系统。

技术介绍

[0002]数据库系统(DatabaseSystem,简称DBS)是由数据库文件和管理软件组成的系统。数据库是按照数据结构来组织、存储和管理数据的仓库。
[0003]嵌入式系统是以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,功耗等有严格要求的专用计算机系统。
[0004]在计算机应用中,由于需要对数据不断的操作,所以都需要使用数据库来管理数据。这些数据管理系统都很完善,功能丰富,但是在很多嵌入式设备中。这些大型数据库显得不合适。首先这些数据库管理软件占用存储的空间大。其次程序依赖的东西比较多。最后软件执行太复杂。对计算机芯片的要求很高。在嵌入式设备中,硬件条件有限,使用FLASH存储器和内存都很小,嵌入式芯片的工作频率有限,大多数的数据库在嵌入式设备中根本没法运行,或者运行的性能很差。但是嵌入式系统中也需要处理数据。如果没有数据管理,那我们的开发时间很长,项目周期长。所以我们需要一种轻量级数据库。具有数据库的基本功能且占用资源少,使用方便。

技术实现思路

[0005]本专利技术的目的就是提供一种嵌入式轻量级数据库系统。
[0006]本专利技术包括一个或多个数据库文件,以及管理软件。
[0007]所述的数据库文件由文件头DB_Header和多个存储单元DB_Store_Unit组成,每个存储单元是由用户数据userdata和管理数据DB_record组成,用户数据是实际存储的数据,管理数据是数据库为管理用户数据而创建的数据。
[0008]所述的文件头DB_Header包括4字节的数据库标识符magic。
[0009]所述的存储单元DB_Store_Unit的管理数据由数据状态值Ds、数据校验值Dc、用户数据长度Dl和键值Kv组成,长度为9字节;数据状态值Ds有存在和删除两个标志;键值为查找管理数据的索引值,每个存储单元的键值是唯一的。
[0010]数据库系统使用分配记录表和回收记录表对数据库文件进行管理。分配记录表记录查询到的存储单元的键值Kv和偏移地址offset;偏移地址offset是从数据库文件开始位置0到存储单元的管理数据的开始位置的长度。回收记录表记录回收的存储单元长度len和偏移地址offset。分配记录表和回收记录表运行在内存中,在数据库系统初始化时,通过依次读取每个数据库文件的存储单元创建。数据库系统的缓存区是内存中部分数据库文件的数据,缓存区包括多个数据块,数据块的存储内容即为存储单元的存储内容;在数据库系统初始化时,缓存区是从数据库文件中读取存储单元形成,刷新值cache管理缓存区,刷新值cache有刷新和不刷新两个标志。
[0011]所述的管理软件实现的功能包括查询数据、删除数据和添加数据。具体实现方法如下:
[0012]步骤(1)启动数据库系统,管理软件检测数据库文件是否存在;如果不存在,创建数据库文件,写入文件头DB_Header,执行步骤(2);如果存在,直接执行步骤(2);
[0013]步骤(2)打开数据库文件,读取文件头DB_Header;如果文件头DB_Header损坏,上报错误,程序终止;如果文件头DB_Header正常,读取存储单元DB_Store_Unit的管理数据,执行步骤(3);
[0014]步骤(3)依次读取每个存储单元的管理数据的数据状态值Ds;如果数据状态值Ds标志为存在,将该管理数据的键值Kv和偏移地址offset写到分配记录表;如果数据状态值Ds标志为删除,将该管理数据的存储单元长度len和偏移地址offset写到回收记录表;由此建立分配记录表和回收记录表;
[0015]步骤(4)管理软件监控用户指令:如果用户指令为查询,执行步骤(5)~(6);如果用户指令为删除,执行步骤(7)~(8);如果用户指令为添加,执行步骤(9)~(11);
[0016]步骤(5)根据用户需查询数据的键值Kv查询分配记录表;
[0017]如果分配记录表中存在该键值Kv,根据该键值Kv对应的偏移地址offset读取缓存区的数据块,根据该数据块的管理数据记录的用户数据长度Dl读取用户数据,如读取成功,查询流程完成,如在缓存区未读取到用户数据,执行步骤(6);
[0018]如果分配记录表中不存在该键值Kv,上报数据不存在,查询流程完成;
[0019]步骤(6)判断刷新值cache的状态;
[0020]如果刷新值cache为刷新标志,则根据缓存区的开始和结束地址,将对应存储单元的数据擦除,并将缓存区数据写入对应存储单元;按照键值Kv对应的偏移地址offset,在数据库文件中读取存储单元,根据该存储单元中管理数据记录的用户数据长度Dl读取用户数据,读取成功,查询流程完成;
[0021]如果刷新值cache为不刷新标志,按照键值Kv对应的偏移地址offset,在数据库文件中读取存储单元,根据该存储单元中管理数据记录的用户数据长度Dl读取用户数据,读取成功,查询流程完成;
[0022]步骤(7)根据用户需删除数据的键值Kv查询分配记录表;
[0023]如果分配记录表中存在该键值Kv,根据该键值Kv对应的偏移地址offset读取缓存区的数据块的管理数据的数据状态值Ds;如果读取成功,则将缓存区的数据块的数据状态值Ds设置为删除标志,刷新值cache设置为刷新标志,执行步骤(8);如果读取不成功,直接执行步骤(8);
[0024]如果分配记录表中不存在该键值Kv,上报数据不存在,删除流程结束;
[0025]步骤(8)判断刷新值cache的状态;
[0026]如果刷新值cache为刷新标志,则根据缓存区的开始和结束地址,将对应存储单元的数据擦除,并将缓存区数据写入对应存储单元;然后按照键值Kv对应的偏移地址offset,在数据库文件中读取缓存区长度的数据到缓存区,并将对应的数据块的数据状态值Ds设置为删除标志;将该键值Kv对应的偏移地址offset和该偏移地址offset对应的存储单元长度len写入回收记录表,删除分配记录表中该键值Kv和对应的偏移地址offset,删除流程完成;
[0027]如果刷新值cache为不刷新标志,按照键值Kv对应的偏移地址offset,在数据库文件中读取缓存区长度的数据到缓存区,并将对应的数据块的数据状态值Ds设置为删除标志,刷新值cache设置为刷新标志;将该键值Kv对应的偏移地址offset和该偏移地址offset对应的存储单元长度len写入回收记录表,删除分配记录表中该键值Kv和对应的偏移地址offset,删除流程完成;
[0028]步骤(9)在回收记录表中查找与用户需添加数据的长度加上9字节的管理数据长度后相同的存储单元长度len;
[0029]如果存在该存储单元长度len,根据该存储单元长度len对应的偏移地址offset,在缓存区找本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种嵌入式轻量级数据库系统,包括一个或多个数据库文件,以及管理软件;其特征在于:所述的数据库文件由文件头DB_Header和多个存储单元DB_Store_Unit组成,每个存储单元是由用户数据userdata和管理数据DB_record组成;所述的文件头DB_Header包括数据库标识符magic;所述的存储单元DB_Store_Unit的管理数据由数据状态值Ds、数据校验值Dc、用户数据长度Dl和键值Kv组成;数据状态值Ds有存在和删除两个标志;键值为查找管理数据的索引值,每个存储单元的键值是唯一的;数据库系统使用分配记录表和回收记录表对数据库文件进行管理;分配记录表记录查询到的存储单元的键值Kv和偏移地址offset;偏移地址offset是从数据库文件开始位置0到存储单元的管理数据的开始位置的长度;回收记录表记录回收的存储单元长度len和偏移地址offset;分配记录表和回收记录表运行在内存中,在数据库系统初始化时,通过依次读取每个数据库文件的存储单元创建;数据库系统的缓存区是内存中部分数据库文件的数据,缓存区包括多个数据块,数据块的存储内容即为存储单元的存储内容;在数据库系统初始化时,缓存区是从数据库文件中读取存储单元形成,刷新值cache管理缓存区,刷新值cache有刷新和不刷新两个标志;所述的管理软件实现的功能包括查询数据、删除数据和添加数据。2.如权利要求1所述的一种嵌入式轻量级数据库系统,其特征在于:所述的管理软件具体实现方法如下:步骤(1)启动数据库系统,管理软件检测数据库文件是否存在;如果不存在,创建数据库文件,写入文件头DB_Header,执行步骤(2);如果存在,直接执行步骤(2);步骤(2)打开数据库文件,读取文件头DB_Header;如果文件头DB_Header损坏,上报错误,程序终止;如果文件头DB_Header正常,读取存储单元DB_Store_Unit的管理数据,执行步骤(3);步骤(3)依次读取每个存储单元的管理数据的数据状态值Ds;如果数据状态值Ds标志为存在,将该管理数据的键值Kv和偏移地址offset写到分配记录表;如果数据状态值Ds标志为删除,将该管理数据的存储单元长度len和偏移地址offset写到回收记录表;由此建立分配记录表和回收记录表;步骤(4)管理软件监控用户指令:如果用户指令为查询,执行步骤(5)~(6);如果用户指令为删除,执行步骤(7)~(8);如果用户指令为添加,执行步骤(9)~(11);步骤(5)根据用户需查询数据的键值Kv查询分配记录表;如果分配记录表中存在该键值Kv,根据该键值Kv对应的偏移地址offset读取缓存区的数据块,根据该数据块的管理数据记录的用户数据长度Dl读取用户数据,如读取成功,查询流程完成,如在缓存区未读取到用户数据,执行步骤(6);如果分配记录表中不存在该键值Kv,上报数据不存在,查询流程完成;步骤(6)判断刷新值cache的状态;如果刷新值cache为刷新标志,则根据缓存区的开始和结束地址,将对应存储单元的数据擦除,并将缓存区数据写入对应存储单元;按照键值Kv对应的偏移地址offset,在数据库文件中读取存储单元,根据该存储单元中管理数据记录的用户数据长度Dl读取用户数据,
读取成功,查询流程完成;如果刷新值cache为不刷新标志,按照键值Kv对应的偏移地址offset,在数据库文件中读取存储单元,根据该存储单元中管理数据记录的用户数据长度D...

【专利技术属性】
技术研发人员:吴科张令刘建华
申请(专利权)人:国芯科技广州有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1