具体实施方式
本发明实施例提供一种资源受限设备,对现有的智能卡中的数据管理平台中的模式管理模块、数据管理模块以及索引管理模块统一定义数据存储结构,以便智能卡上存储数据的统一管理。进一步,本发明实施例中还采用CACHE接口,统一对配置数据、索引数据、应用数据在内存中设置缓存,并在需要对配置数据、索引数据或者应用数据进行操作时,在缓存中进行相应的操作,加快数据访问速度,提高内存资源的利用率。
本发明实施例所描述的资源受限设备的典型代表是智能卡。智能卡的基本组成结构如图2所示,包括:中央处理单元(CPU)、只读存储器(ROM)、随机访问存储器(RAM)、非易失性存储器(NVM)、以及输入输出(I/O)通道,这些功能部件通过总线(BUS)连接在一起。ROM中存放CPU要执行的指令,这里的ROM也可以是闪存FLASH或者其他非易失性存储器;为便于本专利的描述,这里以ROM为例来进行表述。
另外,本发明实施例也适用于大容量智能卡,这种大容量智能卡的组成结构如图3所示,该组成结构包含与图2所描述的结构外,还包含一个FLASH控制器,该FLASH控制器与一块大容量的FLASH存储器相连。该大容量FLASH存储器可能是NAND FLASH,也可能是NOR FLASH或者其他非易失性存储器,通常具有较大的存储容量,从几兆字节到几G字节不等。为更迅速地访问这种大容量存储器,图3中的I/O通道会包含一种或几种快速数据接口,如USB、MMC接口。
下面通过具体的实施例来描述本发明。实施例一描述本发明的资源受限设备。实施例二描述本发明的数据访问方法。
实施例一
本实施例公开了一种资源受限设备,资源受限设备包括:数据管理平台,用于定义数据的存储结构,并向应用模块提供统一的数据访问接口;操作系统模块,用于提供文件管理、内存管理以及其他系统功能模块,以便数据管理平台利用这些系统功能存取数据;硬件平台,用于提供基本的硬件支持。
应用模块可设置在资源受限设备中,也可以设置在资源受限设备之外,与资源受限设备相连。数据管理平台与应用模块和操作系统相连,接收应用模块传递来的数据访问请求,解析并执行数据访问请求,执行过程中调用操作系统模块进行数据读写操作。
如图4a所示,数据管理平台包括:应用接口、数据统一接口,模式管理模块、数据管理模块、索引管理模块、操作系统接口。
应用接口,向应用模块提供数据访问接口,应用模块通过调用应用接口,实现对应用数据的访问;
数据统一接口,用于对模式管理模块、索引管理模块、数据管理模块定义统一的数据存储结构,并向应用接口提供统一的数据访问接口;
其中,数据统一接口定义的数据存储结构可以是B-树,B+树或者是其他的数据存储结构,该接口定义统一的数据存储结构的目的是方便对各模块管理的配置数据、索引数据以及应用数据进行统一的管理,并通过数据统一接口对应用接口提供统一的数据访问接口。对于上层而言,数据统一接口屏蔽了内部结构,通过该接口使其对外提供数据操作功能。
模式管理模块,根据数据统一接口定义的数据存储结构管理配置数据;
索引管理模块,根据数据统一接口定义的数据存储结构管理索引数据;
数据管理模块,根据数据统一接口定义的数据存储结构管理应用数据;
操作系统接口,用于为模式管理模块、数据管理模块、索引管理模块提供访问存储介质的接口函数,使模式管理模块能够通过接口函数访问存储介质中的配置数据,索引管理模块能够通过接口函数访问存储介质中的索引数据,数据管理模块能够通过接口函数访问存储介质中的应用数据。
采用上述资源受限设备,数据统一接口能够为模式管理模块、索引管理模块、操作系统模块定义统一的数据存储结构,并且各模块能够根据该数据存储结构管理各自的数据,便于资源受限设备上存储数据的统一管理,提高资源受限设备的数据访问速度,以及提高资源受限设备的处理效率。
较佳地,如图4b所示,上述数据管理平台还包括:
缓存CACHE接口,封装在模式管理模块、索引管理模块、数据管理模块和操作系统接口之间,用于统一对存储介质中的配置数据、索引数据、应用数据在内存中设置缓存,并在模式管理模块需要对存储介质中的配置数据操作、索引管理模块需要对存储介质中的索引数据操作或者数据管理模块需要对存储介质中的应用数据操作时,统一在缓存中进行相应的操作;以及
操作系统接口,用于为CACHE接口提供访问存储介质的接口函数,使得CACHE接口能够访问存储介质上的配置数据、应用数据以及索引数据。
其中,当模式管理模块、索引管理模块、数据管理模块需要对各自管理的数据进行操作时,则直接调用CACHE接口在缓存区中进行相应的操作,并临时保存在内存的缓存中,直到需要回写时,再将缓存中的内容写回存储介质中。
当内存中的缓存使用完毕(即内存中的缓存已写满)时,对缓存中的缓存块进行替换,替换是指将该缓存块释放,用来缓存新的数据。其中,当需要被替换的缓存块的数据被修改过,则调用操作系统接口将该缓存块的数据写回存储介质中。较佳地,可以使用最近最少使用算法对缓存中的缓存块进行替换。
较佳地,数据统一接口为B+TREE接口,定义的统一的数据存储结构为B+TREE结构,则B+TREE接口能够通过B+TREE算法对配置数据、索引数据、应用数据进行统一管理。下面详细说明B+TREE接口对模式管理模块、数据管理模块、索引管理模块的统一调度。
资源受限设备中的数据管理平台根据外部的应用模块(比如PC端的应用程序)发出的数据访问请求(包括删除记录、插入记录、更新记录、索引操作、配置数据操作等),通过应用接口、B+TREE接口调用不同的模块。删除记录、插入记录、更新记录、查询记录属于数据管理模块,索引操作属于索引管理模块,配置数据操作属于模式管理模块。这三个模块B+TREE接口统一调度。
在本发明中对所有模块数据的操作都对应对B+TREE的操作。例如:下述几个最基本的操作都将对应如下的B+TREE操作:
CREATE TABLE(创建表)-创建一个Table B+TREE(表B+TREE);
CREATE INDEX(创建索引)-创建一个Index B+TREE(索引B+TREE);
DROP TABLE(删除表)-删除一个TABLE B+TREE(以及相关的IndexB+TREE);
INSERT RECORD(插入记录)-将记录插入到Table B+TREE节点中,如果关联索引,还需要将相关字段插入Index B+TREE节点;
SELECT RECORD(查询记录)-查询Index B+TREE获得记录ROWID,再查询Table B+TREE获得记录内容。如果没有关联索引,则需要遍历TableB+TREE的每一个ROWID;
UPDATE RECORD(更新记录)-查询到记录后修改节点记录内容;
DELETE RECORD(删除记录)-查询到记录后删除节点记录内容。
由于B+TREE本身具有一些特性,以上操作中还将涉及若干B+TREE专有操作:插入数据导致增加节点、删除数据导致删除节点、平衡树结构导致的增加和删除节点、因增加或者删除节点导致根节点的变化、插入或者删除数据导致导航节点KEY值更新、因节点数据更新导致关联节点(父节点、兄弟节点)的数据更新等。
以上各种属性的获取或者操作都通过B+TREE接口对模式管理模块、数据管理模块、索引管理模块进行调度完成。对上层而言,屏蔽了内部结构,通过B+TREE接口即可提供统一的数据访问接口。并且采用B+TREE数据存储结构,加快了数据的访问速度,提高了智能卡系统的处理效率。
下面详细介绍一下本发明实施例中的CACHE接口的功能。
CACHE接口,统一为配置数据、索引数据、应用数据对应在内存中分配缓存,加快数据访问速度,提高内存资源的利用率。
CACHE接口,负责维护内存数据和外存数据的映射关系,并管理内存数据缓存区的层次,负责直接读写外存。
当模式管理模块、数据管理模块或者索引管理模块需要读取数据或者需要修改数据时,会调用CACHE接口在内存中的缓存区中进行“逻辑上”修改,修改结果暂时保存在内存中,外存数据并没有立即被修改。而外存数据被“物理上”修改也是由CACHE接口完成修改时机是由CACHE接口采用的缓存块置换算法决定的。
缓存块的数据结构是由“缓存块结构”组成的单向链表。链表头指针page_cache_link位于缓存管理结构体中,每一个“缓存块结构”包括缓存块数据和属性控制两部分。其中,缓存块数据大小和系统定义的页面数据大小一致,用于整体缓存一个外存数据块的全部数据。如图5所示,为本发明实施例提供的缓存区的数据结构示意图。
属性控制用于表示该缓存块数据状态。包括:NEXT CACHE,PAGENUMBER以及相应的属性Dirty、Lock、Valid、Reserved。
其中:NEXT CACHE(下一缓存块),下一个缓存块结构的起始内存地址,占4个字节;
PAGE NUMBER(页面号):对应的外存页面号(即对应的外存数据块);
Dirty:数据是否为脏,占1字节。若为TRUE(0x01)表示缓存块中的数据被写过,需要回写,否则FALSE(0x00)表示其内容没有被改过,不需要回写。需要回写的缓存块数据不一定立即被会回写到外存中,Dirty标记为TRUE只是表示早晚需要被回写。具体的回写时机由回写算法控制(一般回写发生在被替换前)。不需要回写的缓存块是随时被替换的。
Lock:缓存块数据是否被锁住,占1字节。若为TRUE(0x01)表示缓存块中的数据被锁住,不可替换该数据块。否则FALSE(0x00)表示其内容没有被锁住,可以随时替换。由于某些操作会导致对同一个数据块的多次在缓存层“逻辑上”的写,并且这些写可能间隔一定时间,如果这一系列对同一缓存块的写没有全部完成前,该缓存块被从内存中置换出去,则外存将会被“物理的”写过多次,因此,会严重降低智能卡系统的处理效率。因此,Lock的作用是暂时抑制置换的发生,以降低物理写操作的次数,从而提高系统处理效率。
Valid:缓存块数据是否可用,占1字节。若为TRUE(0x01)表示缓存块的内容可用,否则为FALSE(0x00)表示内容不可用。当缓存块中的内容是可用时,缓存块可读(即数据可被高层函数访问)。而当缓存块中的内容是不可用时,缓存块不可读(即数据不能被高层函数访问了,因为这些数据可能不是数据库的真实数据了)。例如当外存发生事务回滚操作后,某些缓存块中的内容与外存不一致时,可将该缓存块的Valid项置为FALSE,即缓存块数据无用,无需写回外存,随时可以被读取的任何页面数据覆盖。又例如,某个缓存块刚被创建,其中的数据显然也是无用的,可以立刻被读取的块数据覆盖。不可用的缓存块是可以优先被替换的缓存块。
RESERVED:保留字节。
本发明实施例中采用LRU(Least Recently Used,最近最少使用)算法决策缓存块的置换。越靠近链表前端的缓存块,最近使用的频率越少,越应该被置换出去。正常情况下,置换总是发生在链表的第一个缓存块(即第一个节点)。但是,如果第一个缓存块被锁住,则置换位置将顺延。此外,被标记为不可用的缓存块需要优先被置换,需要移到链表头部。采用最近最少使用算法,能够根据缓存块的使用频率进行缓存块的替换,提高了资源的利用率,并避免对存储介质的频繁操作,同时提高数据访问速度。
实施例二
本发明实施例还提供一种数据访问方法,如图6所示,包括:
S601、数据管理平台接收应用程序发出的数据访问请求,所述数据管理平台设置在资源受限设备中;
S602、数据管理平台根据数据访问请求管理数据;
其中,数据包括如下之一或其组合:配置数据、索引数据或者应用数据,并且,配置数据、索引数据、应用数据采用统一的数据存储结构;
较佳地,统一的数据存储结构为B+TREE结构。
数据管理平台的应用接口将数据访问请求传递给B+TREE接口,B+TREE接口将数据访问请求传递给模式管理模块、数据管理模块、索引管理模块。
模式管理模块、数据管理模块、索引管理模块根据数据访问请求管理操作数据,其中,操作包括:模式操作、索引操作、数据操作。
其中,在执行管理操作的过程中,当需要对配置数据、索引数据或者应用数据进行操作时,将需要读写的数据通过CACHE接口调用操作系统接口读取到内存的缓存中,并在缓存中进行相应的操作,并暂时保存在内存中。当需要写回存储介质时,CACHE接口则调用操作系统接口,将缓存中的数据写回存储介质。
较佳地,当数据管理平台确定内存中的缓存使用完毕时,使用最近最少使用算法对缓存中的缓存块进行替换。并且,数据管理平台在确定需要替换的缓存块数据被修改过,则调用操作系统接口将该缓存块中的数据写回存储介质中。
具体方法的详细内容可以同时参考装置的实施例,这里不再详细描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。