面向多应用的数据存储系统和数据调用方法与流程

文档序号:11774797阅读:223来源:国知局
面向多应用的数据存储系统和数据调用方法与流程

本发明涉及计算机领域,尤其涉及一种面向多应用的数据存储系统和数据调用方法。



背景技术:

企业级信息正在以爆炸式的速度增长,同时以其独特的、无法忽视的重要性改变着企业的生存状态和竞争力。在企业的管理信息系统(managementinformationsystem,mis)网络环境中,数据的存储和调用每时每刻都在发生,并且数据量随着企业规模的扩大和企业下用户人员的增多呈几何式增长。

管理信息系统的数据被保存在企业的数据库中,当用户使用某些应用需要调用这些数据的时候,应用会向数据库请求导出/写入这些数据。但是,在用户端中央处理器(centralprocessingunit,cpu)存取数据的速度非常的快,一秒钟能够存取、处理超过十亿条的指令和数据,而数据库的导出/写入速度就慢很多。因此,以应用调用数据的情况为例,目前常用方法是对数据库的数据调用构架缓存,将数据库中被应用访问频繁的数据全部都复制到缓存中,使得在应用调用数据时,可以不经常到数据库中去取数据,而是到缓存中去取就行了,这样速度可以快很多。

但是,通常情况下,管理信息系统中企业下用户的数据量是很大的,每个用户使用的应用也是非常多的,这就导致数据库中被频繁访问数据的数据量是巨大的。特别是当管理信息系统中增加应用时,会直接导致需要缓存的数据大量增加,在这种情况下,现有管理信息系统的数据存储机制和数据存储系统的架构,已经无法满足企业用户对于数据调用快速有效的需求。



技术实现要素:

本发明实施例提供了一种面向多应用的数据存储系统和数据调用方法,能够基于不同应用,对数据进行独立缓存调用,并对访问频率不同等级的数据进行分级缓存,从而有效提高数据调用的速度,提升管理信息系统的工作效率。

第一方面,本发明实施例提供了一种面向多应用的数据存储系统,所述系统包括:

元数据库,用于存储系统的元数据;

多个缓存模块,每个缓存模块面向一个应用,每个所述缓存模块至少包括一级缓存单元和二级缓存单元;所述缓存模块用于,根据规则将存入或导出所述元数据库中的元数据在所述一级缓存单元或二级缓存单元中存储为缓存数据;

数据交换引擎,用于根据应用的数据请求指令,从一级缓存单元或二级缓存单元中调用所需元数据的缓存数据;或者将应用产生的数据发送给所述应用对应的所述缓存模块,以通过所述缓存模块将所述数据以元数据形式存储到所述元数据库中;

其中,所述数据交换引擎根据应用的数据请求指令,向与所述应用相对应的缓存模块发送元数据调用请求;所述缓存模块根据所述元数据调用请求,在所述缓存模块的一级缓存单元中查询所需元数据的缓存数据;当所述一级缓存单元中存在所需元数据的缓存数据时,将所述所需元数据的缓存数据通过所述数据交换引擎返回给所述应用;当所述一级缓存单元中没有所需元数据的缓存数据时,在所述缓存模块的二级缓存单元中查询所需元数据的缓存数据,并将在所述二级缓存单元中存储的所需元数据的缓存数据通过数据交换引擎返回给所述应用。

优选的,所述规则包括元数据的调用频率;

所述一级缓存单元具体用于,对调用频率超过第一阈值的元数据进行临时存储。

进一步优选的,所述二级缓存单元具体用于,对调用频率超过第二阈值且未超过第一阈值的元数据进行存储。

进一步优选的,所述一级缓存单元和二级缓存单元还用于,对用于记录所述应用之间的关系的关系型数据进行存储。

优选的,所述数据存储系统为异构数据存储系统。

第二方面,本发明实施例提供了一种数据存储系统的数据调用方法,所述方法包括:

数据交换引擎根据应用的数据请求指令,向与所述应用相对应的缓存模块发送元数据调用请求;

所述缓存模块根据所述元数据调用请求,在所述缓存模块的一级缓存单元中查询所需元数据的缓存数据;

当所述一级缓存单元中存在所需元数据的缓存数据时,将所述所需元数据的缓存数据通过所述数据交换引擎返回给所述应用;

当所述一级缓存单元中没有所需元数据的缓存数据时,在所述缓存模块的二级缓存单元中查询所需元数据的缓存数据,并将在所述二级缓存单元中存储的所需元数据的缓存数据通过数据交换引擎返回给所述应用。

优选的,当所述二级缓存单元中没有所需元数据的缓存数据时,所述方法还包括:

所述二级缓存单元根据所述数据调用请求,从元数据库中获取所需元数据,存储为缓存数据;

将所述缓存数据通过数据交换引擎返回给所述应用。

优选的,所述方法还包括:

所述缓存模块根据所述元数据数据调用请求,将调用频率超过第一阈值的元数据缓存在第一缓存单元中,并且,将调用频率超过第二阈值且未超过第一阈值的元数据缓存在第二缓存单元中。

本发明提出的数据存储系统,对于元数据库中数据的调用采用多级缓存机制,通过架构面向每个应用支持多级缓存机制的缓存模块,对访问频率不同等级的数据进行分级缓存,使得最频繁被访问的数据能够以最快速度被应用获取,较频繁及不太频繁被访问的数据能够以较快速度被应用获取。同时采用基于不同应用对数据进行独立缓存下的调用的系统架构,使得在对系统功能进行扩展增加应用数量时,也不会影响到每个应用的数据请求速度。本发明的数据存储系统,能够有效提高数据调用的速度,提升管理信息系统的工作效率。

附图说明

图1为本发明实施例一提供的面向多应用的数据存储系统的示意图;

图2为本发明实施例二提供的基于数据存储系统的数据存储方法流程图;

图3为本发明实施例三提供的基于数据存储系统的数据调用方法流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。

下面以图1为例详细说明本发明实施例提供的面向多应用的数据存储系统的系统结构,图1为本发明实施例提供的数据存储系统示意图。

如图1所示,本实施例的数据存储系统包括:元数据库10,多个缓存模块(本实施例中以缓存模块20-1、缓存模块20-2、缓存模块20-3为例进行说明),和数据交换引擎30。

元数据库10用于存储系统的元数据;

缓存模块,每个缓存模块面向一个应用(如缓存模块20-1面向应用1、缓存模块20-2面向应用2、缓存模块20-3面向引用3),每个缓存模块都至少包括一级缓存单元201和二级缓存单元202;缓存模块用于根据规则将存入或导出所述元数据库10中的元数据,在一级缓存单元201或二级缓存单元202中存储为缓存数据;

其中,缓存数据在一级缓存单元201和二级缓存单元202的存储可以根据一些预设的规则进行。如:可以根据元数据的调用频率来规定哪些缓存数据存储在一级缓存单元201,哪些缓存数据存储在二级缓存单元202。

数据交换引擎30,用于根据应用的数据请求指令,从与应用相对应的缓存模块(如应用1对应缓存模块20-1)的一级缓存单元201或二级缓存单元202中调用所需元数据的缓存数据;或者将应用产生的数据发送给应用对应的缓存模块,通过该缓存模块将数据以元数据形式存储到元数据库10中。

具体的,当应用1通过数据交换引擎30请求调用数据时,首先会从缓存模块20-1的一级缓存单元201中查找是否存在所需数据,如果找到,就读取并返回给应用1,如果没有找到,就从二级缓存单元202中查找是否存在所需数据;如果找到,就读取并返回给应用1,如果还没有找到,就由二级缓存单元202从元数据库10中调用相应数据缓存到二级缓存单元202中,并返回给应用1。之后,该数据会一直缓存在二级缓存单元202中,今后应用1再对这个数据进行调用的时候,就可以从二级缓存单元202中直接调用得到,不必再从元数据库中读取。这样的读取机制使应用从缓存调用的命中率非常高,也就是说应用调用的数据大部分都在缓存中,只有少部分需要从数据库中读取。这大大节省了应用请求数据的时间。

当二级缓存单元202中的某些缓存数据多次被调用时,这些缓存数据将会由二级缓存单元202转为被缓存到一级缓存单元201中。可以设定阈值来确定哪些缓存数据被存储到一级缓存单元201中。这个阈值可以是数据被调用的次数,例如调用次数达到8次;也可以是全部缓存数据中被调用频率的百分数排序,例如调用频率在前10%。

随着时间的变化,被访问最频繁的数据不是一成不变的。也就是说,刚才还不频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,现在又不频繁了,所以一级缓存单元201中的数据会按照一定的规则来进行动态更新,这样才能保证一级缓存单元201中的数据是被访问最频繁的。

除了对数据进行存储之外,一级缓存单元201和二级缓存单元202还用于存储记录应用之间的关系的关系型数据。比如,某些缓存数据可以被应用1调用,也可以被应用2调用,当应用1修改该数据时,应用2再进行调用的时候,需要调用的是修改后的数据。因此可以说,这个数据在应用1和应用2之间存在关联,不同应用之间的数据存在各种关系。用来记录和描述应用之间关系的数据,即为本实施例中所述的关系型数据。

关系型数据中的部分或大部分,可以存储在一级缓存单元201中,例如50%-90%的关系型数据都存储在一级缓存单元201中,其他关系型数据,例如不常用的关系型数据,可以存储在二级缓存单元202中。

因为缓存模块的设置是与应用相匹配的,每个应用的数据调用和存储都是使用独立的缓存模块,因此,在一个租户下的多个用户使用不同应用时,这些应用的数据调用或存储可以并行进行,互不干扰,有效提高数据调用和存储的速度。而不同的缓存模块又是基于同一个元数据库进行数据的读取和存储,因此不同应用获取数据的数据源都是相同的,不会造成数据混乱。由此就保证了这种数据存储系统的快速和稳定。

如果不同应用是基于不同编程语言的,那么这些应用的数据结构可能是不一致的。在本系统中,应用通过数据交换引擎存储的数据以系统的元数据的形式进行离散存储。即在存储前,将不同应用的数据处理为符合数据字典规定的元数据,再进行存储。当读取时,也是先获取元数据,再通过数据处理转换为应用可识别数据结构的数据。因此,本发明的面向多应用的数据存储系统,可以支持多应用的异构数据的存储。

相应的,本发明实施例还提供了基于上述所述数据存储系统的数据存储方法和数据调用方法。

图2为本发明实施例提供的基于数据存储系统的数据存储方法流程图。下面以图2并结合上述图1,首先对数据存储方法进行说明。

本发明的数据存储方法包括如下步骤:

步骤210,数据交换引擎将来自应用的写入数据发送给缓存模块;

具体的,写入数据的数据结构是基于该应用,基于不同编程语言的应用的数据结构可能是不一致的。在将应用获得或生成的写入数据发送给缓存模块的过程中,需要先对这些写入数据进行编译,将他们转换为字段集合。这些字段集合中的每个字段都具有字段属性,字段属性包括字段来自应用的应用属性信息以及其他信息。例如写入数据为“张某,30岁”,那么这个字段集合中包括有“张某”、“30”、“岁”这三个字段。其中“张某”为人名,它的字段属性里面就包括有说明这个字段记录的是人名的属性;可能写入数据是在应用的某个表项内的,比如是人事管理的表项下的a部门的人员清单,那么“张某”这个字段属性中还包括有说明这个字段记录的人名是属于a部门的属性。当然,这个字段属性中,还包括有说明这个字段是由哪个应用写入(可读写)或者可以被哪个应用调用(只读)的属性。

步骤220,将所述字段集合进行字段拆分,根据规则在缓存模块的一级缓存单元或者二级缓存单元中存储为缓存数据;

具体的,这里的规则,是指前述实施例所述的规则,如根据数据访问的频繁程度设定阈值来确定哪些缓存数据存储在一级缓存单元哪些存储在二级缓存单元。如果“张某,30岁”这个数据是应用基于已有数据进行修改的,比如之前存储的数据是“张某,29岁”,那么修改后的字段集合可以在之前存储的缓存单元内存储。例如之前的数据是在一级缓存单元内存储的,那么将这个修改后的字段集合拆分为“张某”、“30”、“岁”可以依然记录在一级缓存单元中。如果“张某,30岁”这个数据是新增的,之前没有在一级缓存单元和二级缓存单元内存储过的,那么将这个字段集合拆分为“张某”、“30”、“岁”后先记录在二级缓存单元中。

步骤230,将所述缓存数据导入元数据库中,存储为元数据。

具体的,元数据库包括元数据字典,元数据字典用于定义系统中的各类元数据,是元数据描述的集合。数据字典中的元数据可以包括:数字、用于描述数字含义的数据等等。在对缓存数据导入元数据库进行存储的时候,需要确定缓存数据包括的拆分后的每一个字段是否符合元数据字典的规定。

仍以“张某,30岁”为例,在缓存单元中已经拆分成字段“张某”、“30”、“岁”。假设这些字段都符合元数据字典的规定,那么这三个字段都会被存入元数据字典中,同时,也记录了这些元数据的属性。比如存入的“张某”,可以记录有其所属部门等属性。

如果某个字段不符合元数据字典的规定,那么就需要根据预设的映射关系先对这个字段进行符合化处理,然后再导入元数据库进行存储了。比如在元数据字典中,规定属性为记录年龄的数字的元数据存储为保留到小数点后一位。那么在上述的字段“30”进行存储时,就会根据元数据字典的定义,将字段处理为“30.0”之后再进行存储。

本发明实施例提供的基于面向多应用的数据存储系统的数据存储方法,能够基于不同应用,对数据进行独立缓存,并对访问频率不同等级的数据进行分级缓存,从而有效提高数据存储的速度,提升管理信息系统的工作效率。

图3为本发明实施例提供的基于数据存储系统的数据调用方法流程图。下面以图3并结合上述图1,对数据调用方法进行说明。

本发明的数据调用方法包括如下步骤:

步骤310,数据交换引擎根据应用的数据请求指令,向与所述应用相对应的缓存模块发送元数据调用请求;

具体的,当一个应用需要对数据进行数据调用时,首先会通过数据交换引擎发送数据请求指令。数据请求指令中携带有所需被请求数据的属性、数据关系等信息等。

在同租户下不同用户使用不同应用同时请求调用数据时,每个应用都通过数据交换引擎,从与该应用相应的缓存模块中进行数据调用,相互之间可以并行,互不干扰。

步骤320,所述缓存模块根据所述元数据调用请求,在所述缓存模块的一级缓存单元中查询所需元数据的缓存数据;

具体的,缓存模块在接收到数据请求指令后,可以数据请求指令携带的数据的属性、数据关系等信息,首先在缓存模块中查找是否有相应数据。

在本发明的数据存储系统中,缓存模块中的数据存储是根据访问频率(或也可能是其他规则)进行分级存储的,缓存模块至少被划分为两级缓存,即上述实施例中所述的一级缓存单元和二级缓存单元。一级缓存单元中存储访问频率较高的数据,二级缓存单元存储除前述访问频率较高的数据之外的其他访问频率较低的数据。

步骤330,当所述一级缓存单元中存在所需元数据的缓存数据时,将所述所需元数据的缓存数据通过所述数据交换引擎返回给所述应用;

具体的,如果在一级缓存单元中查找到了所需数据时,就直接通过数据交换引擎调用缓存中的该数据,返回给应用。

步骤340,当所述一级缓存单元中没有所需元数据的缓存数据时,在所述缓存模块的二级缓存单元中查询所需元数据的缓存数据,并将在所述二级缓存单元中存储的所需元数据的缓存数据通过数据交换引擎返回给所述应用。

具体的,如果一级缓存单元中没有所需数据,则继续从二级缓存单元中查找,找到之后通过数据交换引擎调用缓存中的该数据,返回给应用。

通常情况下,所需调用数据应该在二级缓存单元中是能够找到的,但是也可能有特殊情况,如缓存模块物理关闭或者故障,其中数据全部丢失。这种情况下,数据调用时无法在缓存模块中找到的。在缓存模块中查找数据失败之后,所述二级缓存单元根据数据调用请求,从元数据库中获取所需元数据,并且在二级缓存单元中存储为缓存数据;并且将该缓存数据通过数据交换引擎返回给所述应用。

本发明实施例提供的基于面向多应用的数据存储系统的数据调用方法,能够基于不同应用,对数据进行独立调用,基于访问频率不同的数据分级缓存进行分级调用,从而有效提高数据访问的速度,提升管理信息系统的工作效率。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明实施例的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明实施例的保护范围,凡在本发明实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1