专利名称:一种内存数据集感知方法及装置的制作方法
技术领域:
本发明涉及数据处理技术领域,特别涉及一种内存数据集感知方法及装置。
背景技术:
内存数据集(Dataset),—般采用二维的结构化记录(Record)来表示,类似数据库表(Table),广泛应用在软件开发领域中,并往往是业务逻辑表达的关键。如何提高海量数据访问的性能,并能具有良好的可维护性,一直是开发人员追求的目标,以下是常见的数据集技术、特点及访问性能结构化数组,通常支持高级语言,例如C/C++,Delphi等,集成在开发工具中,数组下标访问数据性能好,但没有方便可视化的展现,灵活性低,并且编辑、交互GUI开发复杂,没有重用性;内存数据集控件,比如,ClientDataSet,KdmMemTable,AnyDAC,dxMemData 等,集成在开发工具中,传统内存数据控件方式开发,结构可定义,可做中间件,对于海量数据访问性能不佳,即不能满足极端场合大数据量的应用(千万级记录数);小型本地数据库,比如,FoxPro, InterBase, Access等,非集成,需另外购买和部署,增加用户成本,且迁移成本和风险较高,不适合做三层中间件,访问性能一般。基于此,本发明的发明人发现,现有的实现方式中,大多数数据集技术对海量数据访问的感知性差,即使有对数据访问性能好的数据集技术,但其灵活性低,兼容性不好、且编辑、GUI开发复杂,没有重用性,因此,现有技术中,如何提高对海量数据的访问效率是目前有待解决的问题。
发明内容
本发明实施例提供一种内存数据集感知方法及装置,以解决现有技术中对海量数据感知性差及访问效率低的技术问题。为解决上述技术问题,本发明实施例提供一种内存数据集感知方法,所述方法包括创建继承数据集对象;根据所述继承数据集对象生成数据结构描述串,并为所述数据结构描述串分配内存;判断是否需要数据感知访问,若是,则利用所述数据结构描述串创建标准数据结构;并将所述标准数据结构中的对象与数据感知控件相关联;在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。优选的,所述方法还包括若判断不需要数据感知访问时,则继续判断是否需要直接数据访问,若是,则利用所述数据结构描述串获取存储继承数据集对象的内存的地址;根据所述地址直接对内存中的继承数据集对象进行读写操作。优选的,所述将所述标准数据结构中的对象与数据感知控件相关联具体包括将继承数据集对象与原数据集关联;将任意数据感知控件与原数据集关联。优选的,所述方法还包括判断是否结束数据访问,若是,则结束数据访问,并释放继承数据集对象;否则,执行所述判断是否需要数据感知访问的步骤。本发明还提供一种内存数据集感知方法,所述包括 创建继承数据集对象;根据所述继承数据集对象生成数据结构描述串,并为该数据结构描述串分配内存;判断是否需要直接数据访问,若是,则利用所述数据结构描述串获取存储继承数据集对象的内存的地址;根据所述地址直接对内存中的继承数据集对象进行读写操作。优选的,所述方法还包括若判断不需直接数据访问,则继续判断是否需要数据感知访问,若是,则利用所述数据结构描述串创建标准数据结构;并将所述标准数据结构中的对象与数据感知控件相关联;在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。优选的,所述将所述标准数据结构中的对象与数据感知控件相关联具体包括将继承数据集对象与原数据集关联;将任意数据感知控件与原数据集关联。优选的,所述方法还包括 判断是否结束数据访问,若是,则结束数据访问,并释放继承数据集对象;否则,执行所述判断是否需要直接数据访问的步骤。相应的,本发明还提供一种内存数据集感知装置,所述装置包括第一创建单元,用于创建继承数据集对象;生成单元,用于根据所述继承数据集对象生成数据结构描述串;分配单元,用于为所述数据结构描述串分配内存;第一判断单元,用于判断是否需要数据感知访问,并发送判断结果;第二创建单元,用于在第一判断单元的判断结果为需要数据感知访问是,利用所述数据结构描述串创建标准数据结构;关联单元,用于将所述标准数据结构中的对象与数据感知控件相关联;第一操作单元,用于在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。优选的,所述装置还包括第二判断单元,用于在接收到判断单元的判断结果为不需要数据感知访问时,则继续判断是否需要直接数据访问,并发送判断结果;获取单元,用于在接收到第二判断单元的判断结果为需要直接数据访问时,利用所述数据结构描述串获取存储继承数据集对象的内存的地址;第二操作单元,根据所述地址直接对内存中的继承数据集对象进行读写操作。优选的,所述装置还包括第三判断单元,用于判断是否结束数据访问,并发送判断结果;释放单元,用于在接收到所述第三判断单元的判断结果为结束数据访问时,释放访问的继承数据集对象;所述第一判断单元,还用于在接收到所述第三判断单元的判断结果为不结束数据访问时,继续判断是否需要数据感知访问。本发明还提供一种内存数据集感知装置,所述装置包括
第一创建单元,用于创建继承数据集对象;生成单元,用于根据所述继承数据集对象生成数据结构描述串;分配单元,用于为所述数据结构描述串分配内存;第一判断单元,用于判断是否需要直接数据访问,并发送判断结果;获取单元,用于在接收到第一判断单元的判断结果为需要直接数据访问时,利用所述数据结构描述串获取存储继承数据集对象的内存的地址;操作单元,用于根据所述地址直接对内存中的继承数据集对象进行读写操作。优选的,所述装置还包括第二判断单元,用于在第一判断单元的判断结果为不需直接数据访问时,继续判断是否需要数据感知访问,并发送判断结果;第二创建单元,用于在接收到第二判断单元的判断结果为需要数据感知访问时,利用所述数据结构描述串创建标准数据结构;关联单元,用于将所述标准数据结构中的对象与数据感知控件相关联;操作单元,用于在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。优选的,所述装置还包括第三判断单元,用于判断是否结束数据访问,并发送判断结果;释放单元,用于在接收到第三判断单元的判断结果为结束数据访问时,释放继承数据集对象;所述第一判断单元,还用于在接收到第三判断单元的判断结果为不结束数据访问时,继续判断是否需要直接数据访问。本发明实施例创建了继承数据集对象,并根据所述继承数据集对象生成数据结构描述串,并为所述数据结构描述串分配内存,并利用所述数据结构描述串创建标准数据结构(即将生成数据结构描述串映射为标准的数据结构),通过标准数据集方法兼容所有数据感知类控件,以使原有数据感知类控件都能使用;进一步,本发明又可以通过直接内存访问法提供了直接内存地址操作数据的可能,即在数据访问上支持数据集方法和内存数组直接访问方法的2种方式,在面对海量数据时具有优异的访问性能。从而提高了访问海量数据的效率。
图I为本发明实施例提供的一种内存数据集感知方法的流程图;图2为本发明实施例提供的另一种内存数据集感知方法的流程图;图3为本发明实施例提供的一种内存数据集感知方法的应用实例;图4为本发明实施例提供的一种内存数据集感知装置的结构示意图;图5为本发明实施例提供的另一种内存数据集感知装置的结构示意图。
具体实施例方式为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。请参阅图1,为本发明实施例提供的一种内存数据集感知方法的流程图;所述方法包括步骤101 :创建继承数据集(BinDataSet)对象;步骤102 :根据所述继承数据集对象生成数据结构描述串S,并为所述数据结构描述串分配内存M ;步骤103 :判断是否需要数据感知访问,若是,则利用所述数据结构描述串S创建标准数据结构;并将所述标准数据结构中的对象与数据感知控件相关联;其中,所述将所述标准数据结构中的对象与数据感知控件相关联具体包括将继承数据集对象与原数据集关联;将任意数据感知控件与原数据集关联。比如,采用对象方式,用S创建数据集结构,并将对象与数据感知控件关联,DataSourcel. Dataset = BinDataSet ;// 将 BinDataSetl 与 TDataSourcel 关联;Controll. DataSource = Datasourcel ;// 任意感知控件与 DataSourcel 关联。其中,本发明实施例中的数据感知控件可以是各种可视化控件、图表、格子Grid、报表、数据迁移、数据库交互等。步骤104 :在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。相对应的,数据感知控件会可以利用DataSource找到BinDataSetl ;并利用标准对象方法访问数据。例如打开、关闭、增加、删除、修改、查找或其他操作等。本实施例不作限制。优选的,所述方法还可以包括若判断不需要数据感知访问时,则继续判断是否需要直接数据访问,若是,则利用所述数据结构描述串S获取存储继承数据集对象的内存M的地址;根据所述地址直接对内存中的继承数据集对象进行读写操作。也就是说,如果需要提高数据内存的访问效率,可以直接使用数据直接访问的方式。优选的,在上述实施例的基础上,所述方法还可以包括判断是否结束数据访问,若是,则结束数据访问,并释放继承数据集对象;否则,执行所述判断是否需要数据感知访问的步骤。也就是说,可以包括两种判断情况,一种判断是否结束数据感知访问;另一种是判断是否结束直接数据访问;也可以是包括任意一种判断情况,本实施例不作限制。本发明实施例创建了继承数据集对象,并根据所述继承数据集对象生成数据结构描述串S,并为所述数据结构描述串分配内存M,并利用所述数据结构描述串创建标准数据结构(即将生成数据结构描述串S映射为标准的数据结构),通过标准数据集方法兼容所有数据感知类控件,以使原有数据感知类控件都能使用。进一步,本发明又可以通过直接内存访问法提供了直接内存地址操作数据的可能,即在数据访问上支持数据集方法和内存数组直接访问方法的2种方式,在面对海量数据时具有优异的访问性能。从而提高了访问海量数据的效率。
还请参阅图2,为本发明实施例提供的另一种内存数据集感知方法的流程图,所述方法包括步骤201 :创建继承数据集对象;步骤202 :根据所述继承数据集对象生成数据结构描述串S,并为该数据结构描述串分配内存M ;步骤203 :判断是否需要直接数据访问,若是,则利用所述数据结构描述串S获取存储继承数据集对象的内存M的地址;步骤204 :根据所述地址直接对内存中的继承数据集对象进行读写操作。优选的,所述方法还可以包括若判断不需直接数据访问,则继续判断是否需要数据感知访问,若是,则利用所述数据结构描述串S创建标准数据结构;并将所述标准数据结构中的对象与数据感知控件相关联;在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。其中,所述将所述标准数据结构中的对象与数据感知控件相关联具体包括将继承数据集对象与原数据集关联;将任意数据感知控件与原数据集关联。优选的,所述方法还可以包括判断是否结束数据访问,若是,则结束数据访问,并释放继承数据集对象;否则,执行所述判断是否需要直接数据访问的步骤。本发明实施例先创建继承数据集对象,根据所述继承数据集对象生成数据结构描述串S,并为该数据结构描述串分配内存M,当用户需要提高对海量数据的访问效率时,可以直接选择直接数据访问(即直接内存访问方法);进一步,如果需要兼容所有的数据感知类控件(即数据感知控件),可以选择数据感知访问的方式,即通过标准数据集方法兼容所有数据感知类控件,以使原有数据感知类控件都能使用;即在数据访问上支持数据集方法和内存数组直接访问方法的2种方式,在面对海量数据时具有优异的访问性能。从而提高了访问海量数据的效率。当然,在本发明实施例中,可以根据需要直接选择数据感知访问或者直接数据访问,比如,如果需要提高对数据的访问消息,可以选择直接数据访问方式,如果需要兼容所有数据感知类控件,又要提高访问效率,则可以选择数据感知访问的方式;也可以在使用数据感知访问的方式访问一段时间后,改为直接数据访问的方式,反之也可以,本实施例不作限制。因此,本发明实施例可以根据需要,选择不同的数据访问方式,从而实现对海量数据的访问效率。下面以先选择数据感知访问的方式对数据进行访问,在选择直接数据访问的方式的对数据进行访问的过程为例。还请参阅图3,为本发明实施例提供的一种内存数据集感知方法的应用实例,包括步骤301 :创建继承数据集(BindataSet)对象;
首先,继承标准对象的方法有很多,本发明实施例以下述为例I) 2个内存分配方法function AllocRecordBuffer PChar ;override ;procedure FreeRecordBuffer(var Buffer PChar) ;override ;2) 4个书签操作方法
procedure GetBookmarkData (Buffer PChar ;Data Pointer) ;override ;function GetBookmarkFlag(Buffer PChar) TBookmarkFlag ;override ;procedure SetBookmarkFlag (Buffer PChar ;Value TBookmarkFlag);override ;procedure SetBookmarkData (Buffer PChar ;Data -Pointer) ;override ;procedure InternalGotoBookmark(Bookmark Pointer) ;override ;3) 3个记录访问方法function GetRecord TGetResult ;override ;function GetRecordSize Word ;override ;procedure SetFieldData(FieldTField ;Buffer Pointer) ;override ;4)数据编辑与操作方法(9个)procedure InternalOpen ;override ;procedure InternalClose ;override ;procedure InternalDelete ;override ;procedure InternalFirst ;override ;procedure InternalPost ;override ;procedure InternalHandleException ;override ;procedure InternalInitFieldDefs ;override ;procedure InternalInitRecord(Buffer PChar) ;override ;procedure InternalLast ;override ;本发明实施例在继承以上这些标准数据集方法时,并增加了自定义内存的访问(即直接数据访问)方法,见下面介绍。步骤302 :根据所述继承数据集对象生成数据结构描述串S,并为S分配数据内存M ;步骤303 :判断是否需要数据感知访问,若是,执行步骤304 ;否则,执行步骤308 ;步骤304 :釆用数据集对象方式,用S创建数据集结构,并将继承数据集对象与数据感知控件相关联;其中,数据集对象方式访问的方式比如,BDataSetl. Valuestr Num' ] = 123 ;(即用数据集对象的Values方法访问)一种关联方式为I. DataSourcel. Dataset = BinDataSet ;// 将 BinDataSetl 与 TDataSourcel 关联2. Controll. DataSource = Datasourcel ;// 任意感知控件与 DataSourcel 关联步骤305 :数据感知控件会利用数据源(DataSource)找到继承数据集(BinDataSetl)对象,并利用标准对象方法访问数据,即通过标准数据集的标准接口对内存中的继承数据集对象进行增加(Append)数据、删除(Delete)数据、修改(Update)数据或查询(Select)数据;但并不限于此,还可以是打开、关闭等操作,本实施例不作限制。步骤306 :判断是否需要选择直接数据访问,若是,执行步骤307 ;如果选择直接数据访问方式,则可以提高速度;否则,执行步骤309 ;其中,对该步骤中的直接数据访问,需增加如下关键函数
权利要求
1.一种内存数据集感知方法,其特征在于,包括 创建继承数据集对象; 根据所述继承数据集对象生成数据结构描述串,并为所述数据结构描述串分配内存;判断是否需要数据感知访问,若是,则利用所述数据结构描述串创建标准数据结构;并将所述标准数据结构中的对象与数据感知控件相关联; 在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。
2.根据权利要求I所述的方法,其特征在于,所述方法还包括 若判断不需要数据感知访问时,则继续判断是否需要直接数据访问,若是,则利用所述数据结构描述串获取存储继承数据集对象的内存的地址;根据所述地址直接对内存中的继承数据集对象进行读写操作。
3.根据权利要求I或2所述的方法,其特征在于,所述将所述标准数据结构中的对象与数据感知控件相关联具体包括 将继承数据集对象与原数据集关联; 将任意数据感知控件与原数据集关联。
4.根据权利要求I或2所述的方法,其特征在于,所述方法还包括 判断是否结束数据访问,若是,则结束数据访问,并释放继承数据集对象;否则,执行所述判断是否需要数据感知访问的步骤。
5.一种内存数据集感知方法,其特征在于,包括 创建继承数据集对象; 根据所述继承数据集对象生成数据结构描述串,并为该数据结构描述串分配内存;判断是否需要直接数据访问,若是,则利用所述数据结构描述串获取存储继承数据集对象的内存的地址; 根据所述地址直接对内存中的继承数据集对象进行读写操作。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括 若判断不需直接数据访问,则继续判断是否需要数据感知访问,若是,则利用所述数据结构描述串创建标准数据结构;并将所述标准数据结构中的对象与数据感知控件相关联;在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。
7.根据权利要求6所述的方法,其特征在于,所述将所述标准数据结构中的对象与数据感知控件相关联具体包括 将继承数据集对象与原数据集关联; 将任意数据感知控件与原数据集关联。
8.根据权利要求5或6所述的方法,其特征在于,所述方法还包括 判断是否结束数据访问,若是,则结束数据访问,并释放继承数据集对象;否则,执行所述判断是否需要直接数据访问的步骤。
9.一种内存数据集感知装置,其特征在于,包括 第一创建单元,用于创建继承数据集对象; 生成单元,用于根据所述继承数据集对象生成数据结构描述串;分配单元,用于为所述数据结构描述串分配内存; 第一判断单元,用于判断是否需要数据感知访问,并发送判断结果; 第二创建单元,用于在第一判断单元的判断结果为需要数据感知访问是,利用所述数据结构描述串创建标准数据结构; 关联单元,用于将所述标准数据结构中的对象与数据感知控件相关联; 第一操作单元,用于在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。
10.根据权利要求9所述的装置,其特征在于,还包括 第二判断单元,用于在接收到判断单元的判断结果为不需要数据感知访问时,则继续判断是否需要直接数据访问,并发送判断结果; 获取单元,用于在接收到第二判断单元的判断结果为需要直接数据访问时,利用所述数据结构描述串获取存储继承数据集对象的内存的地址; 第二操作单元,根据所述地址直接对内存中的继承数据集对象进行读写操作。
11.根据权利要求9或10所述的装置,其特征在于,还包括 第三判断单元,用于判断是否结束数据访问,并发送判断结果; 释放单元,用于在接收到所述第三判断单元的判断结果为结束数据访问时,释放访问的继承数据集对象; 所述第一判断单元,还用于在接收到所述第三判断单元的判断结果为不结束数据访问时,继续判断是否需要数据感知访问。
12.—种内存数据集感知装置,其特征在于,包括 第一创建单元,用于创建继承数据集对象; 生成单元,用于根据所述继承数据集对象生成数据结构描述串; 分配单元,用于为所述数据结构描述串分配内存; 第一判断单元,用于判断是否需要直接数据访问,并发送判断结果; 获取单元,用于在接收到第一判断单元的判断结果为需要直接数据访问时,利用所述数据结构描述串获取存储继承数据集对象的内存的地址; 操作单元,用于根据所述地址直接对内存中的继承数据集对象进行读写操作。
13.根据权利要求12所述的装置,其特征在于,还包括 第二判断单元,用于在第一判断单元的判断结果为不需直接数据访问时,继续判断是否需要数据感知访问,并发送判断结果; 第二创建单元,用于在接收到第二判断单元的判断结果为需要数据感知访问时,利用所述数据结构描述串创建标准数据结构; 关联单元,用于将所述标准数据结构中的对象与数据感知控件相关联; 操作单元,用于在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。
14.根据权利要求12或13所述的装置,其特征在于,还包括 第三判断单元,用于判断是否结束数据访问,并发送判断结果; 释放单元,用于在接收到第三判断单元的判断结果为结束数据访问时,释放继承数据集对象;所述第一判断单元,还用于在接收到第三判断单元的判断结果为不结束数据访问时, 继续判断是否需要直接数据访问。
全文摘要
本发明涉及一种内存数据集感知方法及装置,所述方法包括创建继承数据集对象;根据所述继承数据集对象生成数据结构描述串,并为所述数据结构描述串分配内存;判断是否需要数据感知访问,若是,则利用所述数据结构描述串创建标准数据结构;并将所述标准数据结构中的对象与数据感知控件相关联;在接收到所述数据感知控件发送的访问操作命令时,利用所述标准数据结构对内存中的继承数据集对象进行读写操作。本发明通过标准数据集方法兼容所有数据感知类控件,解决了现有技术中对海量数据感知性差及访问效率低的技术问题,提高了访问海量数据的效率。
文档编号G06F17/30GK102722485SQ201110077018
公开日2012年10月10日 申请日期2011年3月29日 优先权日2011年3月29日
发明者李文松 申请人:恒生电子股份有限公司