CN109710668B - 一种多源异构数据访问中间件构建方法 - Google Patents
一种多源异构数据访问中间件构建方法 Download PDFInfo
- Publication number
- CN109710668B CN109710668B CN201811441737.1A CN201811441737A CN109710668B CN 109710668 B CN109710668 B CN 109710668B CN 201811441737 A CN201811441737 A CN 201811441737A CN 109710668 B CN109710668 B CN 109710668B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- management module
- task
- node
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种多源异构数据访问中间件构建方法,该方法突破高效多源异构数据访问中间件构建、缓存替换算法两项关键技术,能够构建用于信息系统应用的多源异构数据访问中间件,提供统一的数据访问接口,简化信息系统开发中的多源异构数据访问问题,采用数据缓存机制,减轻高频数据访问对数据库的压力并提高数据访问速度,为今后信息系统的数据访问需求提供支撑。
Description
技术领域
本发明属于信息自动化领域,尤其涉及一种多源异构数据访问中间件构建方法。
背景技术
数据访问中间件主要提供透明式数据库访问,封装了底层实现细节,减轻了开发人员的负担;保证了系统的可移植性和扩展性,只要中间件的对外接口不变,即使底层系统改变,上层业务系统也无需改变。
数据访问中间件位于业务系统与数据库层之间,中间件层将业务层的访问请求按照自身的逻辑传递给数据库层,接收数据库层返回的结果集,在做完相应的处理后,传递给业务层,完成整个请求过程。通过将数据库访问和网络传输等相关模块独立出来,使得开发人员能够集中精力处理业务逻辑,只需遵循与中间件进行交互的接口标准,就可以方便的与异构异地的数据库进行数据的交互。
在目前的数据访问中间件研究中,主要存在以下两个问题:
(1)目前信息系统对数据的访问不仅涉及数据库的结构化数据,同样涉及半结构化与非结构化数据,涉及多种数据源,不同类型的数据源提供的访问接口各不相同,在开发信息系统应用时,开发人员需要了解各个数据源的访问接口与数据格式,影响开发效率,需要采用数据访问中间件为应用提供统一的访问接口,屏蔽底层差异;
(2)当应用访问数据的频率较高时,对数据库的频繁访问将会对数据库造成较大的压力,导致访问数据库所需时间增加甚至引起数据库崩溃;
发明内容
本发明目的是为解决信息系统的数据访问问题,简化多源异构数据访问的复杂性并提高数据访问的速度,为信息系统的数据访问提供服务支撑。
为实现上述目的,本发明提供了一种多源异构数据访问中间件构建方法。所述数据访问中间件包括中间件动态库、管理节点、处理节点及缓存系统,
所述中间件动态库由应用程序调用,为应用程序提供统一的数据访问接口,应用程序能够通过中间件动态库访问、查询及更新结构化数据、半结构化数据及非结构化数据;
所述管理节点用于接收应用程序的数据访问请求(即对数据的增、删、改、查),生成相应的任务交给处理节点执行;
管理节点用于向应用程序返回数据访问数据及结果;
管理节点用于管理缓存系统,进行缓存更新,维持缓存中数据与数据源中数据的一致性,并根据需要进行缓存替换;
所述处理节点负责根据管理节点的任务,访问数据源,从数据源中读取数据或更新数据源中的数据;
所述缓存系统是一组Memcached(开源的分布式内存对象缓存系统)或Redis(开源的Key-Value内存数据库)组成的分布式缓存,用于存储缓存数据,Memcached或Redis将数据存储在内存中。
例如:应用程序调用中间件动态库,向管理节点发出数据查询请求,请求的内容包括数据方法id及查询参数。每个数据方法id对应一条配置文件中定义的一条查询语句,查询参数对应查询时的筛选条件。
管理节点接收到数据查询请求后,根据数据方法id和查询条件生成数据访问任务,任务中包含任务id、数据源的类型(关系型数据库、非关系型数据库、分布式文件系统等)、数据源的用户名、密码、地址等信息及所需执行的查询语句。
管理节点将生成的数据查询任务发送给处理节点,处理节点根据任务信息,执行数据查询任务(即连接对应的数据源,执行数据查询),将数据源返回的数据(根据数据源类型的不同,返回不同形式的数据,如关系型数据库返回一组多行多列的数据;非关系型数据库返回一组键值对;分布式文件系统返回一组文件的二进制数据)转化为一系列的键值对并序列化为一个二进制数组,将其连同查询结果(即任务执行结果,成功或失败)一起返回给管理节点。
管理节点接收到处理节点返回的任务执行结果和数据后,将其返回给中间件动态库,并由中间件动态库将二进制的数据反序列化为一系列的键值对,交给应用程序使用。同时若本次数据查询请求所使用的数据源为关系型数据库,管理节点可将本次数据方法id及查询参数转化为一个Key值,将本次查询得到的数据作为Value,组成一个键值对,存放入缓存系统中,并记录缓存系统中所缓存的所有的键值对Key-Value的Key值。之后当接收到相同的数据方法id和查询参数后,可直接从缓存系统中读取对应的数据,返回给应用。与上述数据查询过程类似,当应用需要更新数据源中的数据时(即执行增、删、改操作),调用中间件动态库,中间件动态库向管理节点发送数据更新请求,包括数据方法id及更新参数。
管理节点根据数据方法id及更新参数生成数据更新任务,发送给处理节点执行,处理节点执行数据更新任务,更新指定数据源中的数据,并将执行结果(成功或失败)返回给管理节点,管理节点将执行结果返回给中间件动态库,由中间件动态库返回给应用。同时,管理节点根据数据方法id查询配置文件中记录的该请求所影响的关系型数据库的id及影响的表名,检查缓存系统所缓存的键值对Key-Value是否可能收到影响,若缓存系统中缓存的某一条查询数据所对应的数据库id及表名包含在本次数据更新请求所影响的数据库的id及表名之中,则认为本次数据更新请求会影响这一条查询数据,该查询数据已经失效,需要更新。此时将会生成该查询数据对应的数据查询任务,交给处理节点执行,当处理节点返回查询数据后,重新更新缓存系统中的这一条键值对。
所述管理节点包括数据访问服务接口、配置管理模块、需求管理模块、任务管理模块、节点管理模块和缓存管理模块;
所述数据访问服务接口与应用程序的中间件动态库进行交互,接收应用的数据访问请求,向应用返回请求的执行结果和数据;
所述配置管理模块用于加载并维护管理节点的配置信息,供其他模块(即需求管理模块、节点管理模块和缓存管理模块)使用;
所述需求管理模块用于维护应用的数据访问请求,对请求进行处理,生成对应的任务交给任务管理模块处理;
所述任务管理模块用于对数据访问任务进行管理,根据不同任务类型,按照一定的算法流程调用节点管理模块及缓存管理模块进行处理;例如对于数据查询任务,首先查询缓存管理模块,若缓存管理模块已经缓存了所需的数据,直接从缓存管理模块读取数据返回给应用,若缓存管理模块中无所需数据,则需要从指定的数据源获取数据,返回给应用,然后将数据交给缓存管理模块判断是否需要缓存,对于数据更新任务,首先将数据更新任务交给节点管理模块,执行成功后,将结果返回给应用,并将任务信息交给缓存管理模块,由缓存管理模块判断是否需要更新缓存,若需要则通知任务管理模块生成数据查询任务,将执行得到的数据交给缓存管理模块,由缓存管理模块更新缓存;
所述节点管理模块用于对处理节点进行管理,基于任务分配算法(基于现有技术,专利名称:《基于国产化平台的高可靠集群构建方法》,申请号:201711308590.4),将任务分发给处理节点进行处理,并将处理结果返回给任务管理模块;
所述缓存管理模块负责对缓存系统进行操作,包括缓存数据读取、写入、更新,负责监控缓存系统的使用容量,当容量达到上限时,按照缓存替换算法,进行缓存替换。
所述数据访问中间件执行如下步骤:
步骤a1,用户根据自己的实际需要,通过配置管理模块对数据访问中间件的数据方法进行配置,采用XML文件形式进行配置,配置数据方法id、数据方法、对应的数据源参数;
步骤a2,数据访问中间件的管理节点加载配置文件;
步骤a3,应用调用数据访问中间件提供的中间件动态库,进行数据访问操作;
步骤a4,中间件动态库将数据访问请求发送给管理节点;
步骤a5,管理节点的需求管理模块根据配置文件解析数据访问请求,包括数据查询请求和数据更新请求,生成数据访问任务交给任务管理模块进行处理,其中数据更新请求包括数据的增、删、改,所述数据访问任务包括数据查询任务和数据更新任务;任务管理模块根据任务类型(数据查询任务、数据更新任务),调用节点管理模块和缓存管理模块进行处理;节点管理模块将数据查询任务和数据更新任务交给处理节点执行;
步骤a6,管理节点将数据访问请求的执行结果和数据发送给中间件动态库。
步骤a7,中间件动态库向应用返回执行结果和数据。
步骤a5中,当执行数据查询任务时,具体包括如下步骤:
步骤b1,管理节点的任务管理模块将数据方法id及参数值提交给缓存管理模块,缓存管理模块根据数据方法id及参数值,计算该数据对应的缓存的key值,通过一致性hash算法计算该key值可能存在于缓存系统的位置;
步骤b2,管理节点的缓存管理模块从缓存系统的对应位置通过key值获取缓存数据,若成功从缓存系统读取所需数据,则返回给任务管理模块,由任务管理模块直接返回给中间件动态库;否则,任务管理模块将数据查询任务交给节点管理模块,节点管理模块选择一个处理节点,将任务交给该处理节点执行;
步骤b3,处理节点执行完成查询任务后,将结果和数据返回给管理节点的节点管理模块,节点管理模块将结果和数据返回给任务管理模块;
步骤b4,管理节点将查询任务的结果和数据返回给中间件动态库;
步骤b5,管理节点的任务管理模块将数据及方法id和参数提交给缓存管理模块,缓存管理模块根据缓存替换算法,决定是否需要将查询任务的数据存入缓存系统,如果需要,则根据数据方法id及参数值,计算该数据对应的缓存的key值,将key值与数据组成键值对,将其存入缓存系统。
步骤a5中,当执行数据更新任务时,具体包括如下步骤:
步骤c1,管理节点的任务管理模块将数据更新任务交给节点管理模块,节点管理模块选择一个处理节点执行任务;
步骤c2,处理节点执行完成任务后,将结果返回给管理节点的节点管理模块,由节点管理模块将结果返回给任务处理模块;
步骤c3,管理节点将执行结果返回给中间件动态库,若执行结果为成功,管理节点的任务管理模块将任务信息(方法id及参数)提交给缓存管理模块,缓存管理模块根据配置文件中数据方法对应的数据源及数据项,判断本次数据更新所影响的缓存数据,将其从缓存中移除,并告知任务管理模块需要更新的缓存数据对应的数据方法和参数,任务管理模块重新生成一个或两个以上数据查询任务;若执行结果为不成功,管理节点无需做进一步的处理;
步骤c4,管理节点的任务管理模块将数据查询任务交给节点管理模块,由节点管理模块选择处理节点执行;
步骤c5,处理节点执行完成后,将数据查询任务的执行结果和数据返回给管理节点的节点管理模块,由节点管理模块返回给任务管理模块。
步骤c6,管理节点的任务管理模块将数据交给缓存管理模块,缓存管理模块将数据重新存入缓存系统。
所述缓存替换算法具体包括如下步骤:
步骤d1,对于每个潜在的需要缓存的数据Mi,统计从数据源中读取Mi所需要的平均时间ATi,数据大小Si以及在T毫秒内的访问次数ACi、更新次数UCi、更新所需平均时间UTi;
步骤d2,计算每个潜在的需要缓存的数据Mi的缓存价值Vi:
步骤d3,将所有已放入缓存的数据的缓存价值放入小根堆(小根堆即一种经过排序的完全二叉树,其根节点的键值是所有节点键值中的最小值)中,此时小根堆的堆顶元素即为最小缓存价值Vs;
步骤d4,当缓存系统的容量已经达到上限,无法容纳下一个需要缓存的数据时,将新的需要缓存的数据Mn的缓存价值Vn与数据Ms的缓存价值Vs比较,若Vn-Vs≤ε,ε为预设的阈值(一般可取值为3000/T),则不需要进行缓存替换;若Vn-Vs>ε,则跳转至步骤d5;
步骤d5,将Vs对应的缓存数据Ms从缓存中移除,并将Vs从小根堆中移除;
步骤d6,若缓存系统的剩余容量能够容纳数据Mn,则将数据Mn存放入缓存系统并将其缓存价值也存入缓存系统;否则,重复步骤d4。
步骤d2中,通过如下公式计算每个潜在的需要缓存的数据Mi的缓存价值Vi:
Vi=(ATi*ACi-UCi*UTi)/Si (1)。
本发明具有如下特点:
1、高效多源异构数据访问中间件架构设计。为了简化多源异构数据访问的复杂性,数据访问中间件对外提供统一的数据访问接口,在内部根据数据访问请求的类型(结构化数据、半结构化数据及非结构化数据),自主判断需要操作的数据源(关系型数据库、非关系型数据库、文件系统等),获取数据后按照统一的格式返回给应用,对应用屏蔽数据源的接口差异。为了减轻数据库压力并提高数据访问速度,采用数据缓存技术,缓存经常访问的数据,并负责维持缓存数据与数据源内数据的一致性,当应用需要该数据时,直接从缓存中获取并返回给应用,减少数据库访问操作和文件系统访问操作。
2、缓存替换算法。数据缓存的容量远小于整个数据源内的数据容量,无法将所有数据进行缓存,随着应用不断的进行数据访问,数据缓存的容量将会达到上限,此时当有新的数据需要放入缓存时,需要将缓存中的部分不用或使用频率低的数据删除,将新的需要缓存的数据存入缓存中。针对数据访问中间件,提出一种基于数据缓存价值的缓存替换算法。该算法统计所有缓存数据的访问频率、从数据库中读取该数据所花费的时间以及数据的更新频率(当数据源中该数据发生变化时,为维持数据一致性,需要更新缓存中的该数据),计算每个缓存数据的缓存价值(即评定缓存该数据的好处以及不缓存该数据的代价),并构建一个小根堆进行存储。当缓存容量达到上限并且有新的数据需要缓存时,计算该数据缓存价值,将其与小根堆中第一个数据(即缓存价值最小的数据)的缓存价值进行比较,若新数据的缓存价值小于小根堆中第一个数据的缓存价值则不需要缓存新数据,否则从小根堆中取出第一个数据,将其从缓存中删除,若缓存容量依然不够,则继续从小根堆中取出第一个数据,重复上述步骤。
有益效果:
与现有的数据访问中间件构建技术方法相比,本发明的显著优点为:(1)通过统一的缓存系统提高数据访问速度,减小数据库压力;(2)缓存替换算法能够提高缓存的利用效率并减小数据平均访问时间。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。
图1是高效多源异构数据访问中间件架构设计示意图。
图2是数据访问中间件整体流程。
图3是数据查询任务处理流程。
图4是数据更新任务处理流程。
图5是基于缓存价值的缓存替换算法流程图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
本发明通过构建高效多源异构数据访问中间件,为信息系统的数据访问需求提供服务支撑,为信息系统的各个应用程序提供统一的数据访问接口,屏蔽不同数据源之间的底层差异,并通过数据缓存提高数据访问速度。
下面主要从高效多源异构数据访问中间件构建过程中涉及的两项关键技术,即高效多源异构数据访问中间件架构和缓存替换算法进行详细描述。
本发明提出的高效多源异构数据访问中间件架构如图1所示。数据访问中间件由中间件动态库、管理节点、处理节点及缓存系统组成。
中间件动态库由应用程序调用,为应用程序提供统一的数据访问接口,应用可通过中间件动态库访问、查询及更新(增、删、改)结构化数据、半结构化数据及非结构化数据。
管理节点负责接收应用程序的数据访问请求,生成相应的任务交给处理节点执行;负责向应用程序返回数据访问数据及结果;负责管理缓存系统,进行缓存更新,维持缓存中数据与数据源中数据的一致性,并根据需要进行缓存替换。管理节点由数据访问服务接口、配置管理模块、需求管理模块、节点管理模块、任务管理模块及缓存管理模块组成:
数据访问服务接口:与应用程序的中间件动态库进行交互,接收应用的数据访问请求,向应用返回请求的执行结果和数据。
配置管理模块:加载并维护管理节点的配置信息,供其他模块(包括需求管理模块、节点管理模块、任务管理模块和缓存管理模块)使用。
需求管理模块:维护应用的数据访问请求,对请求进行处理,生成对应的任务交给任务管理模块处理。
任务管理模块:负责对数据访问任务进行管理,根据不同人物类型,按照一定的算法流程调用节点管理模块及缓存管理模块进行处理。
节点管理模块:负责对处理节点进行管理,基于任务分配算法,将任务分发给处理节点进行处理,并将处理结果返回给任务管理模块。
缓存管理模块:负责对缓存系统进行操作,包括缓存数据读取、写入、更新,负责监控缓存系统的使用容量,当容量达到上限时,按照缓存替换算法,进行缓存替换。
处理节点负责根据管理节点的任务,访问数据源,执行比较耗时的操作,如从数据源中读取数据或更新数据源中的数据。
缓存系统是一组Memcached或Redis组成的分布式缓存,用于存储缓存数据,Memcached或Redis将数据存储在内存中,数据读取和写入速度远高于数据库或文件系统,将高频访问的数据存入缓存系统中,可以有效提高数据访问速度。
数据访问中间件位于应用程序与数据源之间,应用无需直接操作数据源,而是调用中间件提供的接口,数据访问操作由数据访问中间件完成。数据访问中间件接收到应用的数据查询请求时,先尝试从缓存系统中读取所需的数据,若存在则直接返回给应用;若不存在,则从数据源中读取需要的数据,将其返回给应用,并将该数据存入缓存系统中,期间若缓存系统容量达到上限,则按照缓存替换算法进行缓存替换。当接收到应用更新数据的请求时,首先更新数据源中的数据,然后分析受影响的缓存数据,从数据源中读取数据更新缓存中的相应数据。
数据访问中间件整体流程如图2所示:
1.首先应用开发人员根据自己的实际需要,对数据访问中间件的数据方法进行配置,采用XML文件形式进行配置,配置数据方法id、数据方法、对应的数据源参数。
2.数据访问中间件的管理节点加载配置文件。
3.应用调用中间件提供的动态库进行数据访问操作。
4.中间件动态库将数据访问请求发送给管理节点。
5.管理节点根据配置文件解析数据访问请求(包括数据查询请求和数据更新请求,其中数据更新请求包括数据的增、删、改),生成数据访问任务(包括数据查询任务和数据更新任务)进行执行。
6.管理节点将数据访问请求的执行结果和数据发送给中间件动态库。
7.中间件动态库向应用返回执行结果和数据。
数据查询任务处理流程如图3所示:
1.管理节点首先根据数据方法id及参数值,计算该数据对应的缓存的key值,通过一致性hash算法计算该key值可能存在于缓存系统的位置。
2.管理节点尝试从缓存系统的对应位置通过key值获取缓存数据。
3.若成功从缓存系统读取所需数据,直接返回给中间件动态库;否则,将数据查询任务交给处理节点执行。
4.处理节点执行完成查询任务后,将结果和数据返回给管理节点。
5.管理节点将查询任务的结果和数据返回给中间件动态库。
6.管理节点根据缓存替换算法,决定是否需要将查询任务的数据存入缓存系统,如果需要,则将其存入缓存系统。
数据更新任务处理流程如图4所示:
1.管理节点将数据更新任务交给处理节点执行。
2.处理节点执行完成任务后,将结果返回给管理节点。
3.管理节点将执行结果返回给中间件动态库。
4.若执行结果为成功,管理节点根据配置文件中数据方法对应的数据源及数据项(如数据库的表),判断本次数据更新所影响的缓存数据,将其从缓存中移除,重新生成一个或多个数据查询任务。
5.管理节点将数据查询任务交给处理节点执行。
6.处理节点执行完成后,将数据查询任务的执行结果和数据返回给管理节点。
7.管理节点将数据重新存入缓存系统。
缓存替换算法:
在数据访问中间件中,数据源中的数据量远大于缓存系统的容量,数据访问中间件无法将数据源中所有的数据存入缓存系统中。因此需要采用缓存替换算法,将常用的数据放入缓存中,将不常用的数据从缓存中移除。目前,常用的缓存替换算法主要有FIFO(先入先出)、LRU(最近最少使用)。LRU算法是经常采用的内存页面置换算法,但是,在本发明的应用场景下,由于从数据源中获取各个数据所花费的时间代价并不相同,有些数据可能使用次数比较少,但是从数据源中获取这些数据时需要的时间很长,此时若使用LRU算法,将会将这些数据从缓存中移除,应用下次访问这些数据时就需要从数据源中获取,导致数据访问速度受到较大影响,不能较好的达到通过缓存系统提高数据访问速度的目的。因此,需要研究适用于本发明应用场景的缓存替换算法。
本发明提出了一种基于数据缓存价值的缓存替换算法。该算法统计所有缓存数据的访问频率、从数据库中读取该数据所花费的时间以及数据的更新频率(当数据源中该数据发生变化时,为维持数据一致性,需要更新缓存中的该数据),采用加权评分算法计算每个缓存数据的缓存价值(即评定缓存该数据的好处以及不缓存该数据的代价),当需要替换缓存时,选择缓存价值最低的缓存数据进行替换。该算法的流程图如图5所示,具体步骤如下:
1.对于每个潜在的需要缓存的数据Mi,统计从数据源中读取Mi所需要的平均时间ATi,数据大小Si以及在T毫秒内的访问次数ACi、更新次数UCi、更新所需平均时间UTi。
2.计算每个Mi的缓存价值Vi:
Vi=(ATi*ACi-UCi*UTi)/Si (1)
3.将所有已放入缓存的数据的缓存价值放入小根堆中,此时小根堆的堆顶元素即为最小缓存价值Vs。
4.当缓存系统的容量已经达到上限,无法容纳下一个需要缓存的数据时,将新的需要缓存的数据Mn的缓存价值Vn与Vs比较。若Vn-Vs≤ε(ε为预设的阈值),则不需要进行缓存替换;若Vn-Vs>ε,则跳转至步骤5。
5.将Vs对应的缓存数据Ms从缓存中移除,并将Vs从小根堆中移除。
6.若缓存系统的剩余容量能够容纳数据Mn,则将数据Mn存放入缓存系统并将其缓存价值也存入缓存系统;否则,重复步骤4。
本发明提供了一种多源异构数据访问中间件构建方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (1)
1.一种多源异构数据访问中间件构建方法,其特征在于,所述数据访问中间件包括中间件动态库、管理节点、处理节点及缓存系统,
所述中间件动态库由应用程序调用,为应用程序提供统一的数据访问接口,应用程序能够通过中间件动态库访问、查询及更新结构化数据、半结构化数据及非结构化数据;
所述管理节点用于接收应用程序的数据访问请求,生成相应的任务交给处理节点执行;
管理节点用于向应用程序返回数据访问数据及结果;
管理节点用于管理缓存系统,进行缓存更新,维持缓存中数据与数据源中数据的一致性,并根据需要进行缓存替换;
所述处理节点负责根据管理节点的任务,访问数据源,从数据源中读取数据或更新数据源中的数据;
所述缓存系统是一组Memcached或Redis组成的分布式缓存,用于存储缓存数据,Memcached或Redis将数据存储在内存中;
所述管理节点包括数据访问服务接口、配置管理模块、需求管理模块、任务管理模块、节点管理模块和缓存管理模块;
所述数据访问服务接口与应用程序的中间件动态库进行交互,接收应用的数据访问请求,向应用返回请求的执行结果和数据;
所述配置管理模块用于加载并维护管理节点的配置信息,供其他模块使用;
所述需求管理模块用于维护应用的数据访问请求,对请求进行处理,生成对应的任务交给任务管理模块处理;
所述任务管理模块用于对数据访问任务进行管理,根据不同任务类型,按照一定的算法流程调用节点管理模块及缓存管理模块进行处理;
所述节点管理模块用于对处理节点进行管理,基于任务分配算法,将任务分发给处理节点进行处理,并将处理结果返回给任务管理模块;
所述缓存管理模块负责对缓存系统进行操作,包括缓存数据读取、写入、更新,负责监控缓存系统的使用容量,当容量达到上限时,按照缓存替换算法,进行缓存替换;
所述数据访问中间件执行如下步骤:
步骤a1,用户根据自己的实际需要,通过配置管理模块对数据访问中间件的数据方法进行配置,采用XML文件形式进行配置,配置数据方法id、数据方法、对应的数据源参数;
步骤a2,数据访问中间件的管理节点加载配置文件;
步骤a3,应用调用数据访问中间件提供的中间件动态库,进行数据访问操作;
步骤a4,中间件动态库将数据访问请求发送给管理节点;
步骤a5,管理节点的需求管理模块根据配置文件解析数据访问请求,包括数据查询请求和数据更新请求,生成数据访问任务交给任务管理模块进行处理,其中数据更新请求包括数据的增、删、改,所述数据访问任务包括数据查询任务和数据更新任务;任务管理模块根据任务类型,调用节点管理模块和缓存管理模块进行处理;节点管理模块将数据查询任务和数据更新任务交给处理节点执行;
步骤a6,管理节点将数据访问请求的执行结果和数据发送给中间件动态库;
步骤a7,中间件动态库向应用返回执行结果和数据;
步骤a5中,当执行数据查询任务时,具体包括如下步骤:
步骤b1,管理节点的任务管理模块将数据方法id及参数值提交给缓存管理模块,缓存管理模块根据数据方法id及参数值,计算该数据对应的缓存的key值,通过一致性hash算法计算该key值可能存在于缓存系统的位置;
步骤b2,管理节点的缓存管理模块从缓存系统的对应位置通过key值获取缓存数据,若成功从缓存系统读取所需数据,则返回给任务管理模块,由任务管理模块直接返回给中间件动态库;否则,任务管理模块将数据查询任务交给节点管理模块,节点管理模块选择一个处理节点,将任务交给该处理节点执行;
步骤b3,处理节点执行完成查询任务后,将结果和数据返回给管理节点的节点管理模块,节点管理模块将结果和数据返回给任务管理模块;
步骤b4,管理节点将查询任务的结果和数据返回给中间件动态库;
步骤b5,管理节点的任务管理模块将数据及方法id和参数提交给缓存管理模块,缓存管理模块根据缓存替换算法,决定是否需要将查询任务的数据存入缓存系统,如果需要,则根据数据方法id及参数值,计算该数据对应的缓存的key值,将key值与数据组成键值对,将其存入缓存系统;
步骤a5中,当执行数据更新任务时,具体包括如下步骤:
步骤c1,管理节点的任务管理模块将数据更新任务交给节点管理模块,节点管理模块选择一个处理节点执行任务;
步骤c2,处理节点执行完成任务后,将结果返回给管理节点的节点管理模块,由节点管理模块将结果返回给任务处理模块;
步骤c3,管理节点将执行结果返回给中间件动态库,若执行结果为成功,管理节点的任务管理模块将任务信息提交给缓存管理模块,缓存管理模块根据配置文件中数据方法对应的数据源及数据项,判断本次数据更新所影响的缓存数据,将其从缓存中移除,并告知任务管理模块需要更新的缓存数据对应的数据方法和参数,任务管理模块重新生成一个或两个以上数据查询任务;若执行结果为不成功,管理节点无需做进一步的处理;
步骤c4,管理节点的任务管理模块将数据查询任务交给节点管理模块,由节点管理模块选择处理节点执行;
步骤c5,处理节点执行完成后,将数据查询任务的执行结果和数据返回给管理节点的节点管理模块,由节点管理模块返回给任务管理模块;
步骤c6,管理节点的任务管理模块将数据交给缓存管理模块,缓存管理模块将数据重新存入缓存系统;
所述缓存替换算法具体包括如下步骤:
步骤d1,对于每个潜在的需要缓存的数据Mi,统计从数据源中读取Mi所需要的平均时间ATi,数据大小Si以及在T毫秒内的访问次数ACi、更新次数UCi、更新所需平均时间UTi;
步骤d2,计算每个潜在的需要缓存的数据Mi的缓存价值Vi:
步骤d3,将所有已放入缓存的数据的缓存价值放入小根堆中,此时小根堆的堆顶元素即为最小缓存价值Vs;
步骤d4,当缓存系统的容量已经达到上限,无法容纳下一个需要缓存的数据时,将新的需要缓存的数据Mn的缓存价值Vn与数据Ms的缓存价值Vs比较,若Vn-Vs≤ε,ε为预设的阈值,则不需要进行缓存替换;若Vn-Vs>ε,则跳转至步骤d5;
步骤d5,将Vs对应的缓存数据Ms从缓存中移除,并将Vs从小根堆中移除;
步骤d6,若缓存系统的剩余容量能够容纳数据Mn,则将数据Mn存放入缓存系统并将其缓存价值也存入缓存系统;否则,重复步骤d4;
步骤d2中,通过如下公式计算每个潜在的需要缓存的数据Mi的缓存价值Vi:
Vi=(ATi*ACi-UCi*UTi)/Si (1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811441737.1A CN109710668B (zh) | 2018-11-29 | 2018-11-29 | 一种多源异构数据访问中间件构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811441737.1A CN109710668B (zh) | 2018-11-29 | 2018-11-29 | 一种多源异构数据访问中间件构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710668A CN109710668A (zh) | 2019-05-03 |
CN109710668B true CN109710668B (zh) | 2021-05-04 |
Family
ID=66255225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811441737.1A Active CN109710668B (zh) | 2018-11-29 | 2018-11-29 | 一种多源异构数据访问中间件构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710668B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110263277B (zh) * | 2019-06-18 | 2021-11-16 | 广州虎牙科技有限公司 | 页面数据的显示方法、更新方法、装置、设备及存储介质 |
CN110688397B (zh) * | 2019-07-30 | 2022-05-17 | 民生科技有限责任公司 | 一种基于sql的分布式数据统一访问系统及方法 |
CN111414403B (zh) * | 2020-03-20 | 2023-04-14 | 腾讯科技(深圳)有限公司 | 数据访问方法和装置、数据存储方法和装置 |
CN112528278A (zh) * | 2020-12-07 | 2021-03-19 | 天博电子信息科技有限公司 | 一种基于中间件缓存机制的网络数据存储及访问方法 |
CN113918634A (zh) * | 2021-10-15 | 2022-01-11 | 国家电网有限公司大数据中心 | 一种用于数据交互的数据适配方法、适配器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7412538B1 (en) * | 1999-03-30 | 2008-08-12 | Sony Corporation | Request event manager and event lists for home and office systems and networks |
CN101814077A (zh) * | 2009-12-04 | 2010-08-25 | 四川川大智胜软件股份有限公司 | 一种基于oci 9的数据库访问中间件 |
CN105260470A (zh) * | 2015-10-19 | 2016-01-20 | 江南大学 | 一种基于农产品溯源信息的数据集成平台 |
US9552389B2 (en) * | 2008-07-09 | 2017-01-24 | International Business Machines Corporation | Apparatus and method of semantic service correlation system |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9467294B2 (en) * | 2013-02-01 | 2016-10-11 | Symbolic Io Corporation | Methods and systems for storing and retrieving data |
DE102013110571A1 (de) * | 2013-09-24 | 2015-03-26 | Iqser Ip Ag | Automatische Datenharmonisierung |
CN107463509B (zh) * | 2016-06-05 | 2020-12-15 | 华为技术有限公司 | 缓存管理方法、缓存控制器以及计算机系统 |
CN108183867B (zh) * | 2017-12-25 | 2021-08-10 | 重庆邮电大学 | 信息中心网络节点缓存替换方法 |
-
2018
- 2018-11-29 CN CN201811441737.1A patent/CN109710668B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7412538B1 (en) * | 1999-03-30 | 2008-08-12 | Sony Corporation | Request event manager and event lists for home and office systems and networks |
US9552389B2 (en) * | 2008-07-09 | 2017-01-24 | International Business Machines Corporation | Apparatus and method of semantic service correlation system |
CN101814077A (zh) * | 2009-12-04 | 2010-08-25 | 四川川大智胜软件股份有限公司 | 一种基于oci 9的数据库访问中间件 |
CN105260470A (zh) * | 2015-10-19 | 2016-01-20 | 江南大学 | 一种基于农产品溯源信息的数据集成平台 |
Non-Patent Citations (4)
Title |
---|
基于XML的多源异构数据集成系统的研究与实现;余乐清;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130415;I138-829 * |
大数据处理技术与系统研究;顾荣;《中国博士学位论文全文数据库信息科技辑》;20170315;I138-17 * |
面向网络GIS的最小价值空间数据缓存替换算法研究;涂振发;《华中师范大学学报(自然科学版)》;20120430;第230-234页 * |
顾荣.大数据处理技术与系统研究.《中国博士学位论文全文数据库信息科技辑》.2017,I138-17. * |
Also Published As
Publication number | Publication date |
---|---|
CN109710668A (zh) | 2019-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109710668B (zh) | 一种多源异构数据访问中间件构建方法 | |
US8380702B2 (en) | Loading an index with minimal effect on availability of applications using the corresponding table | |
CN107038222B (zh) | 数据库缓存实现方法及其系统 | |
US20070250517A1 (en) | Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries | |
US11645281B1 (en) | Caching query plans in database systems | |
US11537613B1 (en) | Merge small file consolidation | |
US11928108B2 (en) | Object dependency status tracking in a cloud system | |
US11372679B1 (en) | Providing resources using predicted size values | |
CN111752945B (zh) | 一种基于容器和层次模型的时序数据库数据交互方法和系统 | |
US10747773B2 (en) | Database management system, computer, and database management method | |
CN115269631A (zh) | 数据查询方法、数据查询系统、设备及存储介质 | |
Cao et al. | Is-hbase: An in-storage computing optimized hbase with i/o offloading and self-adaptive caching in compute-storage disaggregated infrastructure | |
US20220342888A1 (en) | Object tagging | |
CN110096515A (zh) | 一种基于三元组的rdf数据管理方法、装置及存储介质 | |
US8200673B2 (en) | System and method for on-demand indexing | |
Shen et al. | Bridging the Gap between Relational {OLTP} and Graph-based {OLAP} | |
Koliopoulos et al. | Towards automatic memory tuning for in-memory big data analytics in clusters | |
US12007997B2 (en) | Metadata search via N-gram index | |
US20230237043A1 (en) | Accelerating change data capture determination using row bitsets | |
CN113568930A (zh) | 一种分布式内存数据查询优化的方法和设备 | |
US11055266B2 (en) | Efficient key data store entry traversal and result generation | |
US11734301B1 (en) | Selective table replication to enable stream replication | |
US11995080B1 (en) | Runtime join pruning to improve join performance for database tables | |
US11593306B1 (en) | File defragmentation service | |
US20230033592A1 (en) | Information processing apparatus, method and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |