CN103425663B - 嵌入式系统数据库创建表、存记录、删记录的方法和装置 - Google Patents
嵌入式系统数据库创建表、存记录、删记录的方法和装置 Download PDFInfo
- Publication number
- CN103425663B CN103425663B CN201210151801.9A CN201210151801A CN103425663B CN 103425663 B CN103425663 B CN 103425663B CN 201210151801 A CN201210151801 A CN 201210151801A CN 103425663 B CN103425663 B CN 103425663B
- Authority
- CN
- China
- Prior art keywords
- record
- sheet
- old
- new
- concordance list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种嵌入式系统数据库创建表、存储记录、删除记录的方法和装置,提高嵌入式系统数据库的数据处理效率。存储记录的方法包括:将待存入记录存入记录表时,从该记录表对应的索引表中读取该记录表的当前记录数量;根据当前记录数量判断该记录表是否已存满,如果未存满,则将该待存入记录作为一条新纪录写入记录表,更新索引表中该记录表的新旧记录信息和当前记录数量,如果已存满,则根据索引表中该记录表的新旧记录信息找到旧记录,用待存入记录覆盖旧记录,更新索引表中该记录表的新旧记录信息。存储记录的装置包括读取模块、判断模块、未存满处理模块和存满处理模块。采用本发明方法和装置,提高数据处理效率,解决查询算法复杂问题。
Description
技术领域
本发明涉及嵌入式系统,具体涉及一种嵌入式系统数据库数据处理方法(包括创建表、存储记录、删除记录)和相应装置。
背景技术
随着计算机技术的不断发展,人们生活水平的日益提高,越来越多的工业控制、医疗、通讯、消费等电子产品日趋智能化,以微处理器为核心的嵌入式监控系统得到日益广泛应用。为了更好地了解设备的运行状况,监控系统需要采集大量的运行参数数据,并将这些数据呈现给用户,同时监控系统还需要为用户提供大量的历史数据,以便用户更好地了解设备的运行规律,从而对设备的运行策略进行调整,使设备的工作效率更高,能耗更低。因此,嵌入式监控系统要在有限的存储空间条件下为用户提供较大容量的历史记录存储,并提供相应的查询功能。
为了解决存储空间有限的问题,通常的做法是数据循环覆盖保存,即当存储空间所剩不多时,最新的数据要覆盖最老的数据。具体做法是:根据历史数据存储空间M和一条记录的最大数据量m,将存储空间划分为N个存储单元(N=M/m),每个单元存储一条记录,至少建立一个写游标Q,指向要写入的单元,每新增一条记录,游标就指向下一个存储单元,当游标值Q>=N时,将游标归0(即指向第一个存储单元),在保存历史记录的同时,也要将写游标保存到掉电不丢失的存储介质中,上电时先读取写游标,然后再读写历史记录。为了保证数据的正确性,在读写历史记录时都需要对数据进行校验,比如单条记录进行CRC校验。如果数据都是顺序读取,那么这种做法简单高效,但如果需要记录查询服务(比如用户要查询某个时间段的记录),而且数据量比较大的时候,只能通过复杂的算法来实现查询。简而言之,这种做法说需要复杂的算法才能实现查询功能,而且每个存储单元都根据最大的数据量设定的,不可变长,存储空间利用较低。
虽然目前很多数据库是支持可变长数据存储并都具备强大的查询功能,然而不幸的是目前大多数的数据库系统不能直接实现数据循环覆盖保存功能。
发明内容
本发明所要解决的技术问题是提供一种嵌入式系统数据库创建表、存记录、删记录的方法和装置,提高嵌入式系统数据库的数据处理效率。
为解决上述技术问题,本发明提供了一种创建嵌入式系统数据库表的方法,包括:
为每一类记录创建一个记录表,每个记录表包括新旧程度标识字段,所述新旧程度标识用于标识各条记录的新旧程度;
为每个记录表分配最大记录数量;
创建索引表,所述索引表中保存一个或多个记录表的记录信息,所述记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量。
为解决上述技术问题,本发明还提供了一种在嵌入式系统数据库表中存储记录的方法,包括:
将待存入记录存入记录表时,从该记录表对应的索引表中读取该记录表的当前记录数量;
根据当前记录数量判断该记录表是否已存满,如果未存满,则将该待存入记录作为一条新纪录写入记录表,更新索引表中该记录表的新旧记录信息和当前记录数量,如果已存满,则根据索引表中该记录表的新旧记录信息找到旧记录,用待存入记录覆盖旧记录,更新索引表中该记录表的新旧记录信息。
进一步地,所述根据当前记录数量判断该记录表是否已存满,包括:判断当前记录数量是否大于等于该记录表的最大记录数量,如果是,表示已存满,如果不是,表示未存满。
进一步地,所述记录表的新旧记录信息包括最旧记录标识和最新记录标识;
所述更新索引表中该记录表的新旧记录信息和当前记录数量,包括:更新索引表中该记录表的最新记录标识和当前记录数量;
所述根据索引表中该记录表的新旧记录信息找到旧记录,包括:根据最旧记录标识找到最旧记录;
所述更新索引表中该记录表的新旧记录信息,包括:更新索引表中该记录表的最旧记录标识和最新记录标识。
进一步地,所述用待存入记录覆盖旧记录,包括:用待存入记录覆盖最旧记录。
为解决上述技术问题,本发明还提供了一种在嵌入式系统数据库表中删除记录的方法,包括:
删除记录表中记录,所述记录表为如权利要求1方法创建的记录表;
更新索引表中的当前记录数量,所述索引表为如权利要求1方法创建的索引表。
进一步地,所述方法还包括:当删除的记录包括记录表中的最旧记录和/或最新记录时,更新索引表中的新旧记录信息。
进一步地,所述新旧记录信息包括最旧记录标识和最新记录标识;
所述删除的记录包括记录表中的最旧记录时,更新索引表中的新旧记录信息,包括:更新索引表中的最旧记录标识;
所述删除的记录包括记录表中的最新记录时,更新索引表中的新旧记录信息,包括:更新索引表中的最新记录标识。
为解决上述技术问题,本发明还提供了一种创建嵌入式系统数据库表的装置,包括记录表创建模块、资源分配模块和索引表创建模块,其中:
所述记录表创建模块,用于为每一类记录创建一个记录表,每个记录表包括新旧程度标识字段,所述新旧程度标识用于标识各条记录的新旧程度;
所述资源分配模块,用于为每个记录表分配最大记录数量;
所述索引表创建模块,用于创建索引表,所述索引表中保存一个或多个记录表的记录信息,所述记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量。
为解决上述技术问题,本发明还提供了一种在嵌入式系统数据库表中存储记录的装置,包括读取模块、判断模块、未存满处理模块和存满处理模块,其中:
所述读取模块,用于在将待存入记录存入记录表时,从该记录表对应的索引表中读取该记录表的当前记录数量;
所述判断模块,用于根据所述读取模块读取的当前记录数量判断该记录表是否已存满;
所述未存满处理模块,用于在所述判断模块判断该记录表未存满时,将该待存入记录作为一条新纪录写入记录表,更新索引表中该记录表的新旧记录信息和当前记录数量;
所述存满处理模块,用于在所述判断模块判断该记录表已存满时,根据索引表中该记录表的新旧记录信息找到旧记录,用待存入记录覆盖旧记录,更新索引表中该记录表的新旧记录信息。
进一步地,所述判断模块根据当前记录数量判断该记录表是否已存满,包括:判断当前记录数量是否大于等于该记录表的最大记录数量,如果是,表示已存满,如果不是,表示未存满。
进一步地,所述记录表的新旧记录信息包括最旧记录标识和最新记录标识;
所述未存满处理模块更新索引表中该记录表的新旧记录信息和当前记录数量,包括:更新索引表中该记录表的最新记录标识和当前记录数量;
所述存满处理模块根据索引表中该记录表的新旧记录信息找到旧记录,包括:根据最旧记录标识找到最旧记录;
所述存满处理模块更新索引表中该记录表的新旧记录信息,包括:更新索引表中该记录表的最旧记录标识和最新记录标识。
进一步地,所述存满处理模块用待存入记录覆盖旧记录,包括:用待存入记录覆盖最旧记录。
为解决上述技术问题,本发明还提供了一种在嵌入式系统数据库表中删除记录的装置,包括删除模块和索引表更新模块,其中:
所述删除模块,用于删除记录表中记录;
所述索引表更新模块,用于更新索引表中的当前记录数量。
进一步地,所述索引表更新模块还用于在所述删除模块删除的记录包括记录表中的最旧记录和/或最新记录时,更新索引表中的新旧记录信息。
进一步地,所述新旧记录信息包括最旧记录标识和最新记录标识;
所述删除模块删除的记录包括记录表中的最旧记录时,所述索引表更新模块更新索引表中的新旧记录信息,包括:更新索引表中的最旧记录标识;
所述删除模块删除的记录包括记录表中的最新记录时,所述索引表更新模块更新索引表中的新旧记录信息,包括:更新索引表中的最新记录标识。
为解决上述技术问题,本发明还提供了一种在嵌入式系统数据库表中处理数据的装置,包括上述存储记录装置和删除记录装置。
本发明实施例方法和装置在不增加任何硬件成本的前提下,在嵌入式数据库系统应用数据库,一方面,表的创建、数据循环覆盖保存以及删除处理,能够提高嵌入式系统数据库的数据处理效率,特别是循环覆盖保存可以有效解决嵌入式系统存储空间有限,存储空间利用率低下的问题。另一方面,通过在嵌入式系统中应用数据库,可以解决查询功能算法复杂的技术问题,实现嵌入式系统可靠的数据存储和强大的查询功能。
附图说明
图1为实施例1创建记录表和索引表的流程图;
图2为记录表和索引表结构及对应关系示意图;
图3为创建表装置结构示意图;
图4为实施例2存储记录流程图;
图5为存储空间未满时保存记录后记录表和索引表的内容示意图;
图6为存储空间满时保存记录后记录表和索引表的内容示意图;
图7为存储记录装置结构示意图;
图8为实施例3删除记录流程图;
图9为删除记录装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例1
本实施例介绍在嵌入式系统数据库中创建表的方法,如图1所示,包括以下步骤110-130:
步骤110,为每一类记录创建一个记录表,每个记录表包括新旧程度标识字段,所述新旧程度标识用于标识各条记录的新旧程度;
记录的类由系统需要保存的记录类型进行区分;
新旧程度标识字段例如是记录序号字段,可设置记录序号越小表明该条记录越早即越旧,记录序号越大表明该记录越新,记录表中序号最小的记录即是最旧记录,序号最大的记录则是最新记录;
步骤120,为每个记录表分配最大记录数量;
具体地,根据存储空间大小为每个记录表分配最大记录数量;
步骤130,创建索引表,所述索引表中保存一个或多个记录表的记录信息,所述记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量。
优选地,该新旧记录信息包括最旧记录标识和最新记录标识。如前所述,当记录表中的新旧程度标识字段为记录序号时,且序号由小到大对应记录由旧至新,该最旧记录标识和最新记录标识也即为最小记录序号和最大记录序号,如图2例所示(由于附图篇幅有限,故图中仅示出记录表的前部)。
根据系统需要保存的记录类型,为每一类记录创建一个记录表,以及为各记录表创建索引表,此种方法创建的表,在数据处理时效率更高。
实现创建嵌入式系统数据库表的装置,如图3所示,包括记录表创建模块、资源分配模块和索引表创建模块,其中:
该记录表创建模块,用于为每一类记录创建一个记录表,每个记录表包括新旧程度标识字段,该新旧程度标识用于标识各条记录的新旧程度;
该资源分配模块,用于为每个记录表分配最大记录数量;
该索引表创建模块,用于创建索引表,该索引表中保存一个或多个记录表的记录信息,该记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量。
实施例2
本实施例介绍在上述创建好的嵌入式系统数据库表中存储记录的方法,如图4所示,包括以下步骤210-240:
步骤210,将待存入记录存入记录表时,从该记录表对应的索引表中读取该记录表的当前记录数量;
步骤220,根据当前记录数量判断该记录表是否已存满,如果未存满,执行步骤230,如果已存满,执行步骤240;
具体地,判断当前记录数量是否大于等于该记录表的最大记录数量,如果是,表示已存满,如果不是,表示未存满。
步骤230,将该待存入记录作为一条新纪录写入记录表,更新索引表中该记录表的新旧记录信息和当前记录数量;
记录表的新旧记录信息包括最旧记录标识和最新记录标识;更新索引表的操作具体包括:更新索引表中该记录表的最新记录标识和当前记录数量。
如前所述,当记录表中的新旧程度标识字段为记录序号时,且序号由小到大对应记录由旧至新,写入新记录后,为该条新记录分配相应记录序号(例如是当前最大记录序号加1),更新时更新索引表中该记录表的最大记录序号。如图5所示,记录表1中写入新记录后,更新索引表中相应信息。
步骤240,根据索引表中该记录表的新旧记录信息找到旧记录,用待存入记录覆盖旧记录(相当于记录表中的记录更新),更新索引表中该记录表的新旧记录信息。
记录表的新旧记录信息包括最旧记录标识和最新记录标识;则查找旧记录的操作具体包括:根据最旧记录标识找到最旧记录;更新索引表的操作具体包括:更新索引表中该记录表的最旧记录标识和最新记录标识。
当记录表中的新旧程度标识字段为记录序号时,且序号由小到大对应记录由旧至新,则最旧记录标识为最小记录序号,最新记录标识为最大记录序号。待存入纪录覆盖旧记录后,为该条新写入记录分配相应记录序号,例如为当前最大记录序号加1。如图6所示,记录表1中用新记录7覆盖了旧记录1,更新索引表中相应记录序号。
优选地,用待存入记录覆盖记录表中的最旧记录,但也不排除最旧记录因某种原因需要保留,覆盖的记录为除最旧记录外的其他旧记录。
此外,查找到的旧记录优选为要覆盖的旧记录,但也不排除查找到的旧记录与覆盖的旧记录不为同一记录的情况,例如查找到某条旧记录,但因某种原因该旧记录不能覆盖(例如设置有某种不能覆盖标识),则可以通过向前或向后寻找其他可覆盖的旧记录进行覆盖。
通过存满时覆盖旧记录可实现数据库的数据循环覆盖保存功能。
采用上述方法保存记录,不仅效率高,且由于采用覆盖保存的方式,可以解决嵌入式系统存储空间有限的问题。
实现在嵌入式系统数据库表中存储记录的装置,如图7所示,包括读取模块、判断模块、未存满处理模块和存满处理模块,其中:
该读取模块,用于在将待存入记录存入记录表时,从该记录表对应的索引表中读取该记录表的当前记录数量;
该判断模块,用于根据该读取模块读取的当前记录数量判断该记录表是否已存满;
该未存满处理模块,用于在该判断模块判断该记录表未存满时,将该待存入记录作为一条新纪录写入记录表,更新索引表中该记录表的新旧记录信息和当前记录数量;
该存满处理模块,用于在该判断模块判断该记录表已存满时,根据索引表中该记录表的新旧记录信息找到旧记录,用待存入记录覆盖旧记录,更新索引表中该记录表的新旧记录信息。
优选地,该判断模块采用以下方式判断该记录表是否已存满:判断当前记录数量是否大于等于该记录表的最大记录数量,如果是,表示已存满,如果不是,表示未存满。
上述记录表的新旧记录信息包括最旧记录标识和最新记录标识。未存满处理模块更新索引表中该记录表的最新记录标识和当前记录数量。存满处理模块根据最旧记录标识找到最旧记录,覆盖最旧记录,更新索引表中该记录表的最旧记录标识和最新记录标识。
实施例3
本实施例介绍在上述创建好的嵌入式系统数据库表中删除记录的方法,如图8所示,包括以下步骤310-320:
步骤310,删除记录表中记录;
此处所述记录表为实施例1中创建的记录表。
步骤320,更新索引表中的当前记录数量。
此处所述索引表为实施例1中创建的索引表。
优选地,在步骤310中,如果删除记录表中非最旧、非最新记录,则仅需更新索引表中的当前记录数量。如果删除的记录包括记录表中的最旧记录和/或最新记录,则还要更新索引表中的新旧记录信息,例如相应更新索引表中的最旧记录标识和/或最新记录标识。
简言之,删除记录时,需要将索引表中的内容更新为与记录表状态相一致。采用此种删除方法,保证索引表与记录表的对应一致,方便查询和后续存储处理。
实现在嵌入式系统数据库表中删除记录的装置,如图9所示,包括删除模块和索引表更新模块,其中:
该删除模块,用于删除记录表中记录;
该索引表更新模块,用于更新索引表中的当前记录数量。
优选地,该索引表更新模块还用于在删除模块删除的记录包括记录表中的最旧记录和/或最新记录时,更新索引表中的新旧记录信息。具体例如:删除的记录包括记录表中的最旧记录,索引表更新模块更新索引表中的最旧记录标识;删除的记录包括记录表中的最新记录,索引表更新模块更新索引表中的最新记录标识。
上述实施例1、2、3中的装置可以合一设置,或者实施例2、3中的装置合一设置。合一设置是指上述装置设置在同一个装置中。
应用示例
某公司生产的某种型号监控平台,主要用于通信组合电源、太阳能和UPS监控,历史记录存储空间是64Mbytes,为了将来的功能扩展,需要预留20%的存储空间,也就是说用于存储历史记录的空间是51M左右。而监控平台需要保存的历史记录主要有历史数据5000条,历史告警记录、历史事件记录、电池测试记录、电池放电记录、电池充电记录和系统人工维护记录等各10000条。监控需要提供这些记录按时间段查询功能,每类记录清除功能(清除某类记录的所有记录),为了满足这些需求,采用上述实施例方案,数据库采用的是sqlite嵌入式开源数据库。
创建数据库表的具体实现步骤如下:
根据系统需要保存的记录类型,在数据库中创建HisData、HisAlm、HisEvent、BattTestRec、BattEquRec、BattDischRec、MaintainRec等表,分别用于保存历史数据、历史告警、历史事件、电池测试、电池充电、电池放电和人工维护等记录,各个表的详细设计见表1至表7所示;
结合用户需求和存储空间情况,历史数据最大记录数量设定为5000条,其它记录的最大记录数量都设定为10000条;
创建索引表Power_Seq,用于记录各个记录表的存储情况,索引表Power_Seq的结构设计见表8,索引表Power_Seq的初始内容见表9;
为了实现索引表对记录表不同处理的响应,分别设置插入触发器、更新触发器和删除触发器如下:
分别为每个记录表的插入操作创建一个触发器,一个记录表对应一个插入操作触发器,插入触发器的动作是在每插入一条新记录后,自动把索引表Power_Seq中相应记录表的最大序号MaxSeq和当前记录数量Num各加1。共创建7个插入触发器。
分别为每个记录表的更新操作创建一个触发器,一个记录表对应一个更新操作触发器,更新触发器的动作是在每覆盖一条记录后,自动把索引表Power_Seq中相应记录表的最小序号MinSeq和最大序号MaxSeq各加1。共创建7个更新触发器。
分别为每个记录表的删除操作创建一个触发器,一个记录表对应一个删除操作触发器,删除触发器的动作是在每次删除记录后,自动设置索引表Power_Seq中相应记录表的Num,如果删除的包括最旧记录,则自动将MinSeq加1,如果删除的包括最新记录,则自动将MaxSeq减1。如果删除该记录表中的所有记录,则自动把索引表Power_Seq中相应记录表的MinSeq设置为1,MaxSeq设置为0,Num设置为0。共创建7个删除触发器。
保存数据库表的具体实现步骤如下:
要保存记录时,先从索引表Power_Seq中读取该记录表的MinSeq、MaxSeq和Num,如果Num小于最大记录数量(历史数据最大记录数量是5000条,其它记录的最大记录数量是10000条),则通过插入操作新增一条记录,新增记录的记录序号RecSN为MaxSeq+1,新增记录的其它字段则是要保存的记录内容,同时插入触发器完成索引表的修改;如果Num不小于最大记录数量,则根据MinSeq找到记录表中最早的记录,通过更新操作更新该条记录的各个字段,更新后的记录序号RecSN为MaxSeq+1,而其它字段则是要保存的记录内容,同时更新触发器完成索引表的修改。
表1历史数据记录表(HisData)结构
列名 | 列属性 | 列含义 |
RecSN | integer primary key | 记录序号 |
Time | integer | 记录保存时间 |
Value | blob | 历史数据内容(二制类型) |
表2历史告警记录表(HisAlm)结构
列名 | 列属性 | 列含义 |
RecSN | integer primary key | 记录序号 |
StartTime | integer | 告警产生时间 |
EndTime | integer | 告警恢复时间 |
Value | blob | 告警内容(二制类型) |
表3历史事件记录表(HisEvent)结构
列名 | 列属性 | 列含义 |
RecSN | integer primary key | 记录序号 |
Time | integer | 事件发生时间 |
Value | blob | 历史事件内容(二制类型) |
表4电池测试记录表(BattTestRec)结构
列名 | 列属性 | 列含义 |
RecSN | integer primary key | 记录序号 |
StartTime | integer | 电池测试起始时间 |
EndTime | integer | 电池测试结束时间 |
Value | blob | 电池测试记录内容(二制类型) |
表5电池均充记录表(BattEquRec)
列名 | 列属性 | 列含义 |
RecSN | integer primary key | 记录序号 |
StartTime | integer | 电池均充起始时间 |
EndTime | integer | 电池均充结束时间 |
Value | blob | 电池均充记录内容(二制类型) |
表6电池放电记录表(BattDischRec)结构
列名 | 列属性 | 备注 |
RecSN | integer primary key | 记录序号 |
StartTime | integer | 电池放电起始时间 |
EndTime | integer | 电池放电结束时间 |
Value | blob | 电池放电记录内容(二制类型) |
表7人工维护记录表(MaintainRec)结构
列名 | 列属性 | 列含义 |
RecSN | integer primary key | 记录序号 |
StartTime | integer | 人工维护起始时间 |
EndTime | integer | 人工维护结束时间 |
Value | blob | 人工维护记录内容(二制类型) |
表8索引表(Power_Seq)结构
列名 | 列属性 | 列含义 |
name | Text | 记录表标识 |
MinSeq | integer | 最小序号(指向相应记录表最早的记录) |
MaxSeq | integer | 最大序号(指向相应记录表最新的记录) |
Num | integer | 当前记录数量(相应记录表保存的记录条数) |
表9索引表(Power_Seq)内容
经系统测试发现,该监控平台系统在满配置并且存满所有历史记录的情况下,占用存储空间为36.1M,监控系统正常工作情况下,查询一条记录的时间大约在30ms左右。可见通过采用本发明的技术方案,监控平台很好解决了存储空间有限,存储空间利用率低下、查询功能算法复杂等技术难题,从而实现嵌入式系统可靠的数据存储、高效的存储空间利用和强大的查询功能。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (19)
1.一种创建嵌入式系统数据库表的方法,包括:
根据系统需要保存的记录类型,为每一类记录创建一个记录表,每个记录表包括新旧程度标识字段,所述新旧程度标识用于标识各条记录的新旧程度;所述新旧程度标识字段为记录序号,序号由小到大对应记录由旧至新;
为每个记录表分配最大记录数量;
为各记录表创建索引表,用于记录各个记录表的存储情况,所述索引表中保存一个或多个记录表的记录信息,所述记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量。
2.如权利要求1所述的方法,其特征在于,
所述新旧记录信息包括最旧记录标识和最新记录标识。
3.一种在嵌入式系统数据库表中存储记录的方法,包括:
将待存入记录存入记录表时,从该记录表对应的索引表中读取该记录表的当前记录数量;所述索引表是为各记录表创建的,用于记录各个记录表的存储情况,所述索引表中保存一个或多个记录表的记录信息,所述记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量;
根据当前记录数量判断该记录表是否已存满,如果未存满,则将该待存入记录作为一条新纪录写入记录表,更新索引表中该记录表的新旧记录信息和当前记录数量,如果已存满,则根据索引表中该记录表的新旧记录信息找到旧记录,用待存入记录覆盖旧记录,更新索引表中该记录表的新旧记录信息;
每个记录表包括新旧程度标识字段,所述新旧程度标识字段为记录序号,序号由小到大对应记录由旧至新,写入新记录后,为该条新记录分配相应的记录序号。
4.如权利要求3所述的方法,其特征在于,
所述根据当前记录数量判断该记录表是否已存满,包括:判断当前记录数量是否大于等于该记录表的最大记录数量,如果是,表示已存满,如果不是,表示未存满。
5.如权利要求3或4所述的方法,其特征在于,
所述记录表的新旧记录信息包括最旧记录标识和最新记录标识;
所述更新索引表中该记录表的新旧记录信息和当前记录数量,包括:更新索引表中该记录表的最新记录标识和当前记录数量;
所述根据索引表中该记录表的新旧记录信息找到旧记录,包括:根据最旧记录标识找到最旧记录;
所述更新索引表中该记录表的新旧记录信息,包括:更新索引表中该记录表的最旧记录标识和最新记录标识。
6.如权利要求5所述的方法,其特征在于,
所述用待存入记录覆盖旧记录,包括:用待存入记录覆盖最旧记录。
7.一种在嵌入式系统数据库表中删除记录的方法,包括:
删除记录表中记录,所述记录表是根据系统需要保存的记录类型为每一类记录创建的,每个记录表包括新旧程度标识字段,所述新旧程度标识字段为记录序号,序号由小到大对应记录由旧至新;
更新索引表中的当前记录数量,所述索引表是为各记录表创建的,用于记录各个记录表的存储情况,所述索引表中保存一个或多个记录表的记录信息,所述记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量。
8.如权利要求7所述的方法,其特征在于,
所述方法还包括:当删除的记录包括记录表中的最旧记录和/或最新记录时,更新索引表中的新旧记录信息。
9.如权利要求8所述的方法,其特征在于,
所述新旧记录信息包括最旧记录标识和最新记录标识;
所述删除的记录包括记录表中的最旧记录时,更新索引表中的新旧记录信息,包括:更新索引表中的最旧记录标识;
所述删除的记录包括记录表中的最新记录时,更新索引表中的新旧记录信息,包括:更新索引表中的最新记录标识。
10.一种创建嵌入式系统数据库表的装置,包括记录表创建模块、资源分配模块和索引表创建模块,其中:
所述记录表创建模块,用于根据系统需要保存的记录类型,为每一类记录创建一个记录表,每个记录表包括新旧程度标识字段,所述新旧程度标识用于标识各条记录的新旧程度;所述新旧程度标识字段为记录序号,序号由小到大对应记录由旧至新;
所述资源分配模块,用于为每个记录表分配最大记录数量;
所述索引表创建模块,用于为各记录表创建索引表,用于记录各个记录表的存储情况,所述索引表中保存一个或多个记录表的记录信息,所述记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量。
11.如权利要求10所述的装置,其特征在于,
所述新旧记录信息包括最旧记录标识和最新记录标识。
12.一种在嵌入式系统数据库表中存储记录的装置,包括读取模块、判断模块、未存满处理模块和存满处理模块,其中:
所述读取模块,用于在将待存入记录存入记录表时,从该记录表对应的索引表中读取该记录表的当前记录数量;所述索引表是为各记录表创建的,用于记录各个记录表的存储情况,所述索引表中保存一个或多个记录表的记录信息,所述记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量;每个记录表包括新旧程度标识字段,所述新旧程度标识字段为记录序号,序号由小到大对应记录由旧至新;
所述判断模块,用于根据所述读取模块读取的当前记录数量判断该记录表是否已存满;
所述未存满处理模块,用于在所述判断模块判断该记录表未存满时,将该待存入记录作为一条新纪录写入记录表,更新索引表中该记录表的新旧记录信息和当前记录数量;写入新记录后,为该条新记录分配相应的记录序号;
所述存满处理模块,用于在所述判断模块判断该记录表已存满时,根据索引表中该记录表的新旧记录信息找到旧记录,用待存入记录覆盖旧记录,更新索引表中该记录表的新旧记录信息。
13.如权利要求12所述的装置,其特征在于,
所述判断模块根据当前记录数量判断该记录表是否已存满,包括:判断当前记录数量是否大于等于该记录表的最大记录数量,如果是,表示已存满,如果不是,表示未存满。
14.如权利要求12或13所述的装置,其特征在于,
所述记录表的新旧记录信息包括最旧记录标识和最新记录标识;
所述未存满处理模块更新索引表中该记录表的新旧记录信息和当前记录数量,包括:更新索引表中该记录表的最新记录标识和当前记录数量;
所述存满处理模块根据索引表中该记录表的新旧记录信息找到旧记录,包括:根据最旧记录标识找到最旧记录;
所述存满处理模块更新索引表中该记录表的新旧记录信息,包括:更新索引表中该记录表的最旧记录标识和最新记录标识。
15.如权利要求14所述的装置,其特征在于,
所述存满处理模块用待存入记录覆盖旧记录,包括:用待存入记录覆盖最旧记录。
16.一种在嵌入式系统数据库表中删除记录的装置,包括删除模块和索引表更新模块,其中:
所述删除模块,用于删除记录表中记录,所述记录表是根据系统需要保存的记录类型为每一类记录创建的,每个记录表包括新旧程度标识字段,所述新旧程度标识字段为记录序号,序号由小到大对应记录由旧至新;
所述索引表更新模块,用于更新索引表中的当前记录数量,所述索引表是为各记录表创建的,用于记录各个记录表的存储情况,所述索引表中保存一个或多个记录表的记录信息,所述记录信息包括:记录表标识,记录表的新旧记录信息,以及记录表的当前记录数量。
17.如权利要求16所述的装置,其特征在于,
所述索引表更新模块还用于在所述删除模块删除的记录包括记录表中的最旧记录和/或最新记录时,更新索引表中的新旧记录信息。
18.如权利要求17所述的装置,其特征在于,
所述新旧记录信息包括最旧记录标识和最新记录标识;
所述删除模块删除的记录包括记录表中的最旧记录时,所述索引表更新模块更新索引表中的新旧记录信息,包括:更新索引表中的最旧记录标识;
所述删除模块删除的记录包括记录表中的最新记录时,所述索引表更新模块更新索引表中的新旧记录信息,包括:更新索引表中的最新记录标识。
19.一种在嵌入式系统数据库表中处理数据的装置,包括如权利要求12所述的存储记录装置,和权利要求16所述的删除记录装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210151801.9A CN103425663B (zh) | 2012-05-16 | 2012-05-16 | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210151801.9A CN103425663B (zh) | 2012-05-16 | 2012-05-16 | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103425663A CN103425663A (zh) | 2013-12-04 |
CN103425663B true CN103425663B (zh) | 2017-11-28 |
Family
ID=49650421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210151801.9A Active CN103425663B (zh) | 2012-05-16 | 2012-05-16 | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103425663B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717240A (zh) * | 2013-12-12 | 2015-06-17 | 鸿合科技有限公司 | 文件网络共享方法及装置 |
CN104717241A (zh) * | 2013-12-12 | 2015-06-17 | 鸿合科技有限公司 | 文件网络共享方法、终端及服务器 |
CN105302703B (zh) * | 2015-09-21 | 2018-01-30 | 上海斐讯数据通信技术有限公司 | 一种olt设备的告警数据管理的方法 |
CN105760486B (zh) * | 2016-02-17 | 2019-06-14 | 深圳市共进电子股份有限公司 | 录像文件的管理方法及装置 |
CN107391525B (zh) * | 2017-03-10 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 针对数据库的指令处理方法及装置 |
CN110020357B (zh) * | 2017-10-31 | 2021-08-24 | 北京国双科技有限公司 | 数据存储方法、装置、存储介质和处理器 |
CN110968587A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN109977123A (zh) * | 2019-04-01 | 2019-07-05 | 时代数媒科技股份有限公司 | 一种移动端列表数据diff算法 |
CN110147349A (zh) * | 2019-04-08 | 2019-08-20 | 厦门天锐科技股份有限公司 | 一种文件数据库管理方法 |
CN111708759B (zh) * | 2020-06-12 | 2023-07-07 | 北京思特奇信息技术股份有限公司 | 一种大表数据移植的优化方法和系统 |
CN113656401A (zh) * | 2021-07-09 | 2021-11-16 | 山东齐鲁数通科技有限公司 | 基于PostgreSql数据平均分表方法、装置、设备及介质 |
CN113721518A (zh) * | 2021-08-31 | 2021-11-30 | 中冶华天南京工程技术有限公司 | 一种面向钢铁生产的数据采集和存储方法 |
CN116795831B (zh) * | 2022-12-26 | 2024-06-28 | 慧之安信息技术股份有限公司 | 一种时序数据条目的数量维护方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141731A (en) * | 1998-08-19 | 2000-10-31 | International Business Machines Corporation | Method and system for managing data in cache using multiple data structures |
CN101576834A (zh) * | 2009-05-08 | 2009-11-11 | 西安蓝海本立信息科技有限公司 | 基于时间戳建立数据视图的连续数据保护系统及方法 |
CN101617299A (zh) * | 2007-01-05 | 2009-12-30 | 索尼爱立信移动通讯股份有限公司 | 数据库管理方法 |
-
2012
- 2012-05-16 CN CN201210151801.9A patent/CN103425663B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141731A (en) * | 1998-08-19 | 2000-10-31 | International Business Machines Corporation | Method and system for managing data in cache using multiple data structures |
CN101617299A (zh) * | 2007-01-05 | 2009-12-30 | 索尼爱立信移动通讯股份有限公司 | 数据库管理方法 |
CN101576834A (zh) * | 2009-05-08 | 2009-11-11 | 西安蓝海本立信息科技有限公司 | 基于时间戳建立数据视图的连续数据保护系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103425663A (zh) | 2013-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103425663B (zh) | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 | |
US8909887B1 (en) | Selective defragmentation based on IO hot spots | |
CN103927251B (zh) | 一种嵌入式系统的日志管理方法 | |
CN110268399A (zh) | 用于维护操作的合并树修改 | |
CN103995855B (zh) | 存储数据的方法和装置 | |
CN110268394A (zh) | Kvs树 | |
CN110383261A (zh) | 用于多流存储装置的流选择 | |
CN108197181A (zh) | 一种时序数据的压缩存储方法、电子设备及存储介质 | |
CN107589915A (zh) | 一种分布式存储系统的容量信息监控方法、装置及设备 | |
CN106383666B (zh) | 一种数据存储方法及装置 | |
CN102867071A (zh) | 一种网管海量历史数据管理方法 | |
CN103593449B (zh) | 一种数据库资源回收方法及系统 | |
CN104969181B (zh) | 用于损坏的驱动器变量记录的修复系统、方法及存储设备 | |
CN103500177A (zh) | 一种用户激活数的统计方法及装置 | |
CN103365786B (zh) | 数据存储方法、装置和系统 | |
CN102982186B (zh) | 基于oracle数据库系统的range分区表的维护方法和系统 | |
CN101667205A (zh) | 一种面向快速回放的实时测点数据存储方法 | |
CN108604165A (zh) | 存储装置 | |
CN107608860A (zh) | 一种错误日志分类存储的方法、装置、设备 | |
CN104361009B (zh) | 一种基于倒排索引的实时索引方法 | |
CN102968438A (zh) | 综合监控系统中历史数据存储控制方法 | |
CN107102954A (zh) | 一种基于失效概率的固态存储分级管理方法及系统 | |
CN109918352A (zh) | 存储器系统和存储数据的方法 | |
CN114253871A (zh) | 一种智能电表数据的存储管理方法、系统、装置 | |
CN109470918A (zh) | Ir46电能表的电量数据处理方法和ir46电能表 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |