掌桥专利:专业的专利平台
掌桥专利
首页

一种数据存储方法、装置及计算机设备

文献发布时间:2023-06-19 11:11:32


一种数据存储方法、装置及计算机设备

技术领域

本发明涉及数据交互领域,尤其涉及一种数据存储方法、装置及计算机设备。

背景技术

随着数据中台的概念的形成和数据仓库技术的发展,数据集成技术成为各个企业关注和研究的焦点,国内外企业和技术人员对数据仓库技术(Extract Transform Load,简称ETL)进行了大量研究,同时提出了多种多样的解决方案。ETL用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。在具体工作过程中,由于数据量庞大以及数据之间关系复杂导致数据读取时间过长,而ETL主要过程中的抽取即采集过程又是整个ETL过程的瓶颈。

传统的数据采集方式,是通过外部接口和数据库直连的形式直接对数据库进行访问。在涉及多次查询时,频繁访问数据源,最终导致数据源因为连接数量过大而对正在运转的系统造成影响。

可见,现有的单一数据库访问方案存在数据库访问过大影响程序正常运行的技术问题。

发明内容

为了解决上述技术问题,本发明提供了一种数据存储方法、装置及计算机设备,具体方案如下:

第一方面,本申请实施例提供了一种数据存储方法,所述方法包括:

接收存储指令,所述存储指令用于指示请求存储的目标数据;

判断缓存数据库中是否存储有数据;

若所述缓存数据库中没有存储数据,则从原始数据库中获取所述目标数据并存储到云端数据库;

若所述缓存数据库中存储有数据,则从所述缓存数据库和/或所述原始数据库中获取所述目标数据并存储到所述云端数据库。

根据本申请公开的一种具体实施方式,若所述缓存数据库中没有存储数据,所述方法还包括:

将所述目标数据存储到所述缓存数据库。

根据本申请公开的一种具体实施方式,从所述缓存数据库和/或所述原始数据库中获取所述目标数据并存储到所述云端数据库的步骤,包括:

判断所述缓存数据库中是否存储有全部的所述目标数据;

若所述缓存数据库中存储有全部的所述目标数据,则从所述缓存数据库中获取所述目标数据并存储到所述云端数据库;

若所述缓存数据库中未存储全部的所述目标数据,则从所述缓存数据库和所述原始数据库中获取全部的所述目标数据并存储到所述云端数据库。

根据本申请公开的一种具体实施方式,从所述缓存数据库和所述原始数据库中获取全部的所述目标数据并存储到所述云端数据库的步骤,包括:

确定所述缓存数据库内存储的所述目标数据的第一子集数据,以及所述缓存数据库内未存储的所述目标数据的第二子集数据;

将所述原始数据库内的所述第二子集数据存储到所述缓存数据库;

将所述缓存数据库中的第一子集数据和所述第二子集数据存储到所述云端数据库。

根据本申请公开的一种具体实施方式,所述方法还包括:

按照预设的检测周期或者在接收到所述存储指令时,检测所述原始数据库中是否存在改动数据;

若所述原始数据库存在改动数据,则清除所述缓存数据库中与所述改动数据对应的数据。

根据本申请公开的一种具体实施方式,获取所述目标数据并存储到所述云端数据库的步骤之后,所述方法还包括:

清除所述缓存数据库中存储的数据。

根据本申请公开的一种具体实施方式,所述方法还包括:

当所述缓存数据库中存储的数据达到第一预设存储容量值后,检测所述缓存数据库中数据被引用的次数和时间;

根据所述缓存数据库中的数据被引用的次数和时间,依次清除缓存数据库中引用次数最少和/或引用时间最短的数据,直到所述缓存数据库中存储的数据下降到第二预设存储容量值以下。

第二方面,本申请实施例提供了一种数据存储装置,所述装置包括:

接收模块,用于接收存储指令,所述存储指令用于指示请求存储的目标数据;

判断模块,用于判断缓存数据库中是否存储有数据;

获取模块,用于若所述缓存数据库中没有存储数据,则从原始数据库中获取所述目标数据并存储到云端数据库;若所述缓存数据库中存储有数据,则从所述缓存数据库和/或所述原始数据库中获取所述目标数据并存储到所述云端数据库。

第三方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机程序,所述处理器执行所述计算机程序以实现第一方面中任一项实施例所述的方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令使所述处理器实现第一方面中任一项实施例所述的方法。

相对于现有技术而言,本申请具有以下有益效果:

本发明提供一种数据存储方法、装置及计算机设备。该数据存储方法包括:首先接收存储指令,存储指令用于指示请求存储的目标数据,然后判断缓存数据库中是否存储有数据。若缓存数据库中没有存储数据,则从原始数据库中获取目标数据并存储到云端数据库,若缓存数据库中存储有数据,则从缓存数据库和/或原始数据库中获取目标数据并存储到云端数据库。本发明提供的数据存储方法,减少了对原始数据库的访问,提高读取效率,加快数据采集和存储的过程。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。

图1为本申请实施例提供的一种数据存储方法的流程示意图;

图2为本申请实施例提供的数据存储架构示意图;

图3为本申请实施例提供的一种数据存储装置的模块框图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。

此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互结合。

参见图1,为本申请实施例提供的一种数据存储方法的流程示意图,如图1所示,所述方法主要包括:

步骤S101,接收存储指令。

其中,所述存储指令用于指示请求存储的目标数据。

具体实施时,接收用户终端设备发送的存储指令进行存储操作,存储指令可以包括需要存储的目标数据的类型和范围。

步骤S102,判断缓存数据库中是否存储有数据。

缓存数据库用于缓存已经进行过存储的数据,如果后续需要存储的数据全部或者部分存在于缓存数据库中,那么在后续存储过程中华,可以直接调用已经缓存在缓存数据库中的这部分数据。由于利用缓存数据库进行存储的效率远远高于直接调用原始数据库,在接收到存储指令后,先判断缓存数据库中是否存储有数据,可以减少对原始数据库的访问,继而减少对磁盘的访问,提升查询速度。

步骤S103,若所述缓存数据库中没有存储数据,则从原始数据库中获取所述目标数据并存储到云端数据库。

当第一次存储开始或者缓存数据库中的数据被清除时,缓存数据库中无数据,此时必须要访问原始数据库读取数据,再将数据发送给云端数据库进行存储。

若所述缓存数据库中没有存储数据,所述方法还包括:

将所述目标数据存储到所述缓存数据库。

具体实施时,将原始数据库中的数据发送给云端数据库的同时,需要在缓存数据库中进行备份。

步骤S104,若所述缓存数据库中存储有数据,则从所述缓存数据库和/或所述原始数据库中获取所述目标数据并存储到所述云端数据库。

进行首次存储之后,由于缓存数据库中已经存储有数据,再次接受到存储指令时可以直接调用缓存数据库中相应部分需要存储的目标数据,减少对原始数据库的读取,提升存储效率。

从所述缓存数据库和/或所述原始数据库中获取所述目标数据并存储到所述云端数据库的步骤,包括:

判断所述缓存数据库中是否存储有全部的所述目标数据;

若所述缓存数据库中存储有全部的所述目标数据,则从所述缓存数据库中获取所述目标数据并存储到所述云端数据库;

若所述缓存数据库中未存储全部的所述目标数据,则从所述缓存数据库和所述原始数据库中获取全部的所述目标数据并存储到所述云端数据库。

具体实施时,第一次存储之后再次进行存储时,根据接收到的存储指令,系统自动进行判定。若本次需要存储的目标数据是同一类型和范围的数据的更小范围,则直接在缓存数据库中复制相应部分的目标数据并发送至云端数据库中进行存储。若本次需要存储的目标数据是同一类型和范围的数据的更大范围,则系统自动进行判定,除了从缓存数据库中获取相应部分的目标数据外,还需要访问原始数据库,读取超出范围的那部分目标数据,将全部的目标数据存储到云端数据库中。

从所述缓存数据库和所述原始数据库中获取全部的所述目标数据并存储到所述云端数据库的步骤,包括:

确定所述缓存数据库内存储的所述目标数据的第一子集数据,以及所述缓存数据库内未存储的所述目标数据的第二子集数据;

将所述原始数据库内的所述第二子集数据存储到所述缓存数据库;

将所述缓存数据库中的第一子集数据和所述第二子集数据存储到所述云端数据库。

具体实施时,若缓存数据库中未存储全部的所述目标数据,可以将已经存储在缓存数据库中部分的目标数据定义为第一子集数据,同时调用存储在原始数据库中另一部分目标数据,可以定义为第二子集数据,并存储在缓存数据库中,由缓存数据库组装两个子集,发送至云端数据库中进行存储。若缓存数据库中存储的数据并不包含任何目标数据,可以将第一子集数据定义为空集或者直接访问原始数据库进行存储操作。

图2为本申请实施例提供的数据存储架构示意图。结构化数据和半结构化数据可以存储在缓存数据库中,如:数字、表格等。非结构化数据,如:图片等,没有进行类似加减乘除运算或处理的要求,所以可以不存储在缓存数据库中,需要直接从原始数据库中调用。这样能够避免将不需要处理的数据存储在缓存数据库中,加大缓存数据库的空间利用率,提升数据存储效率。

此外,所述方法还包括:

按照预设的检测周期或者在接收到所述存储指令时,检测所述原始数据库中是否存在改动数据;

若所述原始数据库存在改动数据,则清除所述缓存数据库中与所述改动数据对应的数据。

具体实施时,如果原始数据库中的数据发生改动,可以自动检测发生改动的数据,并停用缓存数据库中相对应的数据,对其做失效处理,并在一定时间周期中清理程序会清除该区域的数据。

可以对原始数据库的状态码进行检测,其中,状态码是记录原始数据库中数据发生改动次数并记录改动数据的字符串。若状态码发生变化,则清除与所述原始数据库中改动的数据相对应的缓存数据库中的数据。

获取所述目标数据并存储到所述云端数据库的步骤之后,所述方法还包括:

清除所述缓存数据库中存储的数据。

当任意一次存储操作全部完成,即全部需要存储的目标数据都被发送并存储到云端数据库中后,消除缓存数据库中所有的数据,释放缓存数据库的空间,确保数据安全,使得操作规范化和合理化。

此外,所述方法还包括:

当所述缓存数据库中存储的数据达到第一预设存储容量值后,检测所述缓存数据库中数据被引用的次数和时间;

根据所述缓存数据库中的数据被引用的次数和时间,依次清除缓存数据库中引用次数最少和/或引用时间最短的数据,直到所述缓存数据库中存储的数据下降到第二预设存储容量值以下。

具体实施时,第一预设存储容量值可以为用户自定义的不大于缓存数据库最大存储容量值的任意数值,该存储容量值既可以充分利用缓存数据库的容量,也可以很好地避免缓存数据库长时间处于最大容量值,延长缓存数据库的使用时间和效率。第二预设存储容量值可以为用户自定义的不大于所述第一预设存储容量值的任意数值。

除了在任意一次存储操作完成后,对缓存数据库中的数据进行清除,还可以在缓存数据库达到第一预设存储容量值时,对缓存数据库中的数据进行清除操作。清除操作需要考虑当前数据是否在用,或者被其他数据引用,如果不再使用,则对其进行清除,保证充足的空间来容纳其他数据。判断缓存数据库中的数据是否被引用,可以检测所述缓存数据库中数据的引用值。其中,引用值是一个存储在缓存数据库中的计数变量,引用值包括数据被引用的次数和时间,用于检测缓存的占用情况,实时查询缓存数据库中数据被引用的次数和引用时间,清除引用次数最少和/或引用时间最短的数据。

本发明提供的数据存储方法,第一次将数据从原始数据源进行读取的同时备份到缓存数据库中,下一次存储时直接从缓存数据库进行读取,达到减少访问原始数据库的目的,以加速存储,提高数据集成系统的整体效率。同时,当全部需要存储的目标数据都被发送并存储到云端数据库中后,消除缓存数据库中所有的数据,释放缓存数据库的空间,可以确保数据安全。

与上述方法实施例相对应,参见图3,本发明还提供一种数据存储装置300,所述数据存储装置300包括:

接收模块301,用于接收存储指令,所述存储指令用于指示请求存储的目标数据;

判断模块302,用于判断缓存数据库中是否存储有数据;

获取模块303,用于若所述缓存数据库中没有存储数据,则从原始数据库中获取所述目标数据并存储到云端数据库;若所述缓存数据库中存储有数据,则从所述缓存数据库和/或所述原始数据库中获取所述目标数据并存储到所述云端数据库。

此外,还提供一种计算机设备,包括处理器和存储器,存储器存储有能够被所述处理器执行的计算机程序,所述处理器执行所述计算机程序以实现上述数据存储方法。

此外,还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现上述数据存储方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

相关技术
  • 数据存储方法和装置、数据查询方法和装置、数据结构、电子设备及计算机可读存储介质
  • 数据存储方法、装置、计算机可读存储介质以及计算机设备
技术分类

06120112837178