数据读写方法及装置
技术领域
本发明涉及数据处理领域,特别是涉及一种数据读写方法及装置。
背景技术
按照访问接口、数据模型和性能的不同,目前主要的数据读写设备可分为两类:关系数据库与高速缓存。
关系数据库,以下简称数据库。是建立在关系数据库模型基础上的数据库,可借助于集合代数等概念和方法来处理该数据库中的数据。一个数据库通常包含预先定义的一组表,每个表代表一类数据。数据库的优点是功能强大接口丰富,缺点是随着数据量的增加和用户数的增多,会导致数据库的性能变得很低,从而使得数据库成为整个应用系统的瓶颈。
高速缓存,以下简称缓存。是指基于key-value(键值对)的分布式存储方案。目前主流缓存有memcacheDB、Tokyo、Redis等。缓存的优点是查询速度快、存放数据量大以及支持高并发。通常为了避免数据库成为整个应用系统的瓶颈,一般都会使用缓存保存数据库中的结果,应用系统通过访问缓存,减轻直接访问数据库而对数据库造成的读写压力和计算压力,改善数据访问性能,提高应用系统的处理能力。但缓存的缺点是其数据结构比较简单,只能支持简单的键值对的数据模型,无法支持带有复杂条件的数据操作。
同时根据并发量、延迟以及请求复杂性的不同,数据读写设备的数据读写请求也可分为两类:快速数据请求以及慢速数据请求。
快速数据请求,此类请求基本是查询操作,查询条件比较简单,根据互联网的海量应用尤其是社交应用的海量数据生成。此类请求一般具有高并发低延迟的请求特点,因此此类请求数据一般存储于缓存中。
慢速数据请求,此类请求通常是带有复杂条件的查询操作,或者增加、删除、修改操作,此类请求并发量不会很高,对延迟的要求也不是非常严格。因此此类请求的数据通常存储于数据库中,以利用数据库强大丰富的SQL(结构化查询语言,Structured QueryLanguage)接口满足各种复杂条件的数据请求。
请参照图1,图1为现有的数据读写装置的结构示意图。该数据读写装置包括数据访问中间层11、缓存12以及数据库13。其中数据库13用于处理慢速数据请求,缓存12用于处理快速数据请求,外围应用系统14通过数据访问中间层11选择访问缓存12或数据库13。
但现有的数据读写装置存在以下缺点:
一、外围应用系统14通过数据访问中间层11访问数据读写装置时,需要自行区分数据请求的类型,将快速数据请求发送至缓存12,将慢速数据请求发送至数据库13。外围应用系统14的开发人员必须了解数据读写装置中数据库13和缓存12的构建情况,并根据该构建情况对各种数据请求进行区分,以将数据请求分发到相应的数据库13或缓存12中。这样导致不易对数据请求服务的质量进行控制。
二、缓存12与数据库13独立工作,之间完全没有关联。当外围应用系统14进行数据请求调整(如将部分慢速数据请求调整为快速数据请求)时,外围应用系统14的开发人员需要对待调整的数据在缓存12和数据库13之间进行数据迁移,并需要重新开发新的接口以满足调整后的数据请求。导致外围应用系统14的开发人员重复劳动,影响了外围应用系统的服务质量。
发明内容
本发明实施例的目的在于提供一种数据读写方法,以解决现有的数据读写装置及方法没有基于数据库与缓存不同特点来高效的处理各种不同类型的数据请求,使得外围应用系统接入到数据读写装置的效率较低的技术问题。
本发明实施例的目的在于还提供一种数据读写装置,以解决现有的数据读写装置及方法没有基于数据库与缓存不同特点来高效的处理各种不同类型的数据请求,使得外围应用系统接入到数据读写装置的效率较低的技术问题。
为解决上述问题,本发明提供的技术方案如下:
提供一种数据读写方法,其包括步骤:
接收外部应用系统的数据操作请求,并对所述数据操作请求进行预处理,以获取所述数据操作请求的操作类型;
根据所述数据操作请求的操作类型以及与所述数据操作请求相应的存储设备,确定所述数据操作请求的操作设备;以及
根据所述数据操作请求,使用所述数据操作请求的操作设备进行数据读操作或写操作。
还提供一种数据读写装置,其包括:
类型获取模块,用于接收外部应用系统的数据操作请求,并对所述数据操作请求进行预处理,以获取所述数据操作请求的操作类型;
操作设备确定模块,用于根据所述数据操作请求的操作类型以及与所述数据操作请求相应的存储设备,确定所述数据操作请求的操作设备;以及
读写模块,用于根据所述数据操作请求,使用所述数据操作请求的操作设备进行数据读操作或写操作。
相较于现有技术,本发明的数据读写方法及装置,本发明的数据读写方法及装置通过对数据操作请求的操作类型进行自动识别,然后根据识别结果自动确定进行数据读操作或写操作的操作设备,解决了现有的数据读写方法及装置需要外围应用系统的开发人员对操作设备进行区分,从而影响外围应用系统的服务质量以及对外围应用系统的数据请求服务的质量难以控制的技术问题。
附图说明
图1为现有的数据读写装置的结构示意图;
图2为本发明的数据读写装置所在的电子设备的工作环境结构示意图;
图3为本发明的数据读写装置的第一优选实施例的结构示意图;
图4为本发明的数据读写方法的第一优选实施例的流程图;
图5A为本发明的数据读写装置的第二优选实施例的结构示意图;
图5B为本发明的数据读写装置的第二优选实施例的格式转换单元的结构示意图;
图6为本发明的数据读写方法的第二优选实施例的流程图;
图7为本发明的数据读写方法及装置的具体实施例的流程图。
具体实施方式
请参照图式,其中相同的组件符号代表相同的组件,本发明的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本发明具体实施例,其不应被视为限制本发明未在此详述的其它具体实施例。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行之作业的步骤及符号来说明,除非另有述明。因此,其将可了解到这些步骤及操作,其中有数次提到为由计算机执行,包括了由代表了以一结构化型式中的数据之电子信号的计算机处理单元所操纵。此操纵转换该数据或将其维持在该计算机之内存系统中的位置处,其可重新配置或另外以本领域技术人员所熟知的方式来改变该计算机之运作。该数据所维持的数据结构为该内存之实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域技术人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
如本申请所使用的术语“组件”、“模块”、“系统”、“接口”、“进程”等等一般地旨在指计算机相关实体:硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是运行在处理器上的进程、处理器、对象、可执行应用、执行的线程、程序和/或计算机。通过图示,运行在控制器上的应用和该控制器二者都可以是组件。一个或多个组件可以有在于执行的进程和/或线程内,并且组件可以位于一个计算机上和/或分布在两个或更多计算机之间。
而且,要求保护的主题可以被实现为使用标准编程和/或工程技术产生软件、固件、硬件或其任意组合以控制计算机实现所公开的主题的方法、装置或制造品。本文所使用的术语“制造品”旨在包含可从任意计算机可读设备、载体或介质访问的计算机程序。当然,本领域技术人员将认识到可以对该配置进行许多修改,而不脱离要求保护的主题的范围或精神。
图2和随后的讨论提供了对实现本发明所述的数据读写装置所在的电子设备的工作环境的简短、概括的描述。图2的工作环境仅仅是适当的工作环境的一个实例并且不旨在建议关于工作环境的用途或功能的范围的任何限制。实例电子设备212包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。
尽管没有要求,但是在“计算机可读指令”被一个或多个电子设备执行的通用背景下描述实施例。计算机可读指令可以经由计算机可读介质来分布(下文讨论)。计算机可读指令可以实现为程序模块,比如执行特定任务或实现特定抽象数据类型的功能、对象、应用编程接口(API)、数据结构等等。典型地,该计算机可读指令的功能可以在各种环境中随意组合或分布。
图2图示了包括本发明的数据读写方法的一个或多个实施例的电子设备212的实例。在一种配置中,电子设备212包括至少一个处理单元216和存储器218。根据电子设备的确切配置和类型,存储器218可以是易失性的(比如RAM)、非易失性的(比如ROM、闪存等)或二者的某种组合。该配置在图2中由虚线214图示。
在其他实施例中,电子设备212可以包括附加特征和/或功能。例如,设备212还可以包括附加的存储装置(例如可移除和/或不可移除的),其包括但不限于磁存储装置、光存储装置等等。这种附加存储装置在图2中由存储装置220图示。在一个实施例中,用于实现本文所提供的一个或多个实施例的计算机可读指令可以在存储装置220中。存储装置220还可以存储用于实现操作系统、应用程序等的其他计算机可读指令。计算机可读指令可以载入存储器218中由例如处理单元216执行。
本文所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器218和存储装置220是计算机存储介质的实例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储期望信息并可以被电子设备212访问的任何其他介质。任意这样的计算机存储介质可以是电子设备212的一部分。
电子设备212还可以包括允许电子设备212与其他设备通信的通信连接226。通信连接226可以包括但不限于调制解调器、网络接口卡(NIC)、集成网络接口、射频发射器/接收器、红外端口、USB连接或用于将电子设备212连接到其他电子设备的其他接口。通信连接226可以包括有线连接或无线连接。通信连接226可以发射和/或接收通信媒体。
术语“计算机可读介质”可以包括通信介质。通信介质典型地包含计算机可读指令或诸如载波或其他传输机构之类的“己调制数据信号”中的其他数据,并且包括任何信息递送介质。术语“己调制数据信号”可以包括这样的信号:该信号特性中的一个或多个按照将信息编码到信号中的方式来设置或改变。
电子设备212可以包括输入设备224,比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备和/或任何其他输入设备。设备212中也可以包括输出设备222,比如一个或多个显示器、扬声器、打印机和/或任意其他输出设备。输入设备224和输出设备222可以经由有线连接、无线连接或其任意组合连接到电子设备212。在一个实施例中,来自另一个电子设备的输入设备或输出设备可以被用作电子设备212的输入设备224或输出设备222。
电子设备212的组件可以通过各种互连(比如总线)连接。这样的互连可以包括外围组件互连(PCI)(比如快速PCI)、通用串行总线(USB)、火线(IEEE1394)、光学总线结构等等。在另一个实施例中,电子设备212的组件可以通过网络互连。例如,存储器218可以由位于不同物理位置中的、通过网络互连的多个物理存储器单元构成。
本领域技术人员将认识到,用于存储计算机可读指令的存储设备可以跨越网络分布。例如,可经由网络228访问的电子设备230可以存储用于实现本发明所提供的一个或多个实施例的计算机可读指令。电子设备212可以访问电子设备230并且下载计算机可读指令的一部分或所有以供执行。可替代地,电子设备212可以按需要下载多条计算机可读指令,或者一些指令可以在电子设备212处执行并且一些指令可以在电子设备230处执行。
本文提供了实施例的各种操作。在一个实施例中,所述的一个或多个操作可以构成一个或多个计算机可读介质上存储的计算机可读指令,其在被电子设备执行时将使得计算设备执行所述操作。描述一些或所有操作的顺序不应当被解释为暗示这些操作必需是顺序相关的。本领域技术人员将理解具有本说明书的益处的可替代的排序。而且,应当理解,不是所有操作必需在本文所提供的每个实施例中存在。
而且,本文所使用的词语“优选的”意指用作实例、示例或例证。奉文描述为“优选的”任意方面或设计不必被解释为比其他方面或设计更有利。相反,词语“优选的”的使用旨在以具体方式提出概念。如本申请中所使用的术语“或”旨在意指包含的“或”而非排除的“或”。即,除非另外指定或从上下文中清楚,“X使用A或B”意指自然包括排列的任意一个。即,如果X使用A;X使用B;或X使用A和B二者,则“X使用A或B”在前述任一示例中得到满足。
而且,尽管已经相对于一个或多个实现方式示出并描述了本公开,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本公开包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件(例如元件、资源等)执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本公开的示范性实现方式中的功能的公开结构不等同。此外,尽管本公开的特定特征已经相对于若干实现方式中的仅一个被公开,但是这种特征可以与如可以对给定或特定应用而言是期望和有利的其他实现方式的一个或多个其他特征组合。而且,就术语“包括”、“具有”、“含有”或其变形被用在具体实施方式或权利要求中而言,这样的术语旨在以与术语“包含”相似的方式包括。
请参照图3,图3为本发明的数据读写装置的第一优选实施例的结构示意图。本优选实施例的数据读写装置30可设置在上述的电子设备212中,其包括类型获取模块31、操作设备确定模块32以及读写模块33。类型获取模块31用于接收外部应用系统34的数据操作请求,并对数据操作请求进行预处理,以获取数据操作请求的操作类型;操作设备确定模块32用于根据数据操作请求的操作类型以及与数据操作请求相应的存储设备,确定数据操作请求的操作设备35;读写模块33用于根据数据操作请求,使用数据操作请求的操作设备35进行数据读操作或写操作。
本优选实施例的数据读取装置30使用时,首先类型获取模块31接收外部应用系统34的数据操作请求,该数据操作请求使用结构化查询语言(SQL,Structured QueryLanguage)生成,因此该数据操作请求与具体的进行数据读操作或写操作的操作设备35无关(即外部应用系统34以及操作设备35不需要对该数据操作请求进行区分)。随后类型获取模块31对该数据操作请求进行预处理,以获取数据操作请求的操作类型,数据操作请求的操作类型包括查询操作、增加操作、删除操作以及修改操作。这里的预处理是指对数据操作请求中的结构化查询语言进行解析,从而获知数据操作请求的操作类型。
然后操作设备确定模块32根据数据操作请求的操作类型以及与数据操作请求相应的存储设备,确定数据操作请求的操作设备35。这里存储设备包括数据操作请求的操作设备35,数据操作请求的操作设备35必须为保存数据操作请求的读操作或写操作数据的操作设备35。这里的数据操作请求的操作设备35包括一般用于处理慢速数据请求的数据库以及一般用于处理快速数据请求的缓存,数据库包括缓存中的所有数据。因此确定操作设备35时,如数据操作请求的操作类型为查询操作(该操作请求为快速数据请求),且数据操作请求的读操作或写操作数据保存在数据库和缓存中,则操作设备确定模块32确定数据操作请求的操作设备35为缓存。如数据操作请求的操作类型为查询操作,但数据操作请求的读操作或写操作数据仅保存在数据库中,则操作设备确定模块32确定数据操作请求的操作设备35为数据库。如数据操作请求的操作类型为增加、删除或修改操作(该操作请求为慢速数据请求),则无论该数据操作请求的读操作或写操作是否保存在缓存中,操作设备确定模块32确定数据操作请求的操作设备35为数据库。
最后,读写模块33根据数据操作请求,使用操作设备确定模块32确定的操作设备35进行数据读操作或写操作,即在相应的数据库或缓存中进行数据读操作或写操作。
这样即完成了本优选实施例的数据读写装置30的数据读写过程。
本优选实施例的数据读写装置通过对数据操作请求的操作类型进行自动识别,然后根据识别结果自动确定进行数据读操作或写操作的操作设备,保证了外围应用系统的服务质量。
请参照图3和图4,图4为本发明的数据读写方法的第一优选实施例的流程图。本优选实施例的数据读写方法通过上述的数据读写装置30实施,其包括:
步骤S401,接收外部应用系统的数据操作请求,并对数据操作请求进行预处理,以获取数据操作请求的操作类型;
步骤S402,根据数据操作请求的操作类型以及与数据操作请求相应的存储设备,确定数据操作请求的操作设备;
步骤S403,根据数据操作请求,使用数据操作请求的操作设备进行数据读操作或写操作;
本优选实施例的数据读写方法结束于步骤S403。
下面详细说明本优选实施例的数据读写方法的各步骤的具体流程。
在步骤S401中,类型获取模块31接收外部应用系统34的数据操作请求,该数据操作请求使用结构化查询语言(SQL,Structured Query Language)生成,因此该数据操作请求与具体的进行数据读操作或写操作的操作设备35无关(即外部应用系统34以及操作设备35不需要对该数据操作请求进行区分。随后类型获取模块31对该数据操作请求进行预处理,以获取数据操作请求的操作类型,数据操作请求的操作类型包括查询操作、增加操作、删除操作以及修改操作。这里的预处理是指对数据操作请求中的结构化查询语言进行解析,从而获知数据操作请求的操作类型。随后转到步骤S402。
在步骤S402中,操作设备确定模块32根据数据操作请求的操作类型以及与数据操作请求相应的存储设备,确定数据操作请求的操作设备35。这里存储设备包括数据操作请求的操作设备35,数据操作请求的操作设备35必须为保存数据操作请求的读操作或写操作数据的操作设备35。这里的数据操作请求的操作设备35包括一般用于处理慢速数据请求的数据库以及一般用于处理快速数据请求的缓存,数据库包括缓存中的所有数据。因此确定操作设备35时,如数据操作请求的操作类型为查询操作(该操作请求为快速数据请求),且数据操作请求的读操作或写操作数据保存在数据库和缓存中,则操作设备确定模块32确定数据操作请求的操作设备35为缓存。如数据操作请求的操作类型为查询操作,但数据操作请求的读操作或写操作数据仅保存在数据库中,则操作设备确定模块32确定数据操作请求的操作设备35为数据库。如数据操作请求的操作类型为增加、删除或修改操作(该操作请求为慢速数据请求),则无论该数据操作请求的读操作或写操作是否保存在缓存中,操作设备确定模块32确定数据操作请求的操作设备35为数据库。随后转到步骤S403。
在步骤S403中,读写模块33根据数据操作请求,使用操作设备确定模块32确定的操作设备35进行数据读操作或写操作,即在相应的数据库或缓存中进行数据读操作或写操作。
这样即完成了本优选实施例的数据读写方法的数据读写过程。
本优选实施例的数据读写方法通过对数据操作请求的操作类型进行自动识别,然后根据识别结果自动确定进行数据读操作或写操作的操作设备,保证了外围应用系统的服务质量。
请参照图5A和图5B,图5A为本发明的数据读写装置的第二优选实施例的结构示意图,图5B为本发明的数据读写装置的第二优选实施例的格式转换单元的结构示意图。本优选实施例的数据读写装置50可设置在上述的电子设备212中,其包括类型获取模块51、操作设备确定模块52、读写模块53以及同步模块56。类型获取模块51用于接收外部应用系统54的数据操作请求,并对数据操作请求进行预处理,以获取数据操作请求的操作类型;操作设备确定模块52用于根据数据操作请求的操作类型以及与数据操作请求相应的存储设备,确定数据操作请求的操作设备55;读写模块53用于根据数据操作请求,使用数据操作请求的操作设备55进行数据读操作或写操作;同步模块56用于对不同的所述操作设备55中的数据读操作或写操作的数据进行同步。
其中类型获取模块51包括语法树生成单元511、删除单元512以及类型获取单元513。语法树生成单元511用于对数据操作请求中的结构化查询语言进行解析,以生成相应的语法树;删除单元512用于根据语法树以及结构化查询语言的编写规则,删除不安全的数据操作请求;类型获取单元513用于根据语法树以及结构化查询语言的编写规则,获取数据操作请求的操作类型。其中使用结构化查询语言生成数据操作请求,数据操作请求的操作类型包括查询操作、增加操作、删除操作以及修改操作。
其中读写模块53包括格式转换单元531以及读写单元532。格式转换单元531用于根据数据操作请求的操作设备55,对数据操作请求进行格式转换;读写单元532用于根据格式转换后的数据操作请求,使用数据操作请求的操作设备55进行数据读操作或写操作。
其中格式转换单元531包括列表生成子单元5311、主键生成子单元5312以及转换子单元5313。列表生成子单元5311用于获取语法树5314的列信息,并根据语法树5314的列信息生成数据操作请求的查询列表;主键生成子单元5312用于获取语法树5314的查询条件,并根据语法树5314的查询条件生成数据操作请求的查询主键;转换子单元5313用于将数据操作请求的查询列表和数据操作请求的查询主键转换为键值对结构的数据操作请求。
本优选实施例的数据读写装置50使用时,首先类型获取模块51接收外部应用系统54的数据操作请求,该数据操作请求使用结构化查询语言(SQL,Structured QueryLanguage)生成,因此该数据操作请求与具体的进行数据读操作或写操作的操作设备55无关(即外部应用系统54以及操作设备55不需要对该数据操作请求进行区分)。随后类型获取模块51对该数据操作请求进行预处理,以获取数据操作请求的操作类型,数据操作请求的操作类型包括查询操作、增加操作、删除操作以及修改操作。
这里的预处理是指对数据操作请求中的结构化查询语言进行解析,从而获知数据操作请求的操作类型。具体为:
语法树生成单元511对数据操作请求中的结构化查询语言进行解析,以生成相应的语法树。
删除单元512根据语法树以及结构化查询语言的编写规则,删除不安全的数据操作请求,这里的不安全的数据操作请求是指该数据操作请求的语句中包括错误的内容或可能会给数据读写装置带来性能和数据安全问题的内容。如进行全表删除的结构化查询语言“DELETE*FROM表名”可能会带来数据安全问题,而跨表操作的结构化查询语言“SELETE*FROM表名1AND表名2”可能会影响装置的性能。
类型获取单元513根据语法树以及结构化查询语言的编写规则,获取数据操作请求的操作类型。这里的数据操作请求的操作类型包括查询操作、增加操作、删除操作以及修改操作。具体为:从语法树获取该数据操作请求的请求类型标识,如该请求类型标识为“SELETE”,则说明该数据操作请求的操作类型为查询操作,即该数据操作请求为快速数据请求;否则该数据操作请求的操作类型为增加操作、删除操作或修改操作,即该数据操作请求为慢速数据请求。
在类型获取模块51获取数据操作请求的操作类型后,操作设备确定模块52根据数据操作请求的操作类型以及与数据操作请求相应的存储设备,确定数据操作请求的操作设备55。这里的数据操作请求的操作设备55包括一般用于处理慢速数据请求的数据库以及一般用于处理快速数据请求的缓存,数据库包括缓存中的所有数据。因此确定操作设备55时,如数据操作请求的操作类型为查询操作(该操作请求为快速数据请求),且数据操作请求的读操作或写操作数据保存在数据库和缓存中,则操作设备确定模块52确定数据操作请求的操作设备55为缓存。如数据操作请求的操作类型为查询操作,但数据操作请求的读操作或写操作数据仅保存在数据库中,则操作设备确定模块52确定数据操作请求的操作设备55为数据库。如数据操作请求的操作类型为增加、删除或修改操作(该操作请求为慢速数据请求),则无论该数据操作请求的读操作或写操作是否保存在缓存中,操作设备确定模块52确定数据操作请求的操作设备55为数据库。
最后读写模块53根据数据操作请求,使用操作设备确定模块52确定的操作设备55进行数据读操作或写操作,即在相应的数据库或缓存中进行数据读操作或写操作。由于结构化查询语言能直接在数据库中执行,而不能直接在缓存中执行,因此如在缓存中执行数据操作请求,需要格式转换单元531对该数据操作请求进行格式转换。
具体为:如数据操作请求的操作设备55为缓存,则格式转换单元531将结构化查询语言编写的数据操作请求转换为键值对结构的数据操作请求;如数据操作请求的操作设备55为数据库,则格式转换单元531不对该数据操作请求进行格式转换。
格式转换单元531的具体转换过程为:列表生成子单元5311获取语法树5314的类信息,并根据语法树5314的列信息生成数据操作请求的查询列表;主键生成子单元5312获取语法树5314的查询条件,并根据语法树5314的查询条件生成数据操作请求的查询主键;转换子单元5313将数据操作请求的查询列表和数据操作请求的查询主键转换为键值对结构的数据操作请求。
如格式转换单元531转换成功,则使用该操作设备55(即缓存)进行数据读操作或写操作。如格式转换单元531转换失败,则表示该结构化查询语言编写的数据操作请求无法转换为键值对结构的数据操作请求,这时操作设备确定模块52将该数据操作请求的操作设备55改为数据库,即读写单元532使用数据库进行数据读操作或写操作。
优选的,读写模块53在进行读操作或写操作时,同步模块56可对不同的操作设备中的数据读操作或写操作的数据进行同步。即读写模块53在数据库中进行增加操作、删除操作或修改操作等读操作或写操作后,如缓存中具有与该读操作或写操作相应的数据,则将数据库中读操作或写操作后的数据同步到缓存中,以方便用户进一步使用缓存进行准确的读操作或写操作。
这样即完成了本优选实施例的数据读写装置50的数据读写过程。
本优选实施例的数据读写装置在第一优选实施例的基础上对数据操作请求进行筛选、对数据操作请求进行格式转换以及及时实现缓存与数据库之间的数据同步,进一步优化了数据读操作或写操作的效率。
请参照图5A、图5B和图6,图6为本发明的数据读写方法的第二优选实施例的流程图。本优选实施例的数据读写方法通过上述的数据读写装置50实施,其包括:
步骤S601,接收外部应用系统的数据操作请求,并对数据操作请求进行预处理,以获取数据操作请求的操作类型;
步骤S602,根据数据操作请求的操作类型以及与数据操作请求相应的存储设备,确定数据操作请求的操作设备;
步骤S603,根据数据操作请求,使用数据操作请求的操作设备进行数据读操作或写操作;
步骤S604,对不同的操作设备中的数据读操作或写操作的数据进行同步;
本优选实施例的数据读写方法结束于步骤S604。
下面详细说明本优选实施例的数据读写方法的各步骤的具体流程。
在步骤S601中,类型获取模块51接收外部应用系统54的数据操作请求,该数据操作请求使用结构化查询语言(SQL,Structured Query Language)生成,因此该数据操作请求与具体的进行数据读操作或写操作的操作设备55无关(即外部应用系统54以及操作设备55不需要对该数据操作请求进行区分。随后类型获取模块51对该数据操作请求进行预处理,以获取数据操作请求的操作类型,数据操作请求的操作类型包括查询操作、增加操作、删除操作以及修改操作。
这里的预处理是指对数据操作请求中的结构化查询语言进行解析,从而获知数据操作请求的操作类型。具体为:
语法树生成单元511对数据操作请求中的结构化查询语言进行解析,以生成相应的语法树。
删除单元512根据语法树以及结构化查询语言的编写规则,删除不安全的数据操作请求,这里的不安全的数据操作请求是指该数据操作请求的语句中包括错误的内容或可能会给数据读写装置带来性能和数据安全问题的内容。如进行全表删除的结构化查询语言“DELETE*FROM表名”可能会带来数据安全问题,而跨表操作的结构化查询语言“SELETE*FROM表名1AND表名2”可能会影响装置的性能。
最后类型获取单元513根据语法树以及结构化查询语言的编写规则,获取数据操作请求的操作类型。这里的数据操作请求的操作类型包括查询操作、增加操作、删除操作以及修改操作。具体为:从语法树获取该数据操作请求的请求类型标识,如该请求类型标识为“SELETE”,则说明该数据操作请求的操作类型为查询操作,即该数据操作请求为快速数据请求;否则该数据操作请求的操作类型为增加操作、删除操作或修改操作,即该数据操作请求为慢速数据请求。随后转到步骤S602。
在步骤S602中,操作设备确定模块52根据数据操作请求的操作类型以及与数据操作请求相应的存储设备,确定数据操作请求的操作设备55。这里的数据操作请求的操作设备55包括一般用于处理慢速数据请求的数据库以及一般用于处理快速数据请求的缓存,数据库包括缓存中的所有数据。因此确定操作设备55时,如数据操作请求的操作类型为查询操作(该操作请求为快速数据请求),且数据操作请求的读操作或写操作数据保存在数据库和缓存中,则操作设备确定模块52确定数据操作请求的操作设备55为缓存。如数据操作请求的操作类型为查询操作,但数据操作请求的读操作或写操作数据仅保存在数据库中,则操作设备确定模块52确定数据操作请求的操作设备55为数据库。如数据操作请求的操作类型为增加、删除或修改操作(该操作请求为慢速数据请求),则无论该数据操作请求的读操作或写操作是否保存在缓存中,操作设备确定模块52确定数据操作请求的操作设备55为数据库。随后转到步骤S603中。
在步骤S603中,读写模块53根据数据操作请求,使用操作设备确定模块52确定的操作设备55进行数据读操作或写操作,即在相应的数据库或缓存中进行数据读操作或写操作。由于结构化查询语言能直接在数据库中执行,而不能直接在缓存中执行,因此如在缓存中执行数据操作请求,需要格式转换单元531对该数据操作请求进行格式转换。
具体为:如数据操作请求的操作设备55为缓存,则格式转换单元531将结构化查询语言编写的数据操作请求转换为键值对结构的数据操作请求;如数据操作请求的操作设备55为数据库,则格式转换单元531不对该数据操作请求进行格式转换。
格式转换单元531的具体转换过程为:列表生成子单元5311获取语法树5314的类信息,并根据语法树5314的列信息生成数据操作请求的查询列表;主键生成子单元5312获取语法树5314的查询条件,并根据语法树5314的查询条件生成数据操作请求的查询主键;转换子单元5313将数据操作请求的查询列表和数据操作请求的查询主键转换为键值对结构的数据操作请求。
如格式转换单元531转换成功,则使用该操作设备55(即缓存)进行数据读操作或写操作。如格式转换单元531转换失败,则表示该结构化查询语言编写的数据操作请求无法转换为键值对结构的数据操作请求,这时操作设备确定模块52将该数据操作请求的操作设备55改为数据库,即读写单元532使用数据库进行数据读操作或写操作。随后转到步骤S604。
在步骤S604中,读写模块53在进行读操作或写操作时,同步模块56可对不同的操作设备中的数据读操作或写操作的数据进行同步。即读写模块53在数据库中进行增加操作、删除操作或修改操作等读操作或写操作后,如缓存中具有与该读操作或写操作相应的数据,则将数据库中读操作或写操作后的数据同步到缓存中,以方便用户进一步使用缓存进行准确的读操作或写操作。
这样即完成了本优选实施例的数据读写方法的数据读写过程。
本优选实施例的数据读写方法在第一优选实施例的基础上对数据操作请求进行筛选、对数据操作请求进行格式转换以及及时实现缓存与数据库之间的数据同步,进一步优化了数据读操作或写操作的效率。
下面通过图7详细说明本发明的数据读写方法及装置的工作原理。图7为本发明的数据读写方法及装置的具体实施例的流程图。
首先类型获取模块接收外部应用系统71的数据操作请求,类型获取模块的语法树生成单元72对数据操作请求中的结构化查询语言进行解析,以生成相应的语法树;类型获取模块的删除单元73根据语法树删除不安全的数据操作请求;类型获取模块的类型获取单元74获取数据操作请求的操作类型,即确定该数据操作请求的操作类型为快速数据请求(查询操作)或慢速数据请求(增加操作、删除操作以及修改操作)。
随后操作设备确定模块75根据数据操作请求的操作类型以及与数据操作请求相应的存储设备,确定数据操作请求的操作设备,即确定该数据操作请求的操作设备为缓存或数据库。操作设备确定模块75将相应的数据操作请求分别发送至缓存请求消息队列76以及数据库请求队列77。
缓存处理模块78从缓存请求队列76接收数据操作请求,并转换为实际的缓存操作,同时确定缓存处理模块78中是否已经存在与缓存710相应位置的连接,如果已经存在该连接,则直接通过该连接在缓存710中进行该数据读操作或写操作;如不存在该连接,则创建连接后在缓存710中进行该数据读操作或写操作。
数据库处理模块79从数据库请求队列77接收数据操作请求,并转换为实际的数据库操作,同时确定数据库处理模块79中是否已经与数据库711相应位置的连接,如果已经存在该连接,则直接通过该连接在数据库711中进行该数据读操作或写操作;如不存在该连接,则创建连接后在数据库711中进行该数据读操作或写操作。
如数据库711中进行了增加操作、删除操作或修改操作等读操作或写操作,且缓存710中具有与该读操作或写操作相应的数据,则同步模块712将数据库711中读操作或写操作后的数据同步到缓存710中,以方便用户进一步使用缓存710进行准确的读操作或写操作。
缓存处理模块78和数据库处理模块79处理完毕后,返回外部应用系统713。
同时超时检测模块714检测各操作和处理模块的状态,通过删除超时的操作请求、终止超时的处理、释放超时存放的结果,以保证装置的强壮型。
本发明实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。上述的各装置或系统,可以执行相应方法实施例中的方法。
综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。