CN109783477B - 一种数据更新方法 - Google Patents
一种数据更新方法 Download PDFInfo
- Publication number
- CN109783477B CN109783477B CN201910108124.4A CN201910108124A CN109783477B CN 109783477 B CN109783477 B CN 109783477B CN 201910108124 A CN201910108124 A CN 201910108124A CN 109783477 B CN109783477 B CN 109783477B
- Authority
- CN
- China
- Prior art keywords
- data
- version
- business datum
- update
- build
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000001360 synchronised effect Effects 0.000 claims abstract description 9
- 238000007689 inspection Methods 0.000 abstract 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据更新方法,包括添加业务数据版本号、同步业务数据版本号和内部版本号、执行实际的业务数据更新操作和检查和标记实际数据更新四个步骤。添加业务数据版本号是本方法的实施基础;同步业务数据版本号和内部版本号是本方法的关键步骤,保持对比基准统一。检查和标记实际数据更新,通过对比业务数据版本号和内部版本号来确定数据是否实际更新,数据实际更新情况可以优化后续的数据处理性能。传统的基于Elasticsearch的大数据处理系统中,因为无法获知数据是否实际更新,存在大量全量数据读、写和计算的情况,导致了大量的时间和性能浪费。本发明有效解决上述缺陷,节省了系统资源和数据处理的时间。
Description
技术领域
本发明涉及大数据处理技术领域,尤其涉及一种基于Elasticsearch的数据更新方法。
背景技术
Elasticsearch是一个开源的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
Elasticsearch是当前非常流行的企业大数据解决方案系统组件,兼具数据存储和搜索引擎的功能。在使用Elasticsearch作为数据存储的技术方案中,数据更新是一个常见的数据操作,Elasticsearch为数据更新提供了以下的特性:elasticsearch为每一条数据记录记录一个内部版本号(_version)。当记录被第一次创建时,elasticsearch为其设定_version=1;每一次对此记录执行更新(update)操作时,elasticsearch对比要更新的字段值和原记录字段值是否完全相同,如果完全相同,elasticsearch忽略此次更新,保持原记录不变,如果不完全相同,elasticsearch执行更新操作,并把记录的内部版本号(_version)加一(假设原记录内部版本号为1,变更后内部版本号变为2)。
在大数据处理系统中,数据更新一般通过批量操作来执行,在不做全量数据对比的情况下,无法获知数据更新过程中,数据是否真的发生更新。数据实际更新未知性,导致在数据处理的全流程中,无法进行增量数据处理,导致整个计算系统的资源巨大浪费。
发明内容
本发明针对现有技术的不足,提出一种基于Elasticsearch的数据更新方法。
本发明的目的是通过以下技术方案来实现的:一种数据更新方法,该方法包括以下步骤:
步骤一:在数据记录上添加业务数据版本号out_version。
步骤二:同步业务数据版本号out_version和Elasticsearch的内部版本号_version。
步骤三:执行实际的业务数据更新操作。
步骤四:在业务数据更新操作完成以后,通过对比业务数据版本号out_version和内部版本号_version的值来判断数据是否实际发生更新。
进一步地,步骤一中,将业务数据版本号out_version初始化为1。
进一步地,步骤二中,同步业务数据版本号out_version和Elasticsearch的内部版本号_version的方法具体为:首先获得数据记录的内部版本号_version,假定为n,然后对该数据记录做一次更新操作,更新内容为out_version=n+1,使得更新后业务数据版本号out_version等于内部版本号_version。
进一步地,步骤四具体为:如果业务数据版本号out_version等于内部版本号_version,则判断业务数据没有发生实际更新;如果业务数据版本号out_version小于内部版本号_version,则判断业务数据发生了实际更新。
进一步地,步骤四中,对判断为实际更新的数据打上一个时间标记,表示该数据在此次数据处理周期中发生了实际更新。
进一步地,在下一个数据处理周期到来时,重复执行步骤二、三和四,即可再次指出此次数据处理周期中实际发生更新的数据记录。
本发明的有益效果是:本发明结合elasticsearch自身的系统特点,提出了一种数据更新方法,在数据处理流程源头即可判断和标识出实际更新的数据,从而减少了数据处理流程下游的数据处理量,大大减少了计算系统的资源浪费。
附图说明
图1为本发明数据更新方法流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
如图1所示,本发明提出的一种数据更新方法,该方法结合Elasticsearch的数据内部版本号_version和自定义的业务数据版本号的同步,更新,对比来判断数据是否发生实际更新。该方法可以重复实施,并保持有效。该方法具体包括以下步骤:
第一步,添加业务数据版本号字段。为了判定数据是否真实更新,在数据记录上添加一个业务数据版本号字段,假定字段名称为out_version,并对out_version做初始化,例如可以直接设置为1。
第二步,同步业务数据版本号和内部版本号_version。方法为:首先获得数据记录的内部版本号_version,假定为n,然后对该数据记录做一次更新操作,更新内容为out_version=n+1(因为业务数据版本号更新操作也会导致_version自增1),使得更新后业务数据版本号out_version=内部版本号_version。
第三步,执行实际的业务数据更新操作。这一步就是原来实际的业务数据更新过程。
第四步,检查和标记实际数据更新。在业务数据更新操作完成以后,通过对比业务数据版本号out_version和内部版本号_version的值是否相等,来确定数据是否实际发生更新,方法是:如果业务数据版本号out_version等于内部版本号_version,则判断业务数据没有发生实际更新;如果业务数据版本号out_version小于内部版本号_version,则判断业务数据发生了实际更新。此时可以对实际更新的数据打上一个时间标记,一般设置为当前时间,表示该数据在此次数据处理周期中发生了实际更新。
该数据更新方法可重复实施,并保持有效的特性。在下一个数据处理周期到来时,重复执行步骤二、三和四,即可再次指出这个处理周期中实际发生更新的数据记录。
以下为一个更为具体的数据更新实例。
假设已经存在索引(index)名为:test_person,已经写入了一条记录,如下:
可以看到,这条数据当前的内部标记号(_id)为2,内部版本号(_version)为4。
为了追踪这条数据的实际更新情况,第一步,添加业务数据版本号字段。不失一般性,设定业务数据版本号字段名称为out_version,并设置初始值为1。操作如下:
此时,再看这条数据,因为新增了一个字段,内部版本号(_version)更新为5。数据如下:
第二步,同步业务数据版本号和内部版本号。令业务数据版本号out_version=6,方法如下:
再查看该条数据,现在业务数据版本号out_version已经和内部版本号(_version)相同,均为6。
第三步,执行实际的业务数据更新操作。现在,我们来执行业务更新,我们把这条记录的age字段变更为28,操作如下:
第四步,检查实际数据更新。此时我们查看这条数据,数据如下:
可见内部版本号(_version)等于7,业务数据版本号out_version等于6,依据规则:如果业务数据版本号out_version等于内部版本号(_version),则判断业务数据没有发生实际更新;如果业务数据版本号out_version小于内部版本号(_version),则判断业务数据发生了实际更新。判定数据发生了实际更新,这个时候我们可以给数据打上更新时间戳,方法如下:
再看数据:
这样就能给这条记录打上更新的标识,来确定数据真实的更新时间,为下游的数据增量处理打下基础。在任何想对数据执行更新操作的时候,只需要顺序执行上述的步骤。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
Claims (6)
1.一种数据更新方法,其特征在于,该方法包括以下步骤:
步骤一:在数据记录上添加业务数据版本号out_version;
步骤二:同步业务数据版本号out_version和Elasticsearch的内部版本号_version;
步骤三:执行实际的业务数据更新操作;
步骤四:在业务数据更新操作完成以后,通过对比业务数据版本号out_version和内部版本号_version的值来判断数据是否实际发生更新。
2.根据权利要求1所述的一种数据更新方法,其特征在于,步骤一中,将业务数据版本号out_version初始化为1。
3.根据权利要求1所述的一种数据更新方法,其特征在于,步骤二中,同步业务数据版本号out_version和Elasticsearch的内部版本号_version的方法具体为:首先获得数据记录的内部版本号_version,假定为n,然后对该数据记录做一次更新操作,更新内容为out_version=n+1,使得更新后业务数据版本号out_version等于内部版本号_version。
4.根据权利要求1所述的一种数据更新方法,其特征在于,步骤四具体为:如果业务数据版本号out_version等于内部版本号_version,则判断业务数据没有发生实际更新;如果业务数据版本号out_version小于内部版本号_version,则判断业务数据发生了实际更新。
5.根据权利要求1所述的一种数据更新方法,其特征在于,步骤四中,对判断为实际更新的数据打上一个时间标记,表示该数据在此次数据处理周期中发生了实际更新。
6.根据权利要求1所述的一种数据更新方法,其特征在于,在下一个数据处理周期到来时,重复执行步骤二、三和四,即可再次指出此次数据处理周期中实际发生更新的数据记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910108124.4A CN109783477B (zh) | 2019-02-02 | 2019-02-02 | 一种数据更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910108124.4A CN109783477B (zh) | 2019-02-02 | 2019-02-02 | 一种数据更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783477A CN109783477A (zh) | 2019-05-21 |
CN109783477B true CN109783477B (zh) | 2019-11-01 |
Family
ID=66503206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910108124.4A Active CN109783477B (zh) | 2019-02-02 | 2019-02-02 | 一种数据更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783477B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442590A (zh) * | 2019-08-06 | 2019-11-12 | 北京三维天地科技有限公司 | 一种用于提供检验检测服务的系统和方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412767A (zh) * | 2013-06-09 | 2013-11-27 | 百度国际科技(深圳)有限公司 | 一种应用版本的识别与升级方法以及系统 |
US9442718B1 (en) * | 2014-02-28 | 2016-09-13 | Ca, Inc. | System for assisting in locating changes in source code version control system |
US10545646B2 (en) * | 2017-02-22 | 2020-01-28 | Foxwordy Inc. | Enabling and disabling one-click clauses |
CN108769172A (zh) * | 2018-05-21 | 2018-11-06 | 杭州有赞科技有限公司 | 一种数据同步方法及系统 |
-
2019
- 2019-02-02 CN CN201910108124.4A patent/CN109783477B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109783477A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346381B2 (en) | Atomic update operations in a data storage system | |
CN104881285B (zh) | 基于本体的代码片段标注与重用系统 | |
Xiang et al. | Detecting data inconsistency based on the unfolding technique of petri nets | |
CN103838672A (zh) | 一种通用报表的自动化测试方法及装置 | |
CN110457260A (zh) | 文件处理方法、装置、设备及计算机可读存储介质 | |
CN108388515A (zh) | 测试数据生成方法、装置、设备以及计算机可读存储介质 | |
US10198346B1 (en) | Test framework for applications using journal-based databases | |
CN108536745A (zh) | 基于Shell的数据表提取方法、终端、设备及存储介质 | |
CN108021509B (zh) | 基于程序行为网络聚合的测试用例动态排序方法 | |
CN103606032B (zh) | 一种二维电网gis数据集中的方法 | |
CN111159040A (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
CN110109978A (zh) | 基于指标的数据分析方法、装置、服务器及可读存储介质 | |
CN110297820A (zh) | 一种数据处理方法、装置、设备和存储介质 | |
CN107357721B (zh) | 测试系统的方法及装置 | |
CN109783477B (zh) | 一种数据更新方法 | |
CN109214640B (zh) | 指标结果的确定方法、设备及计算机可读存储介质 | |
CN114386853A (zh) | 基于通用审核模型的数据审核处理方法、装置及设备 | |
CN112749167A (zh) | 确定断链数据的方法、装置及非易失性存储介质 | |
CN106294115A (zh) | 一种应用系统迁移性的测试方法及装置 | |
CN115345600B (zh) | 一种rpa流程的生成方法和装置 | |
CN106055640A (zh) | 缓存的管理方法及系统 | |
Karami et al. | Maintaining accurate web usage models using updates from activity diagrams | |
CN109597706A (zh) | 一种核对差异数据的检测方法、装置及系统 | |
CN115757304A (zh) | 一种日志存储方法、装置、系统、电子设备及存储介质 | |
CN114741276A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 7 / F, building B, 482 Qianmo Road, Xixing street, Binjiang District, Hangzhou City, Zhejiang Province 310000 Patentee after: Huoshi Creation Technology Co.,Ltd. Address before: 7 / F, building B, 482 Qianmo Road, Xixing street, Binjiang District, Hangzhou City, Zhejiang Province 310000 Patentee before: HANGZHOU FIRESTONE TECHNOLOGY Co.,Ltd. |