CN112395360B - 基于非关系型数据库的数据同步方法、设备、装置和介质 - Google Patents
基于非关系型数据库的数据同步方法、设备、装置和介质 Download PDFInfo
- Publication number
- CN112395360B CN112395360B CN202011381742.5A CN202011381742A CN112395360B CN 112395360 B CN112395360 B CN 112395360B CN 202011381742 A CN202011381742 A CN 202011381742A CN 112395360 B CN112395360 B CN 112395360B
- Authority
- CN
- China
- Prior art keywords
- log
- data
- key
- relational database
- index
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供的基于非关系型数据库的数据同步方法、设备、装置和介质,通过获取关系型数据库中数据的变化日志,然后根据数据变换日志中的各联合主键生成日志的索引主键,然后在非关系型数据库中根据日志中的数据,对非关系型数据库中的数据进行更新,以实现非关系型数据库与关系型数据库的同步,并且在数据库同步的过程中,不需要对关系型数据库中数据所存放的表结构进行修改,避免了数据表结构修改过程中大量数据的割接及修改从而导致数据库同步的时间增长与工作量的加大的问题。
Description
技术领域
本申请涉及数据库处理技术领域,尤其涉及一种基于非关系型数据库的数据同步方法、设备、装置和介质。
背景技术
目前,提供了关系型数据库和非关系型数据库可以存储数据;可以将关系型数据库中的数据同步到非关系型数据库中,以加快数据检索的效率。
现有技术中,可以取消关系型数据库所存储的数据的联合主键,为关系型数据库所存储的数据生成一个新的索引键,进而将具有索引键的数据同时存储于关系型数据库和非关系型数据库中,进而便于实现关系型数据库与非关系型数据库之间的数据同步。
然而,上述方式中需要取消关系型数据库所存储的数据的联合主键,为关系型数据库所存储的数据生成一个新的索引键,进而需要修改关系型数据库所存储的数据的结构,从而带来了大量的数据的割接以及修改过程,增加了数据库同步的时间与工作量。
发明内容
本申请提供的基于非关系型数据库的数据同步方法、设备、装置和介质,用以解决关系型数据库与非关系型数据库在同步过程中,需要对关系数据库的联合主键进行修改从而导致数据表的结构发生更改,增加了数据库同步的时间机工作量的问题。
第一方面,本申请提供一种基于非关系型数据库的数据同步方法,所述方法包括:
获取关系型数据库的数据变换日志表,其中,所述数据变换日志表包括至少一条日志,每条日志中包括数据,所述数据中具有至少一个联合主键;
根据所述日志中的各联合主键,生成所述日志的索引主键;
根据所述日志的数据,同步更新非关系型数据库中的存储数据,其中,所述非关系型数据库中多条存储数据,每条存储数据具有对应的索引主键。
在一种可能的设计中,根据所述日志中的各联合主键,生成所述日志的索引主键,包括:
将所述日志中的各联合主键进行拼接,得到所述日志的拼接主键;
根据对所述日志的拼接主键进行格式处理,得到所述日志的索引主键,其中,不同日志的索引主键的长度相同。
在一种可能的设计中,根据对所述日志的拼接主键进行格式处理,得到所述日志的索引主键,包括:
依据消息摘要算法对所述日志的拼接主键进行格式处理,得到所述日志的索引主键。
在一种可能的设计中,获取关系型数据库的数据变换日志表,包括:
通过数据传输服务监控所述关系型数据库中的关系型数据的变化情况,得到所述每条日志;
将所述每条日志存储至消息队列中,以得到所述数据变换日志表。
在一种可能的设计中,所述每条日志具有操作类型;所述操作类型为以下的任意一种:删除、增加、修改。
在一种可能的设计中,根据所述日志的数据,同步更新非关系型数据库中的存储数据,包括:
若所述日志的操作类型为修改或删除,则根据所述日志的索引主键,确定非关系型数据库中与所述日志的索引主键对应的索引主键,则根据所述日志的数据,同步更新与所述日志的索引主键对应的索引主键下的存储数据;
若所述日志的操作类型为增加,则在所述非关系型数据库中增加一条存储数据,该存储数据为所述日志的数据,并根据所述日志中的各联合主键生成该存储数据的索引主键。
在一种可能的设计中,所述方法还包括:
获取检索指令,并根据所述检索指令所指示的内容,确定所述非关系型数据库中存储数据的分库键或索引键;
根据所述分库键或索引键,确定所述关系型数据库中的与所述分库键或索引键匹配的关系型数据。
在一种可能的设计中,所述方法还包括:
获取检索指令,并根据所述检索指令所指示的内容,确定所述非关系型数据库中存储数据的索引主键;
对所述非关系型数据库中存储数据的索引主键进行拆解,得到拆解所得到的联合主键;
根据所述拆解所得到的联合主键,确定所述关系型数据库中的与所述拆解所得到的联合主键对应的关系型数据。
第二方面,本申请提供一种基于非关系型数据库的数据同步装置,所述装置包括:
第一获取单元,用于获取关系型数据库的数据变换日志表,其中,所述数据变换日志表包括至少一条日志,每条日志中包括数据,所述数据中具有至少一个联合主键;
生成单元,用于根据所述日志中的各联合主键,生成所述日志的索引主键;
同步单元,用于根据所述日志的数据,同步更新非关系型数据库中的存储数据,其中,所述非关系型数据库中多条存储数据,每条存储数据具有对应的索引主键。
在一种可能的设计中,所述生成单元,包括:
第一处理模块,用于将所述日志中的各联合主键进行拼接,得到所述日志的拼接主键;
第二处理模块,用于根据对所述日志的拼接主键进行格式处理,得到所述日志的索引主键,其中,不同日志的索引主键的长度相同。
在一种可能的设计中,所述第二处理模块,具体用于,
依据消息摘要算法对所述日志的拼接主键进行格式处理,得到所述日志的索引主键。
在一种可能的设计中,所述第一获取单元,包括:
第一获取模块,用于通过数据传输服务监控所述关系型数据库中的关系型数据的变化情况,得到所述每条日志;
第二获取模块,用于将所述每条日志存储至消息队列中,以得到所述数据变换日志表。
在一种可能的设计中,所述每条日志具有操作类型;所述操作类型为以下的任意一种:删除、增加、修改。
在一种可能的设计中,所述同步单元,包括:
第一同步模块,用于若所述日志的操作类型为修改或删除,则根据所述日志的索引主键,确定非关系型数据库中与所述日志的索引主键对应的索引主键,则根据所述日志的数据,同步更新与所述日志的索引主键对应的索引主键下的存储数据;
第二同步模块,用于若所述日志的操作类型为增加,则在所述非关系型数据库中增加一条存储数据,该存储数据为所述日志的数据,并根据所述日志中的各联合主键生成该存储数据的索引主键。
在一种可能的设计中,所述装置,还包括:
第二获取单元,用于获取检索指令,并根据所述检索指令所指示的内容,确定所述非关系型数据库中存储数据的分库键或索引键;
第一确定单元,用于根据所述分库键或索引键,确定所述关系型数据库中的与所述分库键或索引键匹配的关系型数据。
在一种可能的设计中,所述装置,还包括:
第三获取单元,用于获取检索指令,并根据所述检索指令所指示的内容,确定所述非关系型数据库中存储数据的索引主键;
插解单元,用于对所述非关系型数据库中存储数据的索引主键进行拆解,得到拆解所得到的联合主键;
第二确定单元,用于根据所述拆解所得到的联合主键,确定所述关系型数据库中的与所述拆解所得到的联合主键对应的关系型数据。
第三方面,本申请提供一种电子设备,包括:处理器和存储器;
其中,所述存储器存储有可被所述处理器执行的指令,所述指令被所述处理器执行时,使所述处理器执行如第一方面的任一项提供的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面的任一项提供的方法。
本申请提供的基于非关系型数据库的数据同步方法、设备、装置和介质,通过获取关系型数据库的数据变化日志,然后根据数据变换日志中的各联合主键生成日志的索引主键,然后在非关系型数据库中根据日志中的数据,对非关系型数据库中的数据进行更新,以实现非关系型数据库与关系型数据库的同步,并且在数据库同步的过程中,不需要对关系型数据库中数据所存放的表结构进行修改,避免了数据表结构修改过程大量数据的割接及修改从而导致数据库同步的时间增长与工作量的加大。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种基于非关系型数据库的数据同步方法的流程示意图;
图2为本申请实施例提供的另一种基于非关系型数据库的数据同步方法的流程示意图;
图3为本申请实施例提供的一种基于非关系型数据库的数据同步装置的结构示意图;
图4为本申请实施例提供的另一种基于非关系型数据库的数据同步装置的结构示意图;
图5为本申请实施例中提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
目前,在对数据进行存储时,一般可以将数据存储到关系型数据库中。然而,随着关系型数据库中数据的不断增加,后续对关系型数据库中的数据进行检索的时候会增加检索的时间。为了提升数据检索的效率,可以将关系型数据库中的数据同步到非关系型数据库中,以加快检索效率。
一个示例中,在对关系型数据库与非关系型数据库进行同步的过程中,由于在非关系型数据库中,不支持联合主键,所以需要取消关系型数据库中数据表的联合主键,生成一个新的主键,即需要对关系型数据库中的表结构进行修改。然而,修改关系型数据库中表结构时,需要对表中的数据进行割接处理,而数据的割接处理会可能会导致数据的丢失,并且增加相应的程序修改以及数据的全量的回归测试等额外的工作量,使得关系型数据库与非关系型数据库同步时间加长。此外,取消联合主键重新生成一个主键无法保证表的唯一性。
本申请提供的一种基于非关系型数据库的数据同步方法、设备、装置和介质,旨在解决如上技术问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为本申请实施例提供的一种基于非关系型数据库的数据同步方法的流程示意图。如图1所示,该方法包括:
101、获取关系型数据库的数据变换日志表,其中,数据变换日志表包括至少一条日志,每条日志中包括数据,数据中具有至少一个联合主键。
示例性地,在关系型数据库和非关系型数据库中可以存储相同的数据,其中,基于非关系型数据库进行数据的检索,检索效率较高。在关系型数据库中的数据发生变化时,需要将数据同步到非关系型数据库中。
在关系型数据库中的关系型数据具有至少一个联合主键,并且,关系型数据可以由多个数据构成,其中,关系型数据的联合主键可以是关系型数据中的数据。
在同步关系型数据库与非关系型数据库时,首先需要获取到关系型数据库中发生了变化的数据,进而由这些数据构成数据变换日志表,其中,数据变换日志表包含有一条或多条日志,每条日志中都包含了变换的数据,而且变换的数据中也包括了变换后的数据的联合主键,此处对关系型数据库的类型不做限制。
一个示例中,在对关系型数据库中的数据进行变换时,关系型数据库会依据操作员的变换指令进行数据的修改,因此可以根据操作员的变换指令,获取关系型数据库的数据变换日志表。
一个示例中,可以通过日志收集系统对关系型数据库中的数据变换进行采集,从而获取到关系型数据库的数据变换日志表。
102、根据日志中的各联合主键,生成日志的索引主键。
示例性地,获取到关系型数据库的数据变换日志表之后,针对于每条日志中的联合主键都生成一个对应的日志的索引主键,并将生成的日志的索引主键对应存储到每条日志中。
一个示例中,在生成每一条日志的索引主键时,可以将每一条日志中的联合主键所应数据进行拼接,将拼接后所得到的数据作为每一日志的索引主键。
一个示例中,在生成每一条日志的索引主键时,可以将每一条日志中的联合主键所应的数据进行逻辑运算处理,将逻辑运算处理后的数据作为每一日志的索引主键。
103、根据日志的数据,同步更新非关系型数据库中的存储数据,其中,非关系型数据库中多条存储数据,每条存储数据具有对应的索引主键。
示例性地,在非关系数据库中包括有与关系型数据库中一条或多条相同的存储数据,并且每条存储数据都具有各自对应的索引主键作为其唯一标识。在非关系型数据库可以通过每一条日志中的数据查找到非关系型数据库中需要更新的存储数据,其中每条存储数据都具有各自对应的索引主键,然后将每一日志中的数据同步更新于非关系型数据库的存储数据中,此处对非关系型数据库的类型不做限制。
一个示例中,在非关系型数据库可以将在存储数据中的索引主键中查找出与日志的索引主键相同主键,并根据查找到的存储数据的索引主键找出对应的存储数据,然后将日志的数据同步更新到非关系型数据库中的存储数据中。
本申请实施例,通过获取关系型数据库的数据变换日志表,并且将数据变换日志表中的每一条日志中的数据的联合主键都对应的生成每一个日志的索引主键。在非关系型数据库获取到数据变换日志表与每条日志的索引主键之后,可以在非关系型数据库中查找到非关系型数据库中需要更新的存储数据,并根据日志中的数据同步更新非关系型数据库中的存储数据,实现了关系型数据库与非关系型数据的同步,并且在同步的过程中,不需要取消关系型数据库中的数据表的联合主键以及更改关系型数据库中的数据表的结构,避免了由于取消关系型数据库的联合主键后重新生成一个主键而导致表的唯一约束无法满足的问题,同时也避免了在修改表结构的过程中所带来的大量的数据割接操作、全量回归测试以及相应程序的修改等工作。本实施例可以有效的减少数据库同步的时间及工作量。
图2为本申请实施例提供的另一种基于非关系型数据库的数据同步方法的流程示意图。如图2所示,方法包括:
201、通过数据传输服务监控关系型数据库中的关系型数据的变化情况,得到每条日志。
一个示例中,每条日志具有操作类型;操作类型为以下的任意一种:删除、增加、修改。
示例性地,为了提高数据的检索效率,可以将关系型数据库中的一条或多条相同的数据存储到非关系型数据库中,并且在非关系型数据库中,每条数据都设置有其各自的索引作为每一条数据的标识。在关系型数据库中的数据发生变化时,需要将数据同步到非关系型数据库中。在关系型数据库中的关系型数据具有至少一个联合主键,并且,关系型数据可以由多个数据构成,其中,关系型数据的联合主键可以是关系型数据中的数据。
在对同步关系型数据库与非关系型数据库进行同步操作时,首先可以根据数据传输服务实时监控与其建立连接的关系型数据库中的数据的变化情况,并将关系型数据库中变化的数据都存放到每条日志中。此外,数据传输服务还可以获取关系型数据库中数据的操作类型,并将数据的操作类型对应的存储到日志中,其中,具体的操作类型可分为:删除、增加、修改,每次变化操作可以为以上操作类型中的任一种。
202、将每条日志存储至消息队列中,以得到数据变换日志表。
示例性地,数据传输服务在获取到每条日志之后,会将获取到的每条日志按照变换时间地先后次序存储到消息队列主题中去,得到数据变换日志表。
203、将日志中的各联合主键进行拼接,得到日志的拼接主键。
示例性地,将消息队列主题中依照存储时间的先后次序提取每条日志,并对每一条日志中的联合主键所对应的数据进行拼接处理,得到每一条日志的拼接主键。
204、根据对日志的拼接主键进行格式处理,得到日志的索引主键,其中,不同日志的索引主键的长度相同。
一个示例中,步骤204具体包括:依据消息摘要算法对日志的拼接主键进行格式处理,得到日志的索引主键。
示例性地,对步骤203得到的每一条日志的拼接主键进行格式处理,使得格式处理后的每一拼接主键具有相同的长度,并将处理后的每一拼接主键作为每一条日志的索引主键。
示例性地,对于每一条日志的拼接主键都依据消息摘要算法进行数据填充,长度扩展以及一系列的逻辑运算,最终得到每一个固定长度的数据,将每一固定长度数据作为每一条日志的索引主键。
一个示例中,可以通过数据压缩技术每一拼接主键进行长度的压缩处理,使得压缩处理后的每一拼接主键都具有相同的长度。
205、若日志的操作类型为修改或删除,则根据日志的索引主键,确定非关系型数据库中与日志的索引主键对应的索引主键,则根据日志的数据,同步更新与日志的索引主键对应的索引主键下的存储数据。
示例性地,由于在对非关系型数据库中的数据进行存储时,通过上述步骤204和步骤205为每一条存储数据生成了各自的索引主键,并且日志的索引主键也是通过步骤204和步骤205生成的,因此在非关系型数据库接收到日志中的操作类型为修改时,则可以非关系型数据库中查找与日志的索引主键相同的非关系型数据库的索引主键,进而确定非关系型数据库中查找到的索引主键所对应的存储数据需要修改,并将日志中的数据更新到非关系型数据库中的存储数据中去,使得关系型数据库与非关系型数据库实现同步。
当非关系型数据库接收到的日志中的操作类型为删除时,则去非关系型数据库中查找与日志的索引主键相同的非关系型数据库的索引主键,进而确定非关系型数据库中查找到的索引主键所对应的存储数据需要删除,并根据日志中的数据删除非关系型数据库中对应的存储数据,使得关系型数据库与非关系型数据库实现同步。
206、若日志的操作类型为增加,则在非关系型数据库中增加一条存储数据,该存储数据为日志的数据,并根据日志中的各联合主键生成该存储数据的索引主键。
示例性地,当非关系型数据库接收到的日志中的操作类型为增加时,则需要在非关系型数据库中增加存储数据,即需要将日志中的数据存储到非关系型数据库中,并且将日志中各联合主键生成的日志的索引主键也增加到非关系型数据库中,作为非关系型数据库中的索引主键。
其中,本实施例还可以执行步骤207-208,或者,执行步骤209-211。
207、获取检索指令,并根据检索指令所指示的内容,确定非关系型数据库中存储数据的分库键或索引键。
示例性地,在关系型数据库与非关系型数据库实现同步之后,也可以在非关系型数据库中对数据进行检索。具体的,在非关系型数据库接收到检索指令之后,会根据检索指令中的内容,去非关系型数据库中的存储数据中查找,若查找到的存储数据中包含了所需要的全部信息,此时检索过程结束。由于关系型数据库中的联合主键中可能包含了分库键或索引键,该分库键或索引键为关系型数据库中其余的一个或多个数据表的主键,并且关系型数据库中的联合主键在非关系型数据库中以普通字段的形式进行存储,所以若在非关系型数据库中查找到的存储数据中未包含有所需的全部信息,则表明联合主键中包含有分库键或索引键,从而可以在检索到的存储数据中找出分库键或索引键。
208、根据分库键或索引键,确定关系型数据库中的与分库键或索引键匹配的关系型数据。
示例性地,在步骤207之后,根据获取到的分库键或索引键去关系型数据库中查找到与分库键或索引键所对应的关系型数据库所对应的关系型数据。
209、获取检索指令,并根据检索指令所指示的内容,确定非关系型数据库中存储数据的索引主键。
示例性地,实现关系型数据库与非关系型数据库同步之后,也可以在非关系型数据库中对数据进行检索。具体的,在非关系型数据库接收到检索指令之后,会根据检索指令中的内容,去非关系型数据库中查找到对应的存储数据,由于非关系型数据库中每条存储数据与索引主键一一对应,因此可以根据查找到的存储数据确定存储数据所对应的索引主键。
210、对非关系型数据库中存储数据的索引主键进行拆解,得到拆解所得到的联合主键。
示例性地,在获取存储数据所对应的索引主键之后,由于非关系型数据库中的索引主键是通过日志中的联合主键变换得到的,因此可以对索引主键进行拆解,通过对索引主键的拆解可以还原得到存储数据所对应的关系型数据库中的联合主键。
211、根据拆解所得到的联合主键,确定关系型数据库中的与拆解所得到的联合主键对应的关系型数据。
示例性地,在得到关系型数据库中的联合主键之后,由于在关系型数据库中,每条数据都包含有联合主键,因此可以根据关系型数据库中的联合主键在关系型数据库中进行检索,以得到联合主键所对应的关系型数据库中的关系型数据。
本申请实施例所提供的方法,通过数据传输服务可以实时获取关系型数据库中数据的变化以及数据的操作类型。通过数据传输服务可以降低关系型数据库与非关系型数据库同步的时延。此外,数据传输服务还可以将获取到的变化的数据以及操作类型生成数据的变换日志表,并存储到消息队列中去。之后依据消息队列中的时序关系,可以将数据变换日志表中每条日志所对应的联合主键进行拼接之后再进行格式化的处理,使得所得到的日志的索引主键具有相同的长度,避免索引主键过长超出了规定的存储长度。非关系型数据库确定根据日志中的操作类型为修改或删除,则可以直接通过日志表的索引键与非关系型数据库的索引键向匹配后,将日志中的数据同步到非关系型数据库中对应的存储数据中去。若日志的操作类型为增加,则可以直接将日志中的数据以及生成的日志的索引主键存储到非关系型数据库中。通过上述方法可以在不破坏关系型数据库中的数据表的联合主键以及关系型数据库中的数据表的结构情况下,实现关系型数据库与非关系型数据库的同步,避免了由于取消关系型数据库的联合主键后重新生成一个主键而导致的表的唯一约束无法满足的问题,同时也避免了在修改表结构的过程中所带来的大量的数据割接操作、全量回归测试以及相应程序的修改等工作,有效的减少数据库同步的时间及工作量。在实际的数据检索过程中,可以先在非关系型数据库中进行检索,若在检索过程中发现检索得到的数据段中存在有分库键或索引键,则可以根据分库键或索引键去关系型数据库中二次查找,提高了检索的效率。
图3为本申请实施例提供的一种基于非关系型数据库的数据同步装置的结构示意图。如图3所示,该装置包括:
第一获取单元31,用于获取关系型数据库的数据变换日志表,其中,数据变换日志表包括至少一条日志,每条日志中包括数据,数据中具有至少一个联合主键。
生成单元32,用于根据日志中的各联合主键,生成日志的索引主键。
同步单元33,用于根据日志的数据,同步更新非关系型数据库中的存储数据,其中,非关系型数据库中多条存储数据,每条存储数据具有对应的索引主键。
本实施例提供的装置,用于实现上述方法提供的技术方案,其实现原理和技术效果类似,不再赘述。
图4为本申请实施例提供的另一种基于非关系型数据库的数据同步装置的结构示意图。在图3的基础上,如图4所示,本实施例提供的装置中,生成单元32,包括:
第一处理模块321,用于将日志中的各联合主键进行拼接,得到日志的拼接主键。
第二处理模块322,用于根据对日志的拼接主键进行格式处理,得到日志的索引主键,其中,不同日志的索引主键的长度相同。
一个示例中,第二处理模块322,具体用于:
依据消息摘要算法对日志的拼接主键进行格式处理,得到日志的索引主键。
一个示例中,第一获取单元31,包括:
第一获取模块311,用于通过数据传输服务监控关系型数据库中的关系型数据的变化情况,得到每条日志。
第二获取模块312,用于将每条日志存储至消息队列中,以得到数据变换日志表。
一个示例中,每条日志具有操作类型;操作类型为以下的任意一种:删除、增加、修改。
一个示例中,同步单元33,包括:
第一同步模块331,用于若日志的操作类型为修改或删除,则根据日志的索引主键,确定非关系型数据库中与日志的索引主键对应的索引主键,则根据日志的数据,同步更新与日志的索引主键对应的索引主键下的存储数据。
第二同步模块332,用于若日志的操作类型为增加,则在非关系型数据库中增加一条存储数据,该存储数据为日志的数据,并根据日志中的各联合主键生成该存储数据的索引主键。
一个示例中,装置,还包括:
第二获取单元34,用于获取检索指令,并根据检索指令所指示的内容,确定非关系型数据库中存储数据的分库键或索引键。
第一确定单元35,根据分库键或索引键,确定关系型数据库中的与分库键或索引键匹配的关系型数据。
一个示例中,装置,还包括:
第三获取单元36,用于获取检索指令,并根据检索指令所指示的内容,确定非关系型数据库中存储数据的索引主键。
插解单元37,用于对非关系型数据库中存储数据的索引主键进行拆解,得到拆解所得到的联合主键。
第二确定单元38,用于根据拆解所得到的联合主键,确定关系型数据库中的与拆解所得到的联合主键对应的关系型数据。
本实施例提供的装置,用于实现上述方法提供的技术方案,其实现原理和技术效果类似,不再赘述。
图5为本申请实施例中提供的一种电子设备的结构示意图,如图5所示,该电子设备包括:
处理器(processor)291,电子设备还包括了存储器(memory)292;还可以包括通信接口(Communication Interface)293和总线294。其中,处理器291、存储器292、通信接口293、可以通过总线294完成相互间的通信。通信接口293可以用于信息传输。处理器291可以调用存储器294中的逻辑指令,以执行上述实施例的方法。
此外,上述的存储器292中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器292作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本申请实施例中的方法对应的程序指令/模块。处理器291通过运行存储在存储器292中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的方法。
存储器292可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器292可以包括高速随机存取存储器,还可以包括非易失性存储器。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现上述实施例提供的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (16)
1.一种基于非关系型数据库的数据同步方法,其特征在于,所述方法包括:
获取关系型数据库的数据变换日志表,其中,所述数据变换日志表包括至少一条日志,每条日志中包括数据,所述数据中具有至少一个联合主键;
根据所述日志中的各联合主键,生成所述日志的索引主键;
根据所述日志的数据,同步更新非关系型数据库中的存储数据,其中,所述非关系型数据库中多条存储数据,每条存储数据具有对应的索引主键;
根据所述日志中的各联合主键,生成所述日志的索引主键,包括:
将所述日志中的各联合主键进行拼接,得到所述日志的拼接主键;
根据对所述日志的拼接主键进行格式处理,得到所述日志的索引主键,其中,不同日志的索引主键的长度相同。
2.根据权利要求1所述的方法,其特征在于,根据对所述日志的拼接主键进行格式处理,得到所述日志的索引主键,包括:
依据消息摘要算法对所述日志的拼接主键进行格式处理,得到所述日志的索引主键。
3.根据权利要求1所述的方法,其特征在于,获取关系型数据库的数据变换日志表,包括:
通过数据传输服务监控所述关系型数据库中的关系型数据的变化情况,得到所述每条日志;
将所述每条日志存储至消息队列中,以得到所述数据变换日志表。
4.根据权利要求1所述的方法,其特征在于,所述每条日志具有操作类型;所述操作类型为以下的任意一种:删除、增加、修改。
5.根据权利要求4所述的方法,其特征在于,根据所述日志的数据,同步更新非关系型数据库中的存储数据,包括:
若所述日志的操作类型为修改或删除,则根据所述日志的索引主键,确定非关系型数据库中与所述日志的索引主键对应的索引主键,则根据所述日志的数据,同步更新与所述日志的索引主键对应的索引主键下的存储数据;
若所述日志的操作类型为增加,则在所述非关系型数据库中增加一条存储数据,该存储数据为所述日志的数据,并根据所述日志中的各联合主键生成该存储数据的索引主键。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
获取检索指令,并根据所述检索指令所指示的内容,确定所述非关系型数据库中存储数据的分库键或索引键;
根据所述分库键或索引键,确定所述关系型数据库中的与所述分库键或索引键匹配的关系型数据。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
获取检索指令,并根据所述检索指令所指示的内容,确定所述非关系型数据库中存储数据的索引主键;
对所述非关系型数据库中存储数据的索引主键进行拆解,得到拆解所得到的联合主键;
根据所述拆解所得到的联合主键,确定所述关系型数据库中的与所述拆解所得到的联合主键对应的关系型数据。
8.一种基于非关系型数据库的数据同步装置,其特征在于,所述装置包括:
第一获取单元,用于获取关系型数据库的数据变换日志表,其中,所述数据变换日志表包括至少一条日志,每条日志中包括数据,所述数据中具有至少一个联合主键;
生成单元,用于根据所述日志中的各联合主键,生成所述日志的索引主键;
同步单元,用于根据所述日志的数据,同步更新非关系型数据库中的存储数据,其中,所述非关系型数据库中多条存储数据,每条存储数据具有对应的索引主键;
所述生成单元,包括:
第一处理模块,用于将所述日志中的各联合主键进行拼接,得到所述日志的拼接主键;
第二处理模块,用于根据对所述日志的拼接主键进行格式处理,得到所述日志的索引主键,其中,不同日志的索引主键的长度相同。
9.根据权利要求8所述的装置,其特征在于,所述第二处理模块,具体用于:
依据消息摘要算法对所述日志的拼接主键进行格式处理,得到所述日志的索引主键。
10.根据权利要求8所述的装置,其特征在于,所述第一获取单元,包括:
第一获取模块,用于通过数据传输服务监控所述关系型数据库中的关系型数据的变化情况,得到所述每条日志;
第二获取模块,用于将所述每条日志存储至消息队列中,以得到所述数据变换日志表。
11.根据权利要求8所述的装置,其特征在于,所述每条日志具有操作类型;所述操作类型为以下的任意一种:删除、增加、修改。
12.根据权利要求11所述的装置,其特征在于,所述同步单元,包括:
第一同步模块,用于若所述日志的操作类型为修改或删除,则根据所述日志的索引主键,确定非关系型数据库中与所述日志的索引主键对应的索引主键,则根据所述日志的数据,同步更新与所述日志的索引主键对应的索引主键下的存储数据;
第二同步模块,用于若所述日志的操作类型为增加,则在所述非关系型数据库中增加一条存储数据,该存储数据为所述日志的数据,并根据所述日志中的各联合主键生成该存储数据的索引主键。
13.根据权利要求8-12任一项所述的装置,其特征在于,所述装置,还包括:
第二获取单元,用于获取检索指令,并根据所述检索指令所指示的内容,确定所述非关系型数据库中存储数据的分库键或索引键;
第一确定单元,用于根据所述分库键或索引键,确定所述关系型数据库中的与所述分库键或索引键匹配的关系型数据。
14.根据权利要求8-12任一项所述的装置,其特征在于,所述装置,还包括:
第三获取单元,用于获取检索指令,并根据所述检索指令所指示的内容,确定所述非关系型数据库中存储数据的索引主键;
插解单元,用于对所述非关系型数据库中存储数据的索引主键进行拆解,得到拆解所得到的联合主键;
第二确定单元,用于根据所述拆解所得到的联合主键,确定所述关系型数据库中的与所述拆解所得到的联合主键对应的关系型数据。
15.一种电子设备,其特征在于,包括:处理器和存储器;
其中,所述存储器存储有可被所述处理器执行的指令,所述指令被所述处理器执行时,使所述处理器执行权利要求1-7任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011381742.5A CN112395360B (zh) | 2020-12-01 | 2020-12-01 | 基于非关系型数据库的数据同步方法、设备、装置和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011381742.5A CN112395360B (zh) | 2020-12-01 | 2020-12-01 | 基于非关系型数据库的数据同步方法、设备、装置和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112395360A CN112395360A (zh) | 2021-02-23 |
CN112395360B true CN112395360B (zh) | 2023-06-23 |
Family
ID=74604044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011381742.5A Active CN112395360B (zh) | 2020-12-01 | 2020-12-01 | 基于非关系型数据库的数据同步方法、设备、装置和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112395360B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113505173B (zh) * | 2021-07-08 | 2024-03-19 | 上海卓钢链科技有限公司 | 一种数据采集同步系统与同步方法 |
CN114116821B (zh) * | 2021-11-26 | 2024-05-10 | 山东浪潮科学研究院有限公司 | 基于时序数据库的能源监测数据存储方法、设备及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268272A (zh) * | 2014-10-14 | 2015-01-07 | 青岛海尔软件有限公司 | 一种数据唯一性检查方法及装置 |
CN104301360A (zh) * | 2013-07-19 | 2015-01-21 | 阿里巴巴集团控股有限公司 | 一种日志数据记录的方法、日志服务器及系统 |
CN105205053A (zh) * | 2014-05-30 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 一种数据库增量日志解析方法及系统 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN106960007A (zh) * | 2017-02-28 | 2017-07-18 | 北京京东尚科信息技术有限公司 | 一种数据更新方法、装置及电子设备 |
CN107038162A (zh) * | 2016-02-03 | 2017-08-11 | 滴滴(中国)科技有限公司 | 基于数据库日志的实时数据查询方法和系统 |
CN110543513A (zh) * | 2018-05-29 | 2019-12-06 | 中兴通讯股份有限公司 | 分布式数据库增量数据同步方法、设备及存储介质 |
CN111190904A (zh) * | 2019-12-30 | 2020-05-22 | 四川蜀天梦图数据科技有限公司 | 一种图-关系数据库混合存储的方法和装置 |
CN111291023A (zh) * | 2020-02-09 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种数据迁移的方法、系统、设备以及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032604B (zh) * | 2019-02-02 | 2021-12-07 | 北京奥星贝斯科技有限公司 | 数据存储装置、转译装置及数据库访问方法 |
-
2020
- 2020-12-01 CN CN202011381742.5A patent/CN112395360B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104301360A (zh) * | 2013-07-19 | 2015-01-21 | 阿里巴巴集团控股有限公司 | 一种日志数据记录的方法、日志服务器及系统 |
CN105205053A (zh) * | 2014-05-30 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 一种数据库增量日志解析方法及系统 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN104268272A (zh) * | 2014-10-14 | 2015-01-07 | 青岛海尔软件有限公司 | 一种数据唯一性检查方法及装置 |
CN107038162A (zh) * | 2016-02-03 | 2017-08-11 | 滴滴(中国)科技有限公司 | 基于数据库日志的实时数据查询方法和系统 |
CN106960007A (zh) * | 2017-02-28 | 2017-07-18 | 北京京东尚科信息技术有限公司 | 一种数据更新方法、装置及电子设备 |
CN110543513A (zh) * | 2018-05-29 | 2019-12-06 | 中兴通讯股份有限公司 | 分布式数据库增量数据同步方法、设备及存储介质 |
CN111190904A (zh) * | 2019-12-30 | 2020-05-22 | 四川蜀天梦图数据科技有限公司 | 一种图-关系数据库混合存储的方法和装置 |
CN111291023A (zh) * | 2020-02-09 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种数据迁移的方法、系统、设备以及介质 |
Non-Patent Citations (3)
Title |
---|
An efficient database synchronization algorithm for mobile devices based on Secured Message Digest;V Balakumar等;2012 International Conference on Computing, Electronics and Electrical Technologies (ICCEET);937-942 * |
异构数据库迁移中间件的设计与实现;黄贤旭;中国优秀硕士学位论文全文数据库 (信息科技辑)(第5期);I138-1088 * |
集群环境下分布式索引的实现;翁海星;计算机应用;第36卷(第1期);1-7+12 * |
Also Published As
Publication number | Publication date |
---|---|
CN112395360A (zh) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112395360B (zh) | 基于非关系型数据库的数据同步方法、设备、装置和介质 | |
US9031997B2 (en) | Log file compression | |
CN109542330B (zh) | 数据存储方法、数据查询方法及装置 | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
WO2014148176A1 (ja) | 情報収集システム、情報収集方法、及び記憶媒体 | |
CN112988916B (zh) | 针对Clickhouse的全量和增量同步方法、设备和存储介质 | |
CN102946411A (zh) | 网络同步系统 | |
CN111651519A (zh) | 数据同步方法、数据同步装置、电子设备及存储介质 | |
CN106294769B (zh) | 同步工程数据的方法、系统和装置 | |
CN103823807A (zh) | 一种去除重复数据的方法、装置及系统 | |
CN104991836A (zh) | 恢复数据库的方法、装置及数据库服务器 | |
CN113806301A (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN104462342B (zh) | 数据库快照同步处理方法及装置 | |
US20150039558A1 (en) | Database management method, database system and medium | |
CN110222121A (zh) | 一种基于CDC方式的SQL Server数据库增量同步实现方法及系统 | |
CN111787074A (zh) | 一种文件同步方法及终端 | |
CN110928494A (zh) | 一种虚拟磁盘数据同步服务器、客户端及系统 | |
CN113282643B (zh) | 一种oracle数据库同步环境下的表对比方法及系统 | |
CN112463786B (zh) | 数据同步方法、系统、服务器及存储介质 | |
CN114328464A (zh) | 分布式存储设备的数据维护方法、装置、设备和可读介质 | |
CN110457064B (zh) | 网络割接脚本的生成方法及装置 | |
CN112150102A (zh) | 结合rpa和ai的智能电网信息系统台帐更新方法和装置 | |
CN105550271A (zh) | 一种基于键值对的内存数据库查询方法及装置 | |
CN101447886B (zh) | 一种比较海量数据的方法及装置 | |
CN105765908A (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 |