发明内容
本发明的目的在于提供一种资源受限设备和数据访问方法,能够对数据的存储进行统一管理,同时为应用模块提供一套数据存取访问机制,从而解决现有技术中数据访问困难、访问效率低下、应用模块可重用性差等问题,增强应用模块的可移植性。
本发明提供了一种资源受限设备,所述资源受限设备包括数据管理平台,
所述数据管理平台包括应用接口、模式管理模块、数据管理模块、索引管理模块和操作***接口,
所述应用接口,用于向应用模块提供数据访问接口;接收应用模块发出的数据访问请求;
所述模式管理模块,用于管理配置数据,所述配置数据包括应用模块下所有应用数据集合、索引的配置信息以及该应用模块自身的配置信息;所述模式管理模块还用于统一定义配置数据的存储结构,并根据数据访问请求对配置数据进行模式操作,所述模式操作包括生成配置信息、根据数据管理模块和/或索引管理模块的操作结果添加、删除或更新配置信息,并根据数据访问请求获取应用数据集合和/或索引的配置信息,供数据管理模块和/或索引管理模块使用;
所述索引管理模块,用于管理索引数据,所述索引数据用于加速定位应用数据在应用数据集合中的位置,索引数据按照索引算法进行存储;所述索引管理模块通过该索引算法管理索引数据,并根据数据访问请求对索引数据进行索引操作,所述索引操作包括生成索引数据、根据数据管理模块的操作结果添加、删除或更新索引数据,以及根据索引算法查找索引数据获得数据位置信息,供数据管理模块使用;
所述数据管理模块,用于管理应用数据,数据管理模块统一定义应用数据的存储结构,并根据数据访问请求对应用数据进行数据操作,所述数据操作包括添加、删除、更新或检索应用数据;
所述操作***接口,用于为模式管理模块、数据管理模块、索引管理模块提供操作***提供的文件访问接口和/或内存访问接口,使模式管理模块访问配置数据,使数据管理模块访问应用数据,使索引管理模块访问索引数据。
所述位置信息包括:记录号和/或文件偏移量。
所述数据访问接口包括下述函数其中之一,或其任意组合:动态/静态应用创建函数、动态/静态应用打开/关闭函数、表创建函数、索引创建函数、数据检索函数、数据添加函数、数据删除函数和数据更新函数。
所述数据访问接口函数由模式管理模块、索引管理模块、数据管理模块提供的操作组合而成。
所述操作***接口与资源受限设备的操作***之间封装有符合ANSI C标准的文件***函数和内存操作函数。
所述索引管理模块还包括:
索引计算单元,用于执行不同的索引算法以获得数据的位置信息,所述索引算法包括B+树算法、位图算法、哈希算法等;
缓冲区管理单元,用于在内存中设置缓存区以缓存索引文件中的数据,并根据索引计算单元的计算需求对缓存区中的数据进行管理。
所述数据管理平台还包括辅助模块,所述辅助模块用于负责静态应用的应用数据、索引数据以及配置数据的生成。
所述应用接口包括动态应用接口和/或静态应用接口,所述应用模块包括动态应用模块和/或静态应用模块,所述数据管理平台的所述动态应用接口与动态应用模块相连,所述数据管理平台的所述动态应用接口或静态应用接口与静态应用模块相连。
所述应用模块与所述资源受限设备合设在一起,或与资源受限设备分设。
所述应用模块与所述资源受限设备合设在一起,所述应用模块通过下述方式与所述资源受限设备相连:符合空中下载规范格式的扩展应用程序接口函数;
所述应用模块与资源受限设备分设,所述应用模块通过下述任一方式与所述资源受限设备相连:数据短信、符合ISO7816规范的自定义命令、符合USB总线协议的自定义命令、符合MMC协议的自定义命令。
本发明还公开了一种数据访问方法,包括:
数据管理平台接收应用模块发出的数据访问请求,所述数据管理平台设置在资源受限设备中;
数据管理平台根据数据访问请求管理和/或访问配置数据、索引数据、应用数据,执行下述任一操作、或任意组合操作:模式操作、索引操作、数据操作;所述配置数据包括应用模块下所有应用数据集合、索引的配置信息以及该应用模块自身的配置信息;所述索引数据用于加速定位应用数据在表中的位置,索引数据按照索引算法进行存储。
在所述索引操作的执行过程中,所述方法还包括:将索引文件中的索引块读取到内存缓冲池中,在所述缓冲池中对索引数据进行操作。
按照最近最少使用算法对缓冲池中的缓存块进行替换。
所述数据管理平台包括应用接口、模式管理模块、数据管理模块、索引管理模块和操作***接口,所述应用接口,用于向应用模块提供数据访问接口,接收应用模块发出的数据访问请求;模式管理模块对配置数据进行模式操作;数据管理模块对应用数据进行数据操作;索引管理模块对索引数据进行索引操作;操作***接口向模式管理模块、数据管理模块、索引管理模块提供操作***提供的文件访问接口和/或内存访问接口。
所述数据管理平台根据数据访问请求通过数据访问接口管理和/或访问配置数据、索引数据、应用数据。
所述数据访问接口包括下述函数其中之一,或其任意组合:动态/静态应用创建函数、动态/静态应用打开/关闭函数、表创建函数、索引创建函数、数据检索函数、数据添加函数、数据删除函数和数据更新函数。
所述数据访问接口函数由模式管理模块、索引管理模块、数据管理模块提供的操作组合而成。
本发明还公开了一种数据访问***,包括应用模块和资源受限设备,
所述应用模块,其由资源受限设备的数据管理平台的数据访问接口生成,并向资源受限设备的数据管理平台发送数据访问请求,接收所述数据管理平台的操作结果;
所述资源受限设备包括数据管理平台,所述数据管理平台包括应用接口、模式管理模块、数据管理模块、索引管理模块和操作***接口,
所述应用接口,用于向应用模块提供数据访问接口;接收应用模块发出的数据访问请求;
所述模式管理模块,用于管理配置数据,所述配置数据包括应用模块下所有应用数据集合、索引的配置信息以及该应用模块自身的配置信息;所述模式管理模块还用于统一定义配置数据的存储结构,并根据数据访问请求对配置数据进行模式操作,所述模式操作包括生成配置信息、根据数据管理模块和/或索引管理模块的操作结果添加、删除或更新配置信息,并根据数据访问请求获取应用数据集合和/或索引的配置信息,供数据管理模块和/或索引管理模块使用;
所述索引管理模块,用于管理索引数据,所述索引数据用于加速定位应用数据在应用数据集合中的位置,索引数据按照索引算法进行存储;所述索引管理模块通过该索引算法管理索引数据,并根据数据访问请求对索引数据进行索引操作,所述索引操作包括生成索引数据、根据数据管理模块的操作结果添加、删除或更新索引数据,以及根据索引算法查找索引数据获得数据位置信息,供数据管理模块使用;
所述数据管理模块,用于管理应用数据,数据管理模块统一定义应用数据的存储结构,并根据数据访问请求对应用数据进行数据操作,所述数据操作包括添加、删除、更新或检索应用数据;
所述操作***接口,用于为模式管理模块、数据管理模块、索引管理模块提供操作***提供的文件访问接口和/或内存访问接口,使模式管理模块访问配置数据,使数据管理模块访问应用数据,使索引管理模块访问索引数据。
本发明实施例通过在增加数据管理模块,可使物理存储独立化,增加了应用模块的可移植性。
具体实施方式
为了便于本领域一般技术人员理解和实现本发明,现结合附图描绘本发明的实施例。
随着芯片和存储技术的不断发展,资源受限设备的运算能力和存储能力都得到了长足的发展。以智能卡为例,目前,智能卡已经从最初的8位CPU发展到了32位,存储空间也从最初的几K字节发展到目前的几十K、上百K,更有最新一些芯片厂家推出的大容量卡,使得存储容量一跃上升到几G字节。这使得在以智能卡为代表的资源受限设备上,也具备了存储海量信息的可行性。随着智能卡上存储空间的加大,特别是大容量智能卡的推出,传统的数据管理方式的缺点已越来越突出,急需要一种统一的数据管理平台来管理卡上的应用模块和数据。
另一方面,由于外形尺寸、功耗等方面的限制,以智能卡为代表的资源受限设备的一个普遍特点是,内存资源有限,工作频率较低,I/O通讯速度较慢,如智能卡芯片的***时钟频率通常不超过几十MHZ,内存大小也通常不超过64K字节;因此,市场上通用的数据管理平台一般都不适用于智能卡平台之上,因此,专门针对智能卡等资源受限设备的数据管理平台有待推出。
本发明实施例所描述的资源受限设备的典型代表是智能卡。所述智能卡基本组成结构如图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接口。
下面通过实施例来描述本发明。其中,实施例一描述了本发明的资源受限设备。实施例二描述了本发明的数据的存储结构。实施例三描述了本发明的资源受限设备的应用实例。实施例四描述了本发明的两种模式的资源受限设备。实施例五描述了本发明的数据访问方法。实施例六描述了本发明实施例的数据访问***。
实施例一
如图4所示,本实施例公开了一种资源受限设备,所述资源受限设备包括:数据管理平台,用于定义数据的存储结构(数据的存储结构参见实施例二的描述),并向应用模块提供统一的数据访问接口,这是传统的以智能卡为代表的资源受限设备所不具备的;操作***模块,用于提供文件管理、内存管理以及其它***功能模块,以便数据管理平台利用这些***功能存取数据;硬件平台,用于提供基本的硬件支持。
所述资源受限设备还与应用模块相连,所述应用模块可设置在资源受限设备中,也可设置在资源受限设备之外。应用模块包含一个或者多个数据应用,数据应用不同于一般应用,数据应用需要管理和存取大量数据,所述数据由于具有相似的结构而组成一个或多个数据集合;数据管理平台提供了统一的格式来存储这些数据集合中的数据;由于建立在统一的数据管理平台之上,所述应用模块中的数据应用可以直接调用数据管理平台提供的接口函数来编写,与硬件和操作***平台无关,数据应用不必关注数据的存储位置,由数据管理平台统一安排,从而增强了应用的可移植性;下面详细描述资源受限设备的各个模块及与资源受限设备相关的模块。
所述应用模块可以包含一个或多个数据应用,其可驻留资源受限设备上或设置在其它设备(如主设备)上。应用模块向数据管理平台发送数据访问请求以对数据进行访问。当应用模块驻留在资源受限设备之外(如主设备)时,应用模块可通过通信接口(通信接口参见实施例三的描述)向数据管理平台发送数据访问请求以对数据进行访问。
为了高效地操作数据,在本发明的实施例中,将应用模块中的数据应用划分为两类:静态应用和动态应用,数据管理平台针对两种不同类型的应用来分别存储和管理数据。所述静态应用的数据在资源受限设备之外生成,在应用模块初始化阶段数据被一次性写入资源受限设备内,应用模块运行过程中,只执行数据的检索操作,其所对应数据定期更新,更新不频繁,数据更新也是将数据在设备外准备好,然后一次性写入资源受限设备内;由于静态应用的数据是在资源受限设备外生成的,因此,数据可按一定的顺序排序组织,以加速特定需求的检索。所述动态应用的数据在应用模块执行过程中动态添加生成,应用模块运行过程中,不仅会执行数据的检索操作,还会频繁的***、删除或者更新数据;由于动态应用的数据是在应用执行过程中动态变化的,因此,数据按照写入的先后顺序组织。
所述数据管理平台与应用模块和操作***模块相连,接收应用模块传递来的数据访问请求,解析并执行数据访问请求,执行过程中调用操作***模块进行数据读写操作。如图5所示,数据管理平台包括应用接口、模式管理模块、数据管理模块、索引管理模块和辅助模块,其中,应用接口、模式管理模块、数据管理模块、索引管理模块设置在资源受限设备(如智能卡端)上,辅助模块设置在卡外(如PC端)。下面对数据管理平台的各个部分进行描述。
(1)应用接口,是向应用模块提供的数据访问接口,应用模块通过调用该应用接口,实现对应用数据的访问;根据数据应用类型的不同,所述应用接口包括动态应用接口和/或静态应用接口;根据功能的不同,所述应用接口可以划分为两类:
i、模式操作函数,包括:动态/静态应用创建、动态/静态应用打开/关闭、表创建、各种类型索引创建等函数;
ii、数据操作函数,包括:数据检索、数据添加、数据删除和数据更新等函数。
上述函数由模式管理模块、索引管理模块、数据管理模块提供的操作组合而成,以便由对应的管理模块来执行该函数中的操作。
由于数据管理平台提供了上述与操作***无关的数据访问接口,使得应用模块可以不必关心数据的具体存储,从而方便了应用模块的数据访问。
(2)模式管理模块,模式管理模块用于管理配置数据;所述模式管理模块还用于统一定义配置数据的存储结构,并根据数据访问请求对配置数据进行操作,如,生成配置信息、根据数据管理模块和/或索引管理模块的操作结果添加/删除/更新配置信息,并根据数据访问请求获取应用数据集合和/或索引的配置信息,供数据管理模块和/或索引管理模块使用。所述配置数据包括当前数据模块下所有应用数据集合、索引的配置信息以及该应用模块自身的配置信息,如应用名称、应用类别等。所述应用数据集合为一个应用模块下所有应用数据,可以根据逻辑结构划分为一个或者多个集合,每个集合可以单独存储在一个文件中或者所有集合存储在一个文件中,其可以以表的形式存在,在下文中,为方便描述,有时将应用数据集合也称表。模式管理单元对模式信息的操作主要有三类:
i、创建/打开模式操作:这一部分操作是在数据应用被创建或者数据应用被打开时执行,主要功能是创建数据字典(也称配置数据)或者将数据字典中的模式信息读入内存特定数据结构中;
ii、添加/更新模式操作:这一部分操作是在数据应用执行过程中,应用的模式信息发生变化时被调用,如新建表、新建索引等,主要功能是在数据字典中添加新的模式信息或者更新已有的模式信息;
iii、读取模式操作:模式管理模块还负责根据数据字典将数据访问请求生成数据操作执行路径和/或索引操作执行路径。即解析数据访问请求,在数据字典中获取数据访问请求中相关的表和索引的模式信息,并将这些信息形成数据和索引的操作执行路径;数据操作执行路径是指该数据访问请求所访问的数据文件、访问方法(读取或者写入)、访问条件(访问哪些数据域)以及访问顺序,数据管理模块将根据该执行路径来访问相应的数据文件。索引操作执行路径是指,该数据访问请求所包含的一个或多个索引操作,当该数据访问请求包含多个索引操作时,所述索引操作执行路径还包括:不同索引操作的优先级顺序,优先级由数据管理模块内部定义,索引管理模块将根据该执行路径来依次执行不同的索引操作。
(3)数据管理模块是数据管理平台的核心,用于管理应用数据,统一定义应用数据的存储结构,并根据数据访问请求对应用数据进行数据操作,所述数据操作包括添加、删除、更新或检索应用数据;所述数据管理模块还用于根据数据操作执行路径和/或所述数据的位置信息执行数据操作,如,执行具体的数据操作,包括***、删除、更新和检索数据;数据管理模块统一定义应用数据的存储结构,在本发明的具体实施例中,支持在一个数据应用下创建多个表,每个表中存储的是具有相同数据域组成结构的数据记录,数据访问请求最终会转化为对特定数据记录或者数据记录中特定数据域的操作;当应用模块发来一个数据操作请求后,会先由模式管理模块生成该请求对应的数据操作执行路径,然后传递给数据管理模块,数据管理模块依据该执行路径,依次执行指定的数据操作,如果在特定的数据域上创建有索引,则数据管理模块还会调用索引管理模块进行必要的索引操作;数据管理模块会根据具体的数据访问请求类型决定不同模块之间的执行顺序。
由于数据的存储由数据管理平台中的数据管理模块统一安排,使得应用模块不必关注数据的存储位置,从而增强了应用模块的可移植性。
(4)索引管理模块也是数据管理平台的重要组成部分,它的主要目的是加速数据的检索,用于管理索引数据,索引数据用于加速定位应用数据在应用数据集合中的位置,索引数据按照索引算法进行存储;所述索引管理模块通过该索引算法管理索引数据,并根据数据访问请求的不同对索引数据进行操作,包括生成索引数据、根据数据管理模块的操作结果添加、删除或更新索引数据,以及根据索引算法查找索引数据获得数据位置信息,供数据管理模块使用,从而加速数据管理模块的操作;每一个索引都与特定索引算法相关联,索引管理模块通过执行相应的索引算法来管理索引数据;当表中特定数据域的数据发生改变时,比如添加新的数据、删除或者更新已有数据,索引管理模块负责对相应的索引数据进行维护,如添加、删除或者更新等;当应用模块发出数据访问请求时,如果相应数据域上创建有索引,则模式管理模块会解析数据访问请求并得到索引的执行路径,然后由索引管理模块依次执行相应的索引算法,从而得到数据的位置信息,所述位置信息可以用记录号、文件偏移量等方式来表示;数据管理模块通过索引管理模块返回的位置信息可以快速的定位并获取数据;所述索引管理模块包含索引数据维护单元、索引计算单元和缓冲区管理单元,下面分别描述这三个单元。
所述索引数据维护单元,用于对索引数据进行维护,如添加、删除或者更新等。
所述索引计算单元,用于执行索引操作函数,并根据索引操作函数执行索引算法的计算,以获得数据的位置信息,并将所述数据的位置信息传给所述数据管理模块和/或应用模块。在本发明的实施例中,对静态应用提供四种类型索引的支持,分别是:物理索引、bitmap(位图)索引,B+树索引和hash(哈希)索引;对动态应用,可支持建立B+树索引。bitmap、B+树都是成熟的算法,在此不再赘述;在本实施例中,hash索引是以CRC16算法做为hash索引的散列算法;物理索引是专门针对静态应用所设立的,静态应用的数据在卡外生成时,可以按照某一个或几个数据域排序存储,这种与数据的物理排序有关的索引称为物理索引。
所述缓冲区管理单元,是为索引的计算提供缓存单元,目的是减少索引运算过程中对磁盘的访问次数,进一步提高执行速度;在索引的计算过程中,可能需要反复多次访问存储器中的索引文件。为减少对存储器读写操作的次数,在本发明中,提供了一个缓冲区,在内存中设置缓存区以缓存索引文件中的数据,并根据索引计算单元的计算需求对缓存区中的数据进行管理。如,索引计算过程中,当需要从存储器中读取索引数据时,会先判断索引数据是否已在缓冲区中,如果索引数据已在缓冲区中,则直接对缓冲区中的数据进行操作;如果索引数据不在缓冲区中,则缓存管理子模块会调用OS接口函数先将索引数据从存储器中读入缓存,再进行操作;当需要更新存储器中的索引数据时,会更新缓存中的相应数据,并设置标志位,指明其待更新,等到所有操作执行完毕后再一次性更新到存储器,或者是缓存中没有空闲空间,需要将缓存中的一部分数据置换出去时,将其更新到存储器中。由于缓冲区大小是固定的,因此,只能够缓存固定数据量的索引,因此,对缓冲区中的缓存数据需要有一定的淘汰策略,在本发明的实施例中,采用的是LRU(Least Recently Used,最近最少使用)算法。
(5)操作***接口,用于在模式管理模块、数据管理模块、索引管理模块执行过程中,当需要访问存储器中存储的文件时被调用,这里的操作***接口主要指文件访问接口和内存访问接口,模式管理模块、数据管理模块、索引管理模块通过文件访问接口和内存访问接口访问数据,即,使模式管理模块访问配置数据,使数据管理模块访问应用数据,使索引管理模块访问索引数据;并通过文件访问接口和内存访问接口返回访问结果;文件访问接口主要有以下几类:创建/删除文件、打开/关闭文件、读/写/定位文件等;内存访问接口主要是动态内存的申请/释放、内存数据设置/拷贝/比较等;为了增强数据管理平台在不同操作***上的可移植性,在本发明的实施例中,在自定义的操作***之上封装了一层符合ANSI C标准的文件***函数和内存操作函数;数据管理平台调用所述文件***函数和内存操作函数与资源受限设备的自定义操作***交互,增强了数据管理平台的可移植性。
(6)所述辅助模块,其包括静态应用辅助工具,用于专门负责静态应用的应用数据、索引数据以及数据字典(配置数据)的生成以及静态应用数据的导入,该工具运行在资源受限设备之外,如PC端,或者手持设备端。由于以智能卡为代表的资源受限设备的处理能力相对比较弱,因此,为了加快数据操作,减少智能卡的负担,将事务处理放在卡外来完成。本实施例中把应用模块划分为静态应用和动态应用,由于静态应用的数据和索引可以在卡外准备好,然后在适当时机(如,卡片初始化阶段)一次性写入卡内。
实施例二
本实施例描述数据的存储结构,在数据访问过程中,要涉及到具体的数据存储结构。本发明涉及三类数据,分别是:应用数据、索引数据和配置数据。
(1)应用数据
应用数据是指应用模块的基本数据信息;具有相同数据域组成结构的数据记录被存放在一张表中,在本发明的具体实施例中,为便于应用数据在不同平台之间的移植,为每张表创建一个数据文件,因此应用数据可以存放在一个或者多个数据文件中,在智能卡上,一个数据文件对应着卡上的一个基本文件(EF),同一个表中的数据在同一个数据文件中存储,数据按定长记录格式组织。
(2)索引数据
为加速数据操作,数据管理平台支持在一个或多个数据域上创建索引;应用模块可以在记录的不同数据域上创建不同类型的索引,每一条记录会根据索引算法的不同生成不同的索引数据,索引数据可以存放在一个或者多个索引文件中,一个索引文件对应着智能卡上的一个基本文件(EF);在本发明的实施例中,由于对索引文件的访问操作比较频繁,为尽量避免文件查找,为一个应用模块只建立一个索引文件,同一个应用模块下的所有索引数据存放在该索引文件中;索引文件一般被存放在Flash等存储器中,由于这些存储器都是按块进行读写的,因此,为加速存储器I/O操作,索引文件被逻辑上划分为与存储器大小相等的块,索引数据按块来存取;
(3)配置数据
在记录数据信息和索引信息的同时,应用还需要记录表、索引以及应用自身的配置信息,如,表的名称,表的数据域组成,索引名称,索引类别,不同算法索引的起始块号等信息;这些信息被记录在数据字典文件中;在本发明的实施例中,一个应用模块下有一个数据字典文件,在智能卡上数据字典文件也是一个基本文件(EF),数据字典文件中的数据按照变长记录的格式存储,每个表或者索引的配置信息组成一条变长记录;
图6示出本发明实施例的一种数据的文件结构。该数据结构有如下特点:
(1)对于一个数据应用,无论是静态应用还是动态应用,在卡上至少存在一个与该应用相对应的目录文件(DF)。
(2)在每个应用的目录文件下,至少有一个数据字典文件(EF),存放该应用模块下的所有表和索引的配置信息。
(3)在每个应用的目录文件下,可以有一个或多个数据文件(EF),存放该应用模块的数据,每个表的数据对应一个数据文件。
(4)在每个应用的目录文件下,至少有一个索引文件(EF),存放该应用模块所有索引数据。
实施例三
在图7a、图7b和图7c中,资源受限设备以智能卡为例。在图7a中,智能卡是一个SIM卡,与手机一起使用;用户数据存储在卡中,应用模块可以驻留在卡中,也可以安装在手机端;用户可以通过手机上的特定数据应用界面,向卡中添加/删除数据记录,或者从卡中检索数据记录,操作结果会在手机端显示。在图7b中,智能卡与手持计算设备(PDA)一起使用,如PDA等,用户通过手持计算设备的界面对卡中数据进行操作。在图7c中,智能卡通过读卡器被连接到计算机中,用户数据存储在卡中,应用模块安装在计算机端,用户在计算机端通过应用界面访问卡,进行数据操作。
对于应用模块设置资源受限设备之外的情况,由于本发明实施例的资源受限设备为带有大数据量存储的智能卡,应用模块与智能卡之间存在大数据量的I/O操作,因此对I/O传输速率具有一定要求;根据发明实施例,以智能卡为代表的资源受限设备与应用模块之间可以有以下多种传输接口。
(1)ISO7816接口:智能卡使用ISO7816接口通过读卡器与主设备交互或者直接与主设备交互;ISO7816接口采用半双工的通信方式,通讯速率一般不超过512Kbps;此时,卡上的I/O Driver提供的是遵循ISO/IEC 7816标准的ISO7816驱动。目前的智能卡都至少具有一个ISO7816接口,新一代的智能卡还会同时具有一个高速通道——MMC或者USB通道。
(2)ISO14443通道:智能卡使用ISO14443接口与读卡器或者主设备进行短距离无线方式交互;ISO14443接口是根据ISO/IEC 14443规范定义的一种非接触式的通信方式。
(3)MMC通道:资源受限设备使用MMC接口通过读卡器与主设备交互或者直接与主设备交互;此时,卡上的I/O Driver提供的是遵循MMC标准协议的MMC驱动。具有MMC通道的资源受限设备的一种封装形式是MMC卡,被广泛用于各类移动环境中,如手机、数码相机、MP3、PDA等;另一种形式是同时具有MMC通道的智能卡,这种类型的卡封装为ISO/IEC7816-1标准中规定的形态,在保留原有ISO7816触点功能的同时,启用其C4、C8两个保留触点,用于MMC的命令和数据传输。
(4)USB通道:资源受限设备通过USB通道与主设备交互;此时,卡上的I/O Driver提供的是遵循USB协议的USB驱动。具有USB通道的资源受限设备的一种封装形式是USB TOKEN,可直接与PC机相连,被广泛用于各类安全控制领域中;另一种形式是同时具有USB通道的智能卡,这种类型的卡封装为ISO/IEC7816-1标准中规定的形态,在保留原有ISO7816触点功能的同时,启用其C4、C8两个保留触点,用于USB的数据输入和输出。
实施例四
基于数据管理平台之上的应用模块,可有两种工作模式:模式1,如图8a所示,应用模块设置在资源受限设备上;模式2,如图8b所示,应用模块设置资源受限设备之外。在模式1中,主设备可以是手机等。下面以主设备是手机为例来说明,此时,智能卡是SIM卡,手机可以看作是卡的一个显示和I/O(输入/输出)设备。在SIM卡上,应用模块最常用的一种体现方式是STK(SIMToolkit,用户识别应用发展工具)应用,STK应用与数据管理平台交互,需要在原有的***OTA相关规范函数集基础上,自定义一套符合OTA规范格式的扩展API函数。
图9中是利用OTA规范相关函数以及符合OTA规范的自定义扩展API函数编写的一个SIM卡上STK应用的示例;其中,“移动梦网”是卡上STK应用的0级菜单,“超级号码簿”、“名片夹”、“酒店黄页”分别是0级菜单下的三个应用模块,以“名片夹”为例,在该应用下,包含三个过程,分别是“添加”、“查找”、“删除”,每个过程是调用OTA规范相关函数以及符合OTA规范的自定义扩展函数编写的,每一个OTA自定义扩展API函数与一个数据管理模块的数据操作接口API函数相对应;
下面代码以“名片夹”应用的“添加”过程为例,简要描述了编写该过程所要调用的函数集合;当用户选择运行“移动梦网”中“名片夹”应用下的“添加”过程时,操作***会逐一解析执行“添加”过程中的每一个函数,如Get_Input()函数获取用户输入的名片信息,Display_Text()返回执行成功或者失败的执行结果等;
“添加”过程:
......
Get_Input();//获取用户输入的名片信息
STK_Add();//调用自定义扩展OTA函数执行添加操作
Display_Text();//返回添加结果
......
当执行到自定义扩展API函数STK_Add()时,如下面代码所示,会首先从EditBuf的约定单元中获取用户输入的名片信息,然后将信息传递给数据处理模块的数据操作接口相应API函数DB_Add(),由其来将名片信息添加到已有的名片集合中,之后再将DB_Add()的执行结果放入EditBuf的约定单元,返回给上层STK应用;这里的EditBuf是OTA规范中定义的用于传递变量参数的内存单元;
STK_Add执行流程:
......
从EditBuf的约定单元中获取用户输入的名片信息;
调用DB_Add()函数将名片信息添加到卡上已有的名片集合中;
将执行结果放入EditBuf的约定单元中;
......
下面代码是以DB_Add()函数为例,来描述该函数在添加一条新的名片信息时的执行流程;
DB_Add执行流程:
......
调用模式操作子模块,找到相关数据文件以及所有与待添加数据相关的索引;
调用数据操作子模块在数据文件中添加一条新的名片记录;
调用索引操作模块为所有相关的索引生成一个新的索引项,并写入索引结构中相应位置;
......
当用户通过手机屏幕激活卡上的STK应用时,手机和SIM之间的信息传递是通过GSM11.11和GSM11.14规范中定义的主动式命令。图10中描述了用户激活“移动梦网”并进入“名片夹”应用进行“添加”时,手机和SIM卡之间的一系列交互过程。
在模式2中,如图8b所示,应用模块驻留在主设备端。这种模式下,主设备端不再仅仅是卡的显示和I/O设备,而是一个运行应用的主动设备,卡则被动地等待主设备端发来的数据访问请求并执行请求。结合前面所描述的智能卡与主设备端的不同物理连接方式,主设备端的应用模块向卡上的数据管理平台发送数据访问请求,可以有以下几种方式。
(1)通过数据短信:当智能卡作为SIM卡用于GSM手机中时,手机可以通过向卡发送数据短信来传递数据访问请求。
(2)通过符合ISO7816规范的自定义命令:当资源受限设备是一个智能卡用于PDA中时,或者与读卡器相连用于PC、笔记本电脑时,此时,应用是通过ISO7816传输接口与卡进行交互;在这种模式下,卡上需要定义一套符合ISO7816命令格式的自定义命令;开发人员在编写主设备端的应用模块时,当需要由卡来处理数据,则调用自定义的ISO7816命令向卡提交数据处理请求,卡接收到命令后,由卡上的APDU解析模块负责对命令进行解析;解析时,每一个ISO7816命令会对应地调用数据管理平台的应用接口API函数,从而完成对数据请求的处理;处理结束后,再以符合ISO7816格式的应答方式将处理结果返回给主设备端。
(3)通过符合USB总线协议的自定义命令:当资源受限设备是一个SIM卡,通过卡上的USB通道与手机交互时,或者是一个USB TOKEN与PC、笔记本电脑交互时,资源受限设备的操作***需要定义一套符合USB总线协议格式的自定义命令;开发人员在编写主设备端的应用模块时,当需要由卡来处理数据,则调用自定义的USB命令向资源受限设备提交数据处理请求,设备接收到请求命令后,由资源受限设备上的操作***对自定义的USB命令进行解析;解析时,每一个自定义的USB命令会对应地调用数据管理平台的应用接口API函数,从而完成对数据请求的处理;处理结束后,再以符合USB总线协议格式的应答方式将处理结果返回给主设备端。
(4)通过符合MMC总线协议的自定义命令:当资源受限设备是一个SIM卡,通过卡上的MMC通道与手机交互时,或者是一个MMC卡,通过MMC读卡器与PC、笔记本电脑交互时,资源受限设备的操作***需要定义一套符合MMC总线协议格式的自定义命令;开发人员在编写主设备端的应用模块时,当需要由卡来处理数据,则调用自定义的MMC命令向资源受限设备提交数据处理请求,设备接收到请求命令后,由资源受限设备上的操作***对自定义的MMC命令进行解析;解析时,每一个自定义的MMC命令会对应地调用数据管理平台的应用接口API函数,从而完成对数据请求的处理;处理结束后,再以符合MMC总线协议格式的应答方式将处理结果返回给主设备端。
实施例五
本实施例描述数据访问方法。所述方法包括:数据管理平台接收应用模块发出的数据访问请求,所述数据管理平台设置在资源受限设备中;数据管理平台根据数据访问请求管理和/或访问配置数据、索引数据、应用数据,执行下述任一操作、或任意组合操作:模式操作、索引操作、数据操作。具体而言,根据具体数据访问请求的不同,分别通过模式管理模块处理表和索引的模式信息,通过数据管理模块处理执行数据操作,以及通过索引管理模块执行索引操作;所述配置数据包括应用模块下所有应用数据集合、索引的配置信息以及应用模块自身的配置信息;所述索引数据用于加速定位应用数据在表中的位置,索引数据按照索引算法进行存储。下面以检索数据为例来描述具体的数据访问方法,如图11所示:
步骤91、数据管理平台接收应用模块发出的数据访问请求。所述数据管理平台包括应用接口、模式管理模块、数据管理模块、索引管理模块和操作***接口,所述应用接口,用于向应用模块提供数据访问接口,接收应用模块发出的数据访问请求。
步骤92、数据管理平台的应用接口通过数据访问接口将数据访问请求传递给下述模块:模式管理模块、数据管理模块、索引管理模块。
所述数据访问接口包括下述函数其中之一,或其任意组合:动态/静态应用创建函数、动态/静态应用打开/关闭函数、表创建函数、索引创建函数、数据检索函数、数据添加函数、数据删除函数和数据更新函数。所述数据访问接口函数由模式管理模块、索引管理模块、数据管理模块提供的操作组合而成。
步骤93、模式管理模块、数据管理模块、索引管理模块解析数据访问请求,并根据数据访问请求执行操作,所述操作包括:模式操作、索引操作、数据操作,如,根据数据访问请求在数据字典查找相关表的配置信息,生成数据操作执行路径,如,从数据字典找到要检索的表的配置信息,以确定数据操作的执行路径,所述执行路径包括:操作命令、表所在文件的文件ID号、数据记录长度、各个数据域名称和数据域宽度等。
在执行操作过程中,对索引文件的访问还会调用缓存管理子模块,由缓存管理子模块调用操作***接口函数读取索引文件,将索引计算过程中所要访问的索引块统一缓存在一个内存缓冲池中,在内容缓冲池中对索引数据进行操作,以免因为要得到同一块数据而反复访问存储器中的索引文件;如果缓冲池中的块全部被占用,则会根据LRU算法对缓存块进行替换。
步骤94、在模式操作、索引操作、数据操作的执行过程中,对数据字典文件、索引文件、数据文件的读写调用操作***接口;
实施例六
本实施例提供了一种数据访问***,包括应用模块和资源受限设备。所述应用模块与所述资源受限设备合设在一起,或与资源受限设备分设。所述应用模块与所述资源受限设备合设在一起,所述应用模块通过下述任一方式与所述资源受限设备相连:符合***OTA规范格式的扩展API函数。所述应用模块与资源受限设备分设,所述应用模块通过下述任一方式与所述资源受限设备相连:数据短信、符合ISO7816规范的自定义命令、符合USB总线协议的自定义命令、符合MMC总线协议的自定义命令。下面分别描述应用模块和资源受限设备。
所述应用模块,其由资源受限设备的数据管理平台的数据访问接口生成,并向资源受限设备的数据管理平台发送数据访问请求,接收所述数据管理平台的操作结果;
所述资源受限设备包括数据管理平台,所述数据管理平台包括应用接口、模式管理模块、数据管理模块、索引管理模块和操作***接口,
所述应用接口,用于向应用模块提供数据访问接口;接收应用模块发出的数据访问请求;
所述模式管理模块,用于管理配置数据,所述配置数据包括应用模块下所有应用数据集合、索引的配置信息以及该应用模块自身的配置信息;所述模式管理模块还用于统一定义配置数据的存储结构,并根据数据访问请求对配置数据进行模式操作,所述模式操作包括生成配置信息、根据数据管理模块和/或索引管理模块的操作结果添加、删除或更新配置信息,并根据数据访问请求获取应用数据集合和/或索引的配置信息,供数据管理模块和/或索引管理模块使用;
所述索引管理模块,用于管理索引数据,所述索引数据用于加速定位应用数据在应用数据集合中的位置,索引数据按照索引算法进行存储;所述索引管理模块通过该索引算法管理索引数据,并根据数据访问请求对索引数据进行索引操作,所述索引操作包括生成索引数据、根据数据管理模块的操作结果添加、删除或更新索引数据,以及根据索引算法查找索引数据获得数据位置信息,供数据管理模块使用;
所述数据管理模块,用于管理应用数据,数据管理模块统一定义应用数据的存储结构,并根据数据访问请求对应用数据进行数据操作,所述数据操作包括添加、删除、更新或检索应用数据;
所述操作***接口,用于为模式管理模块、数据管理模块、索引管理模块提供操作***提供的文件访问接口和/或内存访问接口,使模式管理模块访问配置数据,使数据管理模块访问应用数据,使索引管理模块访问索引数据。
在卡操作***层和应用层之间引入数据管理平台后,带来如下好处:
物理存储独立化:在卡操作***之上引入数据管理平台后,应用模块向平台发出应用创建的请求时,数据管理平台会为应用创建其数据目录和文件;应用向平台发出数据操作请求时,数据管理平台根据请求自动为应用添加、删除数据。因此,应用模块不需要知道数据存储的位置,当数据的物理存储发生改变时,应用模块不必随之变动。
数据管理结构化:应用的数据由记录组成;每个记录包含若干个不同类型的数据项,代表不同的含义;数据项结构相同的记录被组织到一起,由数据管理平台统一管理;数据管理平台会将数据项结构相同的记录统一管理,如,存放在同一个文件中,同时记录下其记录的数据项组成结构,如每个数据项的类型及其含义;当应用模块发出数据添加请求时,平台会根据数据项类型和含义将数据添加到特定的记录集合中;当应用模块发出检索数据请求时,也会根据数据项类型和含义到特定的记录集合中查找含有特定数据项的记录;这种采用结构化的方式管理的数据,使得数据可以被细化到数据项,而不仅仅是记录。
数据访问高效化:为了更高效地访问数据,数据管理平台在应用创建时就为应用同时建立若干个指定数据项的索引,当应用发出数据添加请求时,数据管理平台一方面将数据记录写入特定的记录集合中(记录集合可以是一个数据文件),同时,将索引指定的数据项的值以及该记录在记录集合中的位置组成一个索引项,写入索引结构中;索引结构可以有多种,即索引项的存储方式可以有多种,如二叉树、B树、B+树等,根据应用的特点可以采用不同的索引结构;当应用发出数据检索请求时,数据管理平台首先在索引结构中查找到指定的索引项,再根据索引项中存储的记录位置到记录集合中找到记录;由此一来,大大减少了数据访问的时间,提高了数据访问效率。
虽然通过实施例描绘了本发明,但本领域普通技术人员知道,在不脱离本发明的精神和实质的情况下,就可使本发明有许多变形和变化,本发明的范围由所附的权利要求来限定。