CN109388644A - 一种数据更新方法及装置 - Google Patents
一种数据更新方法及装置 Download PDFInfo
- Publication number
- CN109388644A CN109388644A CN201710675325.3A CN201710675325A CN109388644A CN 109388644 A CN109388644 A CN 109388644A CN 201710675325 A CN201710675325 A CN 201710675325A CN 109388644 A CN109388644 A CN 109388644A
- Authority
- CN
- China
- Prior art keywords
- data
- update
- interim table
- interim
- partition holding
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据更新方法及装置,涉及数据处理技术领域,主要目的在于减少数据更新时间,同时缩短只读数据库不可访问时间,本发明的主要技术方案为:创建预设数据结构的临时表,所述临时表的数据结构与只读数据库中正式表的数据结构相同;当接收到更新的数据时,根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中;判断所述临时表中的数据是否满足预设条件;如果是,则将所述临时表中的数据替换至所述只读数据库的正式表中。本发明主要用于数据的更新。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据更新方法及装置。
背景技术
随着计算机技术的快速发展,数据已经渗透到当今的各个行业以及业务职能领域,而云时代的到来吸引了更多对大数据的关注,在大数据技术中,数据的存储一直是关注的重点,如何有效地在分布式环境中存储海量数据,如何有效地设计分布式数据库以及执行分布式查询都是数据存储需要关注的重点。
数据库的产生很大程度上解决了数据存储的问题,而在分布式环境中多查询少更新的场景下,只读数据库更适合数据的存储,与传统的关系型数据库不同,只读数据库是列式存储,不支持分区内数据的更新操作。
目前,对只读数据库的更新操作通常采用文件替换的方式,将生成的更新后全部数据条目放置到另一个文件中,进而覆盖原先更新的数据文件。然而,在只读数据库更新频率较高的场景下,上述的更新方式每次都会对原先更新的数据文件进行覆盖,使得每次数据更新时间较长,另外每次在数据文件覆盖的过程中,只读数据库是不可访问的,无法进行任何数据操作。
发明内容
有鉴于此,本发明提供一种数据更新方法及装置,主要目的在于减少数据更新时间,同时缩短只读数据库不可访问时间。
为了解决上述问题,本发明主要提供如下技术方案:
一方面,本发明实施例提供了一种数据更新方法,包括:
创建预设数据结构的临时表,所述临时表的数据结构与只读数据库中正式表的数据结构相同;
当接收到更新的数据时,根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中;
判断所述临时表中的数据是否满足预设条件;
如果是,则将所述临时表中的数据替换至所述只读数据库的正式表中。
进一步地,所述根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中包括:
判断所述更新的数据对应的存储分区是否为所述临时表所在的存储分区;
如果是,则将所述更新的数据加载至所述临时表中。
进一步地,所述根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中还包括:
若所述更新的数据对应的存储分区不是所述临时表所在的存储分区,进一步判断所述临时表中的数据占用情况是否为空;
若所述临时表中的数据占用情况为空,调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者
删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
进一步地,所述方法还包括:
若所述临时表中的数据占用情况不为空,则在将所述临时表中的原始数据替换至所述原始数据对应的存储分区中的正式表后,清空所述临时表中的数据,并调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者
在将所述临时表中的原始数据替换至所述原始数据对应的存储分区的正式表后,删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
进一步地,所述判断所述临时表中的数据是否满足预设条件包括:
判断所述临时表中数据的累计更新条数是否大于预设条数;和/或
判断所述临时表中数据的累计更新次数是否大于预设次数;和/或
判断所述临时表中数据的累计更新时间是否大于预设时间。
进一步地,在所述将所述临时表中的数据替换至所述只读数据库的正式表中之后,所述方法还包括:
清空所述临时表中的数据,并重置累计更新条数、累计更新次数以及累计更新时间。
为了实现上述目的,根据本发明的另一方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述所述的数据更新方法。
为了实现上述目的,根据本发明的另一方面,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述所述的数据更新方法。
另一方面,本发明实施例还提供了一种数据更新装置,包括:
创建单元,用于创建预设数据结构的临时表,所述临时表的数据结构与只读数据库中正式表的数据结构相同;
加载单元,用于当接收到更新的数据时,根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中;
判断单元,用于判断所述临时表中的数据是否满足预设条件;
替换单元,用于如果所述临时表中的数据满足预设条件,则将所述临时表中的数据替换至所述只读数据库的正式表中。
进一步地,所述加载单元包括:
判断模块,用于判断所述更新的数据对应的存储分区是否为所述临时表所在的存储分区;
加载模块,用于如果所述更新的数据对应的存储分区为所述临时表所在的存储分区,则将所述更新的数据加载至所述临时表中.
进一步地,所述加载模块,具体用于若所述更新的数据对应的存储分区不是所述临时表所在的存储分区,进一步判断所述临时表中的数据占用情况是否为空;
所述加载模块,具体还用于若所述临时表中的数据占用情况为空,调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者
删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
进一步地,所述加载模块,具体用于若所述临时表中的数据占用不为空时,则在将所述临时表中的原始数据替换至所述原始数据对应的存储分区的正式表后,清空所述临时表中的数据,并调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者
在将所述临时表中的原始数据替换至所述原始数据对应的存储分区的正式表后,删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
进一步地,所述判断单元,具体用于判断所述临时表中数据的累计更新条数是否大于预设条数;和/或
所述判断单元,具体还用于判断所述临时表中数据的累计更新次数是否大于预设次数;和/或
所述判断单元,具体还用于判断所述临时表中数据的累计更新时间是否大于预设时间。
进一步地,所述装置还包括:
清空单元,用于清空所述临时表中的数据,并重置累计更新条数、累计更新次数以及累计更新时间。
借由上述技术方案,本发明实施例提供的技术方案至少具有下列优点:
本发明实施例提供的一种数据更新方法及装置,通过建立预设数据结构的临时表,这里临时表的数据结构与只读数据库中正式表的数据结构相同,当只读数据库需要数据更新时,先根据更新的数据对应的存储分区以及临时表中的数据占用情况将更新的数据加载至临时表中,能够准确地将更新的数据加载到只读数据库中对应的存储分区,由于临时表相对于只读数据库中正式表而言数据量较小,因此缩短了数据更新的时间,进一步当临时表中的数据满足预设条件后,一次性将临时表中的数据替换至只读数据库的正式表中。与现有技术中采用全部文件覆盖式的数据更新方法相比,本发明实施例通过在只读数据库中创建临时表,能够从一定程度上将数据更新与数据查询分离开,当临时表中出现错误数据时,方便对错误数据进行修改,减少了对正式表中数据进行重复操作的次数,同时在数据更新频率较高的时候,仅需对临时表进行数据操作,降低了高频更新下只读数据库中正式表的不可用时间。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的一种数据更新方法流程图;
图2为本发明实施例提供的另一种数据更新方法流程图;
图3为本发明实施例提供的一种数据更新装置的组成框图;
图4为本发明实施例提供的另一种数据更新装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种数据更新方法,如图1所示,该方法并非直接对原始存储文件进行替换,而是通过创建与只读数据库中正式表数据结构相同的临时表,一次性地将更新数据替换至只读数据库的正式表中,减少了对正式表的重复操作次数,对此本发明实施例提供以下具体步骤:
101、创建预设数据结构的临时表。
其中,临时表的数据结构与只读数据库中正式表的数据结构相同,这里的数据结构可以为数据的表现形式,对于不同的只读数据库中数据的表现形式有所不同,通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。例如,常用的数据结构有数组、线性表、链表等多种,本发明实施例中对预设数据结构不进行限定,具体根据当前只读数据库中正式表的数据结构确定。
可以理解的是,上述的只读数据库为只能够读取或者查询数据的数据库,不支持修改或者删除的数据库,这里的只读数据库具有多个数据存储分区,更加适合分布式环境下多查询少更新的应用场景。
对于本发明实施例,由于只读数据库不支持修改操作,如果需要对数据进行修改,则需要对只读数据库中的文件进行覆盖替换,本发明实施例通过创建预设数据结构的临时表,该临时表具有与只读数据库中正式表相同的数据结构,可以将需要修改的数据预先存储在临时表中。
102、当接收到更新的数据时,根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中。
这里更新的数据可以为用户需要修改只读数据库中正式表的数据内容,还可以为按照时间间隔新生成的数据,本发明实施例不进行限定,进一步在接收到更新的数据时,根据更新数据对应的存储分区以及临时表中的数据占用情况将更新的数据加载至临时表中,当然这里可以对临时表进行多次加载,在将新生成的数据加载至临时表中后,如果发现临时表中有数据错误时,也可以对临时表中错误的数据进行修改,本发明实施例对临时表中的数据操作不进行限定。
其中,只读数据库中对应有多个不同存储分区,每个分区中数据有相应的划分规则,从而方便只读数据库的数据管理,如按照数据对应的生成日期,或者数据对应的区域范围等,在接收到更新的数据时,由于更新的数据并非是随意存储至只读数据库中,需要找到更新的数据对应的存储分区,从而保证数据被更新到只读数据库中对应的位置,如当发现某个日期的数据有错误数据,则需要更新数据对应的存储分区为错误数据日期分区内的数据,如当某一区域内数据有新增数据,则需要更新数据对应的存储分区为新增数据对应区域分区内的数据,当然不同存储分区中正式表的数据格式也可能有所不同,不同分区中正式表所存储的数据类型有所不同,本发明实施例对只读数据库的存储分区划分以及存储分区内正式表的数据内容不进行限定。
同样的,由于临时表中数据的占用情况会影响到更新的数据的加载,如果临时表中当前存在有其他更新的数据,则在不了解临时表是否为更新的数据对应的存储分区之前,不能直接将更新的数据加载到临时表中,当然如果临时表中当前并未存在有其他更新的数据,则在了解临时表是否为更新的数据对应的存储分区之后,将更新的数据加载至临时表中。
103、判断所述临时表中的数据是否满足预设条件。
其中,预设条件可以为临时表中数据的累计条数是否满足预设条数,和/或临时表中数据的累计更新次数是否满足预设次数,和/或临时表中数据的累计更新时间是否满足预设时间,当然还可以通过用户手动设置满足预设条件,或者为其他的条件,本发明实施例不进行限定。
由于在加载临时表中的数据时,只读数据库中正式表的访问不受限制,对于只读数据库更新比较频繁的应用场景,如每天更新一次或每小时更新一次,对于本发明实施例,通过对临时表中的数据设置预设条件,能够一定程度上降低在较高频率下只读数据库中正式表的不可用时间,进一步当临时表中数据满足预设条件时再将数据更新至正式表中,也能够一次性完成多次更新的数据,缩短了数据更新时间。
104、如果是,则将所述临时表中的数据替换至所述只读数据库的正式表中。
当临时表中的数据满足预设条件时,说明该临时表中的数据量达到一定阈值,进一步通过分区目录查找到需要更新数据在只读数据库中的存储分区,将临时表中的内容更新到只读数据库中对应存储分区的正式表中,当然如果临时表中的数据不满足预设条件时,说明临时表中的数据量未达到一定阈值时,此时若临时表中的数据有错误数据,还可以对临时表中的数据进行修改。
需要说明的是,在将临时表中的数据替换至只读数据库中后,将临时表中的数据清零,以便后续对该只读数据库再次进行数据更新。
针对本发明的实施例提供的一种数据更新方法,通过建立预设数据结构的临时表,这里临时表的数据结构与只读数据库中正式表的数据结构相同,当只读数据库需要数据更新时,先根据更新的数据对应的存储分区以及临时表中的数据占用情况将更新的数据加载至临时表中,能够准确地将更新的数据加载到只读数据库中对应的存储分区,由于临时表相对于只读数据库中正式表而言数据量较小,因此缩短了数据更新的时间,进一步当临时表中的数据满足预设条件后,一次性将临时表中的数据替换至只读数据库的正式表中。与现有技术中采用全部文件覆盖式的数据更新方法相比,本发明实施例通过在只读数据库中创建临时表,能够从一定程度上将数据更新与数据查询分离开,当临时表中出现错误数据时,方便对错误数据进行修改,减少了对正式表中数据进行重复操作的次数,同时在数据更新频率较高的时候,仅需对临时表进行数据操作,降低了高频更新下只读数据库中正式表的不可用时间。
以下为了更加详细地说明本发明提出的一种数据更新方法,特别是当接收到更新的数据时,根据更新的数据对应的存储分区以及临时表中的数据占用情况将更新的数据加载至临时表中的步骤,本发明实施例还提供了另一种数据更新方法,如图2所示,该方法的具体的步骤包括:
201、在只读数据库中创建预设数据结构的临时表。
其中,只读数据库中对应有多个存储分区,每个存储分区中存储有相应的数据,不同存储分区的分区形式可以为水平分区,还可以为垂直分区,通过在只读数据库中建立存储分区能够方便用户知道哪个分区中包含特定查询中需要的数据,例如,百万行的表划分10个分区,每个分区包含十万行数据,那么查询分区的时间仅仅是全表扫描的十分之一,当然还可以通过对十万行的表建立索引,也能够同样方便用户查询数据。
需要说明的是,这里的预设数据结构的临时表与正式表的数据结构相同,具体创建临时表的过程可以通过提取只读数据库正式表中各字段内容,进而根据正式表中各字段内容建立与正式表相同数据结构的临时表,例如,正式表为班级成绩表,该班级成绩表中各字段包括学生姓名、学生性别以及学生各科成绩,对应创建的临时表中也包括班级成绩表中同样的字段。
202、当接收到更新的数据时,判断所述更新的数据对应的存储分区是否为所述临时表所在的存储分区。
由于只读数据库中对应有多个不同存储分区,每个分区中数据有相应的划分规则,从而方便只读数据库的数据管理,如按照数据对应的生成日期,或者数据对应的区域范围等,在接收到更新的数据时,需要找到更新的数据对应的存储分区,由于临时表当前对应的存储分区可能并非更新的数据对应存储区域,为了避免将更新的数据放入错误的存储分区,进一步可以通过查找只读数据库的分区目录来判断更新的数据对应的存储分区是否为临时表所在的存储分区,这里的分区目录相当于只读数据库中的数据索引,记录有每个分区的数据标识,如数据名称、数据日期以及数据区域等,本发明实施例对此不进行限定。
203a、如果是,将所述更新的数据加载至所述临时表中。
如果判断更新的数据对应的存储分区是临时表所在的存储分区,则可以说明该存储分区中的数据需要更新或者该存储分区中的数据存在错误数据,并且该临时表对应的存储分区为需要更新的数据对应的存储分区,进一步直接将更新的数据加载至对应存储分区的临时表中。
相应的,与步骤203a对应的步骤203b、否则,判断所述临时表中的数据占用情况是否为空。
需要说明的是,如果判断更新的数据对应的存储分区不是临时表所在的存储分区,则说明当前存储分区并非更新的数据对应的存储分区,为了将更新的数据加载到正确存储分区的临时表中,通常在将更新的数据加载至临时表之前需要判断临时表中的数据占用情况,也就是判断临时表中当前是否存在有之前未更新完成的数据。
其中,临时表中的数据占用情况表明临时表中是否存在有之前未更新完成的数据,例如,更新的数据对应的存储分区为C区,而当前临时表对应的存储分区为B区,并且临时表中存储有B区为更新完成的数据,则此时临时表的占用情况不为空,如果临时表在更新存储分区B区的数据后清空了,则此时临时表的占用情况为空。
204b、若所述临时表中的数据占用情况为空,调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中。
如果临时表中的数据占用情况为空,则说明当前临时表中的数据已经更新至该临时表对应的存储分区中,并且临时表中的内容已经清空,为了将更新的数据加载到正确的存储分区,本发明实施例通过将临时表对应的存储分区调整为更新的数据对应的存储分区,之后在将更新的数据加载到临时表中。
需要说明的是,如果只读数据库中不同存储分区对应正式表的数据结构有所不同,如存储分区A与存储分区C中正式表的数据结构不同,则如果仅仅将临时表对应的存储分区A调整至存储分区C,该临时表在存储分区C中也是无法进行数据更新,进一步将该存储分区对应的临时列表删除,然后在更新的数据对应的存储分区新创建临时表,之后将更新的数据加载至新创建临时表中,进而保证新创建临时表的数据结构与该存储分区中正式表的数据结构一致。
相应的,与步骤204b相对应的有步骤204b’若所述临时表中的数据占用情况不为空,则在将所述临时表中的原始数据替换至所述原始数据对应的存储分区中的正式表后,清空所述临时表中的数据,并调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中。
如果临时表中的数据占用情况不为空,则说明当前临时表中可能还存在之前未更新完成的数据,可能还存在已经更新完成但是未清空的数据,进一步将临时表中的原始数据替换至原始数据对应的存储分区中的正式表后,清空临时表中的数据,保证临时表的占用情况为空后,执行与步骤204b同样的内容将临时表对应的存储分区调整为更新的数据对应的存储分区,之后在将更新的数据加载到临时表中。
同样的,如果只读数据库中不同存储分区对应正式表的数据结构有所不同,为了保证临时表的数据结构与该存储分区中正式表的数据结构一致,在将临时表中的原始数据替换至原始数据对应的存储分区的正式表后,删除临时列表,并在更新的数据对应的存储分区新创建临时表,之后将更新的数据加载至新创建临时表中。
205、判断所述临时表中的数据是否满足预设条件。
其中,预设条件可以为临时表中数据的累计条数是否满足预设条数,和/或临时表中数据的累计更新次数是否满足预设次数,和/或临时表中数据的累计更新时间是否满足预设时间,当然还可以通过用户手动设置满足预设条件,或者为其他的条件,本发明实施例不进行限定。
例如,对于存在实时数据更新的只读数据库,可以设置预设条件为临时表中数据的累计条数达到100条,对于存在错误数据需要更新的只读数据库,可以设置预设条件为临时表中数据的累计修改次数到10次,当然对于同时需要数据更新以及错误数据更新的只读数据库,还可以设置预设条件为当累计条数达到100条或者累计修改次数达到10次中任一条件。
由于在加载临时表中的数据时,只读数据库中正式表的访问不受限制,对于只读数据库更新比较频繁的应用场景,如每天更新一次或每小时更新一次,对于本发明实施例,通过对临时表中的数据设置预设条件,能够一定程度上降低在较高频率下只读数据库中正式表的不可用时间,进一步当临时表中数据满足预设条件时再将数据更新至正式表中,也能够一次性完成多次更新的数据,缩短了数据更新时间。
206、如果是,则将所述临时表中的数据替换至所述只读数据库的正式表中。
对于本发明实施例,当临时表中的数据满足预设条件时,说明该临时表中的数据量达到一定阈值,进一步将临时表中的内容更新到只读数据库中对应存储分区的正式表中,能够一次性的将多次需要更新的内容更新到只读数据库,降低了数据库的不可访问时间。
207、清空所述临时表中的数据,并重置累计更新条数、累计更新次数以及累计更新时间。
需要说明的是,在将临时表中的数据替换至只读数据库中后,将临时表中的数据清零,并且重置累计更新条数、累计更新次数以及累计更新时间,以便后续对该只读数据库再次进行数据更新。
对于本发明实施例,具体的应用场景可以包括但不局限于下述实现方式,当前应用场景为只读数据库中正式表A,对应存储分区为001分区,按照z(次/秒)的速度对正式表中的数据进行更新,每次更新替换文件的过程耗时为t(秒),设置更新的累计次数阈值为zs和累计时间阈值tm,本发明实施例在只读数据库中创建一张与正式表A数据结构相同的临时表B,当接收到更新的数据时,判断更新的数据对应的存储分区是否为临时表B所在的存储分区001,如果当前临时表B所在的存储分区为需要更新数据对应的存储分区001,则直接将更新的数据加载至临时表B中,完成初步数据更新,如果当前临时表B所在的存储分区不是更新的数据对应的存储分区001,而是存储分区002,则通过查找只读数据库的分区目录的数据标识获取更新的数据对应的存储分区001,进一步由于临时表B中存储有存储分区001的更新的数据,判断临时表B中的数据占用情况不为空,进一步将临时表B中的更新的数据替换至存储分区001的正式表A中,完成该存储分区的数据更新后,清空临时表中的数据,并且存储分区001中的正式表A与存储分区002对应的正式表C的数据结构一致,无需将临时表B删除,可以直接将临时表B当前对应的存储分区001调整至存储分区002,进一步将更新的数据加载到临时表B中,如果后续有新的更新的数据,则重复上述执行步骤,进一步判断临时表B中更新数据的累计更新次数是否达到累计次数阈值或者临时表B中更新数据的累计更新时间是否达到累计时间阈值,如果是,将临时表B中的数据替换至对应存储分区002中的正式表C中,清空临时表B中的数据,并重置累计更新次数以及累计更新时间。
对于本发明实施例,在使用累计更新时间作为预设条件的情况,本发明实施例只需对正式表进行一次文件替换操作,正式表的不可用时间为t,相比于现有技术中对只读数据库中正式表的文件替换操作为X次,以及正式表不可用时间为z×t,本发明实施例中只读数据库不可用时间为原来的1/z,当z越大的情况下,只读数据库不可用时间越大,明显提升了数据更新效率。
针对本发明实施例提供的另一种数据更新方法,通过对更新的数据对应的存储分区进行判断来保证更新数据位置的准确性,如果更新的数据对应的存储分区不是临时表的存储分区,进一步根据临时表中数据占用情况将对应存储分区的更新的数据加载至临时表中,由于临时表相对于只读数据库中正式表而言数据量较小,因此缩短了数据更新的时间,进一步当临时表中的数据满足预设条件后,一次性将临时表中的数据替换至只读数据库的正式表中,当临时表中出现错误数据时,方便对错误数据进行修改,减少了对正式表中数据进行重复操作的次数,同时在数据更新频率较高的时候,仅需对临时表进行数据操作,降低了高频更新下只读数据库中正式表的不可用时间。
为了实现上述目的,根据本发明的另一方面,本发明实施例还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述所述的数据更新方法。
为了实现上述目的,根据本发明的另一方面,本发明实施例还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述所述的数据更新方法。
进一步的,作为对上述图1及图2所示方法的实现,本发明另一实施例还提供了一种数据更新装置。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置用于减少数据更新时间,同时缩短只读数据库不可访问时间,具体如图3所示,该装置包括:
创建单元31,可以用于创建预设数据结构的临时表,所述临时表的数据结构与只读数据库中正式表的数据结构相同;
加载单元32,可以用于当接收到更新的数据时,根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中;
判断单元33,可以用于判断所述临时表中的数据是否满足预设条件;
替换单元34,可以用于如果所述临时表中的数据满足预设条件,则将所述临时表中的数据替换至所述只读数据库的正式表中。
针对本发明的实施例提供了一种数据更新装置,通过建立预设数据结构的临时表,这里临时表的数据结构与只读数据库中正式表的数据结构相同,当只读数据库需要数据更新时,先根据更新的数据对应的存储分区以及临时表中的数据占用情况将更新的数据加载至临时表中,能够准确地将更新的数据加载到只读数据库中对应的存储分区,由于临时表相对于只读数据库中正式表而言数据量较小,因此缩短了数据更新的时间,进一步当临时表中的数据满足预设条件后,一次性将临时表中的数据替换至只读数据库的正式表中。与现有技术中采用全部文件覆盖式的数据更新方法相比,本发明实施例通过在只读数据库中创建临时表,能够从一定程度上将数据更新与数据查询分离开,当临时表中出现错误数据时,方便对错误数据进行修改,减少了对正式表中数据进行重复操作的次数,同时在数据更新频率较高的时候,仅需对临时表进行数据操作,降低了高频更新下只读数据库中正式表的不可用时间。
进一步的,如图4所示,所述装置还包括:
清空单元35,可以用于清空所述临时表中的数据,并重置累计更新条数、累计更新次数以及累计更新时间
进一步地,所述加载单元32包括:
判断模块321,可以用于判断所述更新的数据对应的存储分区是否为所述临时表所在的存储分区;
加载模块322,可以用于如果所述更新的数据对应的存储分区为所述临时表所在的存储分区,则将所述更新的数据加载至所述临时表中.
进一步地,所述加载模块322,具体可以用于若所述更新的数据对应的存储分区不是所述临时表所在的存储分区,进一步判断所述临时表中的数据占用情况是否为空;
所述加载模块322,具体还可以用于若所述临时表中的数据占用情况为空,调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者
删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
进一步地,所述加载模块322,具体可以用于若所述临时表中的数据占用情况不为空,则在将所述临时表中的原始数据替换至所述原始数据对应的存储分区中的正式表后,清空所述临时表中的数据,并调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者
在将所述临时表中的原始数据替换至所述原始数据对应的存储分区的正式表后,删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
进一步地,所述判断单元33,具体可以用于判断所述临时表中数据的累计更新条数是否大于预设条数;和/或
所述判断单元33,具体还可以用于判断所述临时表中数据的累计更新次数是否大于预设次数;和/或
所述判断单元33,具体还可以用于判断所述临时表中数据的累计更新时间是否大于预设时间。
针对本发明实施例提供的另一种数据更新装置,通过对更新的数据对应的存储分区进行判断来保证更新数据位置的准确性,如果更新的数据对应的存储分区不是临时表的存储分区,进一步根据临时表中数据占用情况将对应存储分区的更新的数据加载至临时表中,由于临时表相对于只读数据库中正式表而言数据量较小,因此缩短了数据更新的时间,进一步当临时表中的数据满足预设条件后,一次性将临时表中的数据替换至只读数据库的正式表中,当临时表中出现错误数据时,方便对错误数据进行修改,减少了对正式表中数据进行重复操作的次数,同时在数据更新频率较高的时候,仅需对临时表进行数据操作,降低了高频更新下只读数据库中正式表的不可用时间。
所述数据更新装置包括处理器和存储器,上述创建单元31、加载单元32、判断单元33和替换单元34等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来减少数据更新时间,同时缩短只读数据库不可访问时间。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述数据更新方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据更新方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
一种数据更新方法,包括:创建预设数据结构的临时表,所述临时表的数据结构与只读数据库中正式表的数据结构相同;当接收到更新的数据时,根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中;判断所述临时表中的数据是否满足预设条件;如果是,则将所述临时表中的数据替换至所述只读数据库的正式表中。
进一步地,所述根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中包括:判断所述更新的数据对应的存储分区是否为所述临时表所在的存储分区;如果是,则将所述更新的数据加载至所述临时表中。
进一步地,所述根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中还包括:若所述更新的数据对应的存储分区不是所述临时表所在的存储分区,进一步判断所述临时表中的数据占用情况是否为空;若所述临时表中的数据占用情况为空,调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
进一步地,所述方法还包括:若所述临时表中的数据占用情况不为空,则在将所述临时表中的原始数据替换至所述原始数据对应的存储分区中的正式表后,清空所述临时表中的数据,并调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者在将所述临时表中的原始数据替换至所述原始数据对应的存储分区的正式表后,删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
进一步地,所述判断所述临时表中的数据是否满足预设条件包括:判断所述临时表中数据的累计更新条数是否大于预设条数;和/或判断所述临时表中数据的累计更新次数是否大于预设次数;和/或判断所述临时表中数据的累计更新时间是否大于预设时间。
进一步地,在所述将所述临时表中的数据替换至所述只读数据库的正式表中之后,所述方法还包括:清空所述临时表中的数据,并重置累计更新条数、累计更新次数以及累计更新时间。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:创建预设数据结构的临时表,所述临时表的数据结构与只读数据库中正式表的数据结构相同;当接收到更新的数据时,根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中;判断所述临时表中的数据是否满足预设条件;如果是,则将所述临时表中的数据替换至所述只读数据库的正式表中。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据更新方法,其特征在于,包括:
创建预设数据结构的临时表,所述临时表的数据结构与只读数据库中正式表的数据结构相同;
当接收到更新的数据时,根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中;
判断所述临时表中的数据是否满足预设条件;
如果是,则将所述临时表中的数据替换至所述只读数据库的正式表中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中包括:
判断所述更新的数据对应的存储分区是否为所述临时表所在的存储分区;
如果是,则将所述更新的数据加载至所述临时表中。
3.根据权利要求2所述的方法,其特征在于,所述根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中还包括:
若所述更新的数据对应的存储分区不是所述临时表所在的存储分区,进一步判断所述临时表中的数据占用情况是否为空;
若所述临时表中的数据占用情况为空,调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者
删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述临时表中的数据占用情况不为空,则在将所述临时表中的原始数据替换至所述原始数据对应的存储分区中的正式表后,清空所述临时表中的数据,并调整所述临时表对应的存储分区为所述更新的数据对应的存储分区,之后将所述更新的数据加载至调整存储分区后的临时表中,或者在将所述临时表中的原始数据替换至所述原始数据对应的存储分区的正式表后,删除所述临时列表,并在所述更新的数据对应的存储分区新创建临时表,之后将所述更新的数据加载至所述新创建临时表中。
5.根据权利要求1所述的方法,其特征在于,所述判断所述临时表中的数据是否满足预设条件包括:
判断所述临时表中数据的累计更新条数是否大于预设条数;和/或
判断所述临时表中数据的累计更新次数是否大于预设次数;和/或
判断所述临时表中数据的累计更新时间是否大于预设时间。
6.根据权利要求1-5中任一项所述的方法,其特征在于,在所述将所述临时表中的数据替换至所述只读数据库的正式表中之后,所述方法还包括:
清空所述临时表中的数据,并重置累计更新条数、累计更新次数以及累计更新时间。
7.一种数据更新装置,其特征在于,包括:
创建单元,用于创建预设数据结构的临时表,所述临时表的数据结构与只读数据库中正式表的数据结构相同;
加载单元,用于当接收到更新的数据时,根据所述更新的数据对应的存储分区以及所述临时表中的数据占用情况将所述更新的数据加载至所述临时表中;
判断单元,用于判断所述临时表中的数据是否满足预设条件;
替换单元,用于如果所述临时表中的数据满足预设条件,则将所述临时表中的数据替换至所述只读数据库的正式表中。
8.根据权利要求7所述的装置,其特征在于,所述加载单元包括:
判断模块,用于判断所述更新的数据对应的存储分区是否为所述临时表所在的存储分区;
加载模块,用于如果所述更新的数据对应的存储分区为所述临时表所在的存储分区,则将所述更新的数据加载至所述临时表中。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至权利要求6中任意一项所述的数据更新方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至权利要求6中任意一项所述的数据更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710675325.3A CN109388644B (zh) | 2017-08-09 | 2017-08-09 | 一种数据更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710675325.3A CN109388644B (zh) | 2017-08-09 | 2017-08-09 | 一种数据更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109388644A true CN109388644A (zh) | 2019-02-26 |
CN109388644B CN109388644B (zh) | 2021-10-15 |
Family
ID=65414782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710675325.3A Active CN109388644B (zh) | 2017-08-09 | 2017-08-09 | 一种数据更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109388644B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110389959A (zh) * | 2019-07-26 | 2019-10-29 | 中移电子商务有限公司 | 一种数据管理方法、装置及存储介质 |
CN110908978A (zh) * | 2019-11-06 | 2020-03-24 | 中盈优创资讯科技有限公司 | 数据库数据结构验证方法及装置 |
CN114647657A (zh) * | 2022-03-28 | 2022-06-21 | 重庆长安汽车股份有限公司 | 一种车辆的大量数据无缝更新方法 |
CN115455012A (zh) * | 2022-11-10 | 2022-12-09 | 广东广宇科技发展有限公司 | 一种数据采集方法、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102456024A (zh) * | 2010-10-26 | 2012-05-16 | 深圳市金蝶友商电子商务服务有限公司 | 异步处理大数据量新增的方法及装置 |
CN102486785A (zh) * | 2010-12-06 | 2012-06-06 | 金蝶软件(中国)有限公司 | 一种数据同步方法、装置及系统 |
CN103605776A (zh) * | 2013-11-28 | 2014-02-26 | 北京国双科技有限公司 | 信息数据库的数据处理方法和装置 |
CN105260485A (zh) * | 2015-11-20 | 2016-01-20 | 杭州数梦工场科技有限公司 | 一种数据加载的方法和装置 |
CN106682002A (zh) * | 2015-11-05 | 2017-05-17 | 中兴通讯股份有限公司 | 数据库同步方法及系统、源数据和目标数据同步装置 |
CN106897340A (zh) * | 2016-07-05 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种数据表更新方法及装置 |
-
2017
- 2017-08-09 CN CN201710675325.3A patent/CN109388644B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102456024A (zh) * | 2010-10-26 | 2012-05-16 | 深圳市金蝶友商电子商务服务有限公司 | 异步处理大数据量新增的方法及装置 |
CN102486785A (zh) * | 2010-12-06 | 2012-06-06 | 金蝶软件(中国)有限公司 | 一种数据同步方法、装置及系统 |
CN103605776A (zh) * | 2013-11-28 | 2014-02-26 | 北京国双科技有限公司 | 信息数据库的数据处理方法和装置 |
CN106682002A (zh) * | 2015-11-05 | 2017-05-17 | 中兴通讯股份有限公司 | 数据库同步方法及系统、源数据和目标数据同步装置 |
CN105260485A (zh) * | 2015-11-20 | 2016-01-20 | 杭州数梦工场科技有限公司 | 一种数据加载的方法和装置 |
CN106897340A (zh) * | 2016-07-05 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种数据表更新方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110389959A (zh) * | 2019-07-26 | 2019-10-29 | 中移电子商务有限公司 | 一种数据管理方法、装置及存储介质 |
CN110908978A (zh) * | 2019-11-06 | 2020-03-24 | 中盈优创资讯科技有限公司 | 数据库数据结构验证方法及装置 |
CN110908978B (zh) * | 2019-11-06 | 2022-09-13 | 中盈优创资讯科技有限公司 | 数据库数据结构验证方法及装置 |
CN114647657A (zh) * | 2022-03-28 | 2022-06-21 | 重庆长安汽车股份有限公司 | 一种车辆的大量数据无缝更新方法 |
CN115455012A (zh) * | 2022-11-10 | 2022-12-09 | 广东广宇科技发展有限公司 | 一种数据采集方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109388644B (zh) | 2021-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388644A (zh) | 一种数据更新方法及装置 | |
CN105426223B (zh) | 应用加载方法和装置 | |
US9576019B2 (en) | Increasing distributed database capacity | |
CN106873960A (zh) | 一种应用软件的更新方法和设备 | |
CN109634682A (zh) | 应用程序的配置文件更新方法及装置 | |
CN115129782A (zh) | 一种分布式数据库的分区级连接方法和装置 | |
CN110019111A (zh) | 数据处理方法、装置、存储介质以及处理器 | |
CN104951519A (zh) | 一种生成序列号的方法及装置 | |
CN110019261A (zh) | 数据查询方法和装置 | |
CN109977317A (zh) | 数据查询方法及装置 | |
CN109684381A (zh) | 数据热度统计方法及装置 | |
CN110069488A (zh) | 一种数据存储方法、数据读取方法及其装置 | |
CN109597627A (zh) | 一种组件安装方法、装置、存储介质和处理器 | |
CN109683887A (zh) | 一种支持多方案自定义web项目的构建方法及装置 | |
CN110069453A (zh) | 运维数据处理方法和装置 | |
CN109271364A (zh) | 存储方法及装置 | |
CN107861751A (zh) | 配置文件的修改方法及装置 | |
CN109598016A (zh) | 机器人添加方法和装置 | |
JP2008225686A (ja) | 分散型データ処理プラットフォームにおけるデータ配置管理装置と方法、システム及びプログラム | |
CN109101514A (zh) | 数据导入方法及装置 | |
CN116069328A (zh) | 流程页面的处理方法、装置、处理器及电子设备 | |
CN109062181A (zh) | 车控指令的更新方法及装置 | |
CN109299125A (zh) | 数据库更新方法及装置 | |
CN110020114A (zh) | 数据查询的处理方法、装置及设备 | |
CN116579585B (zh) | 资源分配方法、装置、计算机设备和存储介质 |
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 | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |