CN112015716B - 数据库数据迁移方法、装置、介质和电子设备 - Google Patents

数据库数据迁移方法、装置、介质和电子设备 Download PDF

Info

Publication number
CN112015716B
CN112015716B CN202010774424.9A CN202010774424A CN112015716B CN 112015716 B CN112015716 B CN 112015716B CN 202010774424 A CN202010774424 A CN 202010774424A CN 112015716 B CN112015716 B CN 112015716B
Authority
CN
China
Prior art keywords
data
database
thread
threads
amount
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
Application number
CN202010774424.9A
Other languages
English (en)
Other versions
CN112015716A (zh
Inventor
王帅
王颖泽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingbase Information Technologies Co Ltd
Original Assignee
Beijing Kingbase Information Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingbase Information Technologies Co Ltd filed Critical Beijing Kingbase Information Technologies Co Ltd
Priority to CN202010774424.9A priority Critical patent/CN112015716B/zh
Publication of CN112015716A publication Critical patent/CN112015716A/zh
Application granted granted Critical
Publication of CN112015716B publication Critical patent/CN112015716B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本公开涉及数据库技术领域,具体涉及一种数据库数据迁移方法、数据库数据迁移装置以及计算机可读存储介质和电子设备,其中所述方法包括:确定源数据库中每张表的第一数据量;确定线程单次读取的第二数据量;所述第二数据量与计算机资源相关;基于所述第二数据量以及所述每张表的第一数据量,确定所述每张表的数据迁移完所需的线程数;控制启动指定数量的线程,基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库。本公开的实施方案可以提高数据库数据迁移效率。

Description

数据库数据迁移方法、装置、介质和电子设备
技术领域
本公开实施例涉及数据库技术领域,尤其涉及一种数据库数据迁移方法、数据库数据迁移装置,以及实现所述数据库数据迁移方法的计算机可读存储介质和电子设备。
背景技术
数据库(Database)通常按照数据结构来组织,用于存储和管理数据,如关系型数据库管理系统Oracle、支持对可扩展标记语言XML格式文档进行存储和查询等操作的XML数据库等等。
随着信息技术的发展,数据库往往会涉及数据的迁移,例如将数据从一个数据库迁移到另一数据库中。目前相关技术中,数据迁移包括如下的技术手段:通过数据迁移工具进行迁移,这种数据迁移方法是迁移工具通过查询源数据库数据并将数据保存在内存或文件中,然后通过命令复制的方式将内存或文件中的数据插入到目标数据库中。
但是,这种方式存在一些问题,通常这种方式中一个线程读取一张表,在数据库中每张表的数据量不确定的情况下,多线程分配不合理,无法较为合理平衡地利用计算机资源等,导致对于存在大数据量、表约束较多的数据库,数据迁移效率依然偏低。另外,在读取源数据库与写入目标数据库时,迁移工具中存在转码的情况,很难甚至无法保证迁移数据的正确性。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种数据库数据迁移方法、数据库数据迁移装置,以及实现所述数据库数据迁移方法的计算机可读存储介质和电子设备。
第一方面,本公开实施例提供了一种数据库数据迁移方法,包括:
确定源数据库中每张表的第一数据量;
确定线程单次读取的第二数据量;所述第二数据量与计算机资源相关;
基于所述第二数据量以及所述每张表的第一数据量,确定所述每张表的数据迁移完所需的线程数;
控制启动指定数量的线程,基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库。
在本公开的一些实施例中,所述源数据库包括数据库统计信息,所述数据库统计信息包含每张表的数据量;所述确定源数据库中每张表的第一数据量,包括:
获取所述源数据库中的所述数据库统计信息;
基于所述数据库统计信息确定所述源数据库中每张表的第一数据量。
在本公开的一些实施例中,所述计算机资源包括CPU资源、I/O资源和内存资源中的至少一个;和/或,所述指定数量与CPU核数相关,且该指定数量小于等于CPU核数的两倍值;所述确定线程单次读取的第二数据量,包括:
基于所述CPU资源、I/O资源和内存资源中的至少一个确定线程单次读取的第二数据量。
在本公开的一些实施例中,所述基于所述第二数据量以及所述每张表的第一数据量,确定所述每张表的数据迁移完所需的线程数,包括:
确定所述第二数据量是否大于所述每张表的第一数据量;
确定所述第二数据量大于所述每张表的第一数据量时,所述每张表对应的线程数是第一数值;
确定所述第二数据量不大于所述每张表的第一数据量时,所述每张表对应的线程数是第二数值;所述第二数值大于第一数值。
在本公开的一些实施例中,所述每张表对应的线程数是第二数值由以下方式确定:
取余运算所述每张表的第一数据量与所述第二数据量;
确定取余运算的结果是零时,所述每张表对应的线程数是所述每张表的第一数据量与所述第二数据量取模运算的结果;
确定取余运算的结果不是零时,所述每张表对应的线程数是所述每张表的第一数据量与所述第二数据量取模运算的结果再加一。
在本公开的一些实施例中,还包括:
基于所述每张表对应的线程数对每张表中的数据进行分片得到分片数据;其中所述分片数据的片数与该线程数相同;
为各所述分片数据建立查询关键字,基于各所述分片数据的查询关键字构建各所述分片数据的查询SQL并放入队列中;
所述基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库,包括:
基于所述每张表对应的线程数,从所述指定数量的线程中调度与该线程数对应的线程依次从所述队列中获取每张表的各所述分片数据的查询SQL以执行分片数据的查询操作,并将查询结果写入所述目标数据库。
在本公开的一些实施例中,各所述分片数据是所述每张表中的部分行数据,各所述分片数据的所述查询关键字是哈希值,该哈希值由所述部分行数据的唯一标识以及预设哈希函数确定;其中,所述唯一标识用以指示行数据在所述源数据库中的物理存储位置。
在本公开的一些实施例中,还包括:
在所述目标数据库中创建预设约束,所述预设约束被配置为指示所述目标数据库在写入数据时不检查数据完整性;
确定所述源数据库中的数据迁移完之后,更改所述预设约束以启动检查数据完整性。
在本公开的一些实施例中,在所述目标数据库中写入数据之前,还包括:
获取所述源数据库的编码集,将所述目标数据库的编码集设置为与所述源数据库的编码集一致。
在本公开的一些实施例中,还包括:
在所述目标数据库中写入数据之前,获取所述源数据库中每张表的属性信息;
基于所述每张表的属性信息在所述目标数据库中创建所述每张表对应的无日志表;各所述无日志表用以存储对应的每张表的数据;
确定所述源数据库中的数据迁移完之后,将各所述无日志表更改为普通表。
第二方面,本公开实施例提供一种数据库数据迁移装置,包括:
表数据统计模块,用以确定源数据库中每张表的第一数据量;
数据量确定模块,用以确定线程单次读取的第二数据量;所述第二数据量与计算机资源相关;
线程数确定模块,用以基于所述第二数据量以及所述每张表的第一数据量,确定所述每张表的数据迁移完所需的线程数;
数据迁移模块,用以控制启动指定数量的线程,基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库。
第三方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例中所述数据库数据迁移方法的步骤。
第四方面,本公开实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任一实施例中所述数据库数据迁移方法的步骤。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的数据库数据迁移方法、数据库数据迁移装置,以及所述计算机可读存储介质和电子设备,可以先确定源数据库中每张表的第一数据量以及确定线程单次读取的第二数据量,所述第二数据量与计算机资源相关;然后基于所述第二数据量以及所述每张表的第一数据量,确定所述每张表的数据迁移完所需的线程数;最后控制启动指定数量的线程,基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库。这样,本实施例中确定了源数据库中每张表的数据量,同时设置线程单次读取的数据量时考虑计算机资源因素,因此可以较为合理平衡地利用计算机资源以分配迁移完每张表数据的线程数,然后控制启动指定数量的线程,并基于所述每张表对应的线程数调度所述指定数量的线程运行以实现数据迁移,整体上使得数据迁移时的线程分配调度较为合理,在数据迁移时可实现更快速、高可靠性的数据迁移,对于存在大数据量的数据库,可以在很大程度上提高数据迁移效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例的数据库数据迁移方法流程图;
图2为本公开示例性实施例的数据库数据迁移方法流程图;
图3为本公开实施例示出另一数据库数据迁移方法流程图;
图4为本公开具体实施例所示数据库数据迁移具体过程示意图。
图5为本公开实施例的数据库数据迁移装置示意图;
图6为本公开实施例实现数据库数据迁移方法的电子设备示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1为本公开示例性示出的数据库数据迁移方法流程图,如图1所示,该数据库数据迁移方法可以包括下述步骤:
步骤S102:确定源数据库中每张表的第一数据量。
步骤S104:确定线程单次读取的第二数据量。所述第二数据量与计算机资源相关。
可以理解的是,步骤S102和S104可以不分先后顺序执行,也可以并行执行,具体执行时例如可以是响应数据迁移指令而开始执行,当然本实施例中并不限于此。
步骤S106:基于所述第二数据量以及所述每张表的第一数据量,确定所述每张表的数据迁移完所需的线程数。
步骤S108:控制启动指定数量的线程,基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库。
示例性的,线程的数量即所述指定数量可以预先设置,在启动指定数量的线程后,例如启动四个线程,则可以基于所述每张表对应的线程数调度所述四个线程以读取所述每张表中的数据并写入目标数据库。例如数据表A对应线程数是一,数据表B对应线程数是三,那么可以调度四个线程中的一个线程读取数据表A中的数据并写入目标数据库,同时调度其他三个线程读取数据表B中的数据并写入目标数据库。又例如,数据表A对应线程数是二,数据表B对应线程数是三,那么可以调度四个线程中的二个线程读取数据表A中的数据并写入目标数据库,同时调度剩余二个线程读取数据表B中的数据并写入目标数据库,当数据表A中的数据被迁移完时,即读取数据表A的任一个线程空闲时,则调度该空闲的一个线程去读取数据表B中的剩余数据并写入目标数据库。
本公开实施例提供的上述数据库数据迁移方法,数据迁移之前分析了源数据库中每张表的数据量,同时设置线程单次读取的数据量时考虑计算机资源因素,因此可以较为合理平衡地利用计算机资源以分配迁移完每张表数据的线程数,然后控制启动指定数量的线程,并基于所述每张表对应的线程数调度所述指定数量的线程运行以实现数据迁移,整体上使得数据迁移时的线程分配调度较为合理,在数据迁移时可实现更快速、高可靠性的数据迁移,对于存在大数据量的数据库,可以在很大程度上提高数据迁移效率。
可选的,为了在一定程度上节约迁移时间,提高数据迁移效率。在本公开的一些实施例中,所述源数据库可以包括数据库统计信息,所述数据库统计信息可以包含每张表的数据量。相应的,步骤S102中确定源数据库中每张表的第一数据量,具体可以包括:获取所述源数据库中的所述数据库统计信息;基于所述数据库统计信息确定所述源数据库中每张表的第一数据量。
示例性的,源数据库统计信息可以包括每张表的数据量大小,如Oracle数据库的系统表dba_tables的num_row列已经存储了表的数据量统计信息,由于通过查询语句操作需要遍历整张表的数据确定每张表的数据量,查询效率低下,而通过本实施例中的该方式查询可以直接确定每张表的数据量,效率较高。因此采用查询数据库统计信息来获取表的数据量大小可以节约一定的迁移时间,进而提高数据迁移效率。
可选的,为了合理平衡地利用计算机资源以提高数据迁移效率。在本公开的一些实施例中,所述计算机资源可以包括但不限于CPU资源、I/O资源和内存资源中的至少一个。相应的,所述步骤S102中确定线程单次读取的第二数据量,具体可以包括:基于所述CPU资源、I/O资源和内存资源中的至少一个确定线程单次读取的第二数据量。
示例性的,线程单次读取的数据量可以根据计算机的CPU、I/O和存储等资源合理设置,具体可以根据测试确定等,避免读取的数据量过小而无法充分利用计算机资源,而过大又导致效率降低等。线程单次读取的数据量的设置以避免CPU占用较高而I/O资源无法充分利用,或者单次读取的数据量大小占内存容量比例过高等情况为宜,进而达到计算机各资源较为平衡、充分的利用,使得后续执行迁移操作时,可以进一步提高数据读取性能,从而提高数据迁移效率。
可选的,为了提高数据库的数据迁移效率,在本公开的一些实施例中,所述指定数量与CPU核数相关,且该指定数量小于等于CPU核数的两倍值。示例性的,例如四核的CPU,所述指定数量可以是四个,即整体上启动四个线程执行数据迁移,但不限于此。在一次数据迁移过程中,启动的线程数过多或过少会影响迁移效率,本实施例中,所述指定数量可以与CPU核数相同,此时数据迁移时的迁移效率较高。
可选的,为了使得线程分配更为合理以进一步提高数据库的数据迁移效率。在本公开的一些实施例中,结合图2中所示,步骤S106中基于所述第二数据量以及所述每张表的第一数据量,确定所述每张表的数据迁移完所需的线程数,具体可以包括下述步骤:
步骤S201:确定所述第二数据量是否大于所述每张表的第一数据量。
示例性的,步骤步骤S201可以在步骤S104之后执行,也即确定线程单次读取的第二数据量是否大于某张表的第一数据量。
步骤S202:确定所述第二数据量大于所述每张表的第一数据量时,所述每张表对应的线程数是第一数值。
示例性的,该第一数值可以是一,但不限于此。也即线程单次读取的第二数据量大于某张表的第一数据量时,只需一个线程即可实现相应表中的数据迁移。
步骤S203:确定所述第二数据量不大于所述每张表的第一数据量时,所述每张表对应的线程数是第二数值;所述第二数值大于第一数值。
示例性的,在线程单次读取的第二数据量不大于某张表的第一数据量时,为相应表配置的线程数即第二数值大于第一数值,如第二数值可以大于一,即可以是分配多个线程。也即是说,如果源数据库中存在大数据量的表,那么该表使用多个线程同时读取数据,如果存在数据量较小的表,那么给该表分配一个线程即可,从而达到行级并行,优化线程分配。本实施例中可以基于表的数据量和线程单次读取的数据量分配迁移表数据所需的线程数,即优化线程分配使得线程分配更为合理,进而使得后续执行数据迁移任务时可以提高数据库的数据迁移效率。
进一步的,在本公开的一些实施例中,步骤S203中每张表对应的线程数是第二数值可以由以下方式确定,具体可以包括如下流程:
i)取余运算所述每张表的第一数据量与所述第二数据量。
ii)确定取余运算的结果是零时,所述每张表对应的线程数是所述每张表的第一数据量与所述第二数据量取模运算的结果。
iii)确定取余运算的结果不是零时,所述每张表对应的线程数是所述每张表的第一数据量与所述第二数据量取模运算的结果再加一。
具体的,作为一个示例,例如C表示每张表所需分配的线程数,n表示每个线程单次读取的数据量即第二数量,S表示表的数据量即第一数据量,[S/n]表示取模,[S%n]表示取余,那么每张表对应的线程数的计算公式如下:
可以理解的是,本实施例中每张表对应的线程数的具体确定方式并不限于此。采用本实施例中的上述方式优化线程分配使得线程分配更为合理,进而使得后续执行数据迁移任务时可以进一步提高数据库的数据迁移效率。
可选的,结合图3中所示,在本公开的一些实施例中,所述迁移方法还可以包括如下步骤:
步骤S301:基于所述每张表对应的线程数对每张表中的数据进行分片得到分片数据。其中所述分片数据的片数与该线程数相同。
示例性的,步骤S301可以在步骤S106之后执行,例如确定的某张数据表C对应的线程数是四,则可以将该数据表C中的数据分成四片构成四片分片数据,例如以行数据来分片,各分片数据的数据量可以相同,但也不限于此。
步骤S302:为各所述分片数据建立查询关键字,基于各所述分片数据的查询关键字构建各所述分片数据的查询SQL并放入队列中。
示例性的,例如对数据表C的四片分片数据分别建立查询关键字,然后可基于四片分片数据的查询关键字构建四片分片数据的查询SQL并放入队列中,即构建了对应四个查询SQL,每个查询SQL以相应分片数据的查询关键字构建,该查询关键字用以在数据库中匹配查找对应的分片数据。
相应的,步骤S108中基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库,具体可以是如下步骤:
步骤S303:基于所述每张表对应的线程数,从所述指定数量的线程中调度与该线程数对应的线程依次从所述队列中获取每张表的各所述分片数据的查询SQL以执行分片数据的查询操作,并将查询结果写入所述目标数据库。
示例性的,例如从启动的四个线程中调度四个线程依次从所述队列中获取数据表C的四片分片数据的四个查询SQL以执行分片数据的查询操作,并将查询结果写入所述目标数据库。
本实施例中对数据表的数据进行分片后查询读取数据,能够有效的提升数据的查询效率,进而提高数据迁移效率。
进一步的,在本公开的一些可选实施例中,各所述分片数据是所述每张表中的部分行数据,各所述分片数据的所述查询关键字可以是哈希值,该哈希值可以由所述部分行数据的唯一标识以及预设哈希函数确定。其中,所述唯一标识用以指示行数据在所述源数据库中的物理存储位置。
具体的,由于普通的分页方式在读取数据时,页数越往后的读取速度就会越慢,而数据的物理存储位置可以直接定位到数据。因此本实施例中可以采用HASH算法利用数据的物理存储位置进行表数据哈希分片处理可以提升后续数据查询的速度,进而可以提高数据迁移效率。以Oracle数据库为例,Oracle数据库的表中的每一行数据都有一个唯一标识符,称为rowid。在Oracle内部通常就是使用它来访问数据的。rowid表明了该行数据在Oracle数据库中的物理存储位置。
本实施例中采用哈希函数如ora_hash函数及唯一标识符rowid对表数据进行分片,得到各分片数据的哈希值,即查询关键字,然后可基于各分片数据的哈希值构建分片数据的查询SQL并放入队列中。结合图4中所示,具体的,作为示例,分片数据的哈希值可以表示为ora_hash(rowid,N-1),N表示分片数据的片数,也即一张表对应的线程数。分片的下标可以0开始,所以分片时使用N-1,即0至N-1共为N个分片,然后将基于哈希值构建的查询SQL加入队列中,具体的SQL示例如下所示:
select*from table_name where ora_hash(rowed,N-1)=0
select*from table_name where ora_hash(rowed,N-1)=1
select*from table_name where ora_hash(rowed,N-1)=2
select*from table_name where ora_hash(rowed,N-1)=N-1
之后可以开启指定数量的多线程如N个线程,调度N个线程中每个线程依次从队列中获取一条查询SQL并执行,以从源数据库获取到结果集并可以遍历结果集获取数据,然后可以通过例如金仓数据库提供的COPY TO接口将数据插入到目标数据库中。执行完一条查询SQL的线程可被调度再去队列里中获取其他表的查询SQL并执行,如此循环,直至所有数据表的数据迁移完成。
本实施例中通过物理存储位置查找数据是效率最高的查询方法,而且通过物理存储位置进行查询表数据不会因为数据量的大小而影响查询效率。且本实施例中使用HASH算法,根据数据物理位置进行分片后查询表数据,能够有效的提升数据的查询读取效率,同时兼具了查询效率的稳定性,进而可以进一步提升整个数据迁移的效率。
可选的,在本公开的一些实施例中,结合图4中所示,所述迁移方法还可以包括如下步骤:
在所述目标数据库中创建预设约束,所述预设约束被配置为指示所述目标数据库在写入数据时不检查数据完整性。
确定所述源数据库中的数据迁移完之后,更改所述预设约束以启动检查数据完整性。
约束检查数据的完整性是一种非常耗时的过程,将严重影响数据迁移的速度。本实施例中实质是在目标数据库中禁用检查数据完整性功能,数据迁移完之后可以开启检查数据完整性功能。具体的,目标数据库例如可以是金仓数据库类型,金仓数据库提供了创建约束时可选语法[NO VALID],使得创建的约束不去检查数据完整性,创建预设约束的示例过程如下:通过从源数据库查询约束元信息获取约束数据库模式定义语言DDL(DataDefinition Language),如ALTER TABLE TABLE_NAME ADD CONSTRAINTCONSTRAINT_NAMECHECK(COLUMN_NAME>100)。转换为不检查数据完整性的预设约束DDL,如ALTER TABLETABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME CHECK(C0LUMN_NAME>100)NO VALID。在目标数据库库执行上述DDL,即可完成创建预设约束过程。
金仓数据库实现了约束的启用、禁用及是否检查数据完整性等功能。开启约束检查数据完整性后,数据库写入数据时,约束会检查插入的数据是否符合约束条件,该检查会消耗大量的时间。通过禁用该功能可以极大的提升数据写入的速度。本公开实施例通过禁用检查数据完整性功能,省略因检查数据完整性的时间开销以减少目标数据库写入数据的时间,加快数据的迁移,进一步提高数据迁移效率。
可选的,在本公开的一些实施例中,在所述目标数据库中写入数据之前,还可以包括步骤:获取所述源数据库的编码集,将所述目标数据库的编码集设置为与所述源数据库的编码集一致。
具体的,在迁移数据之前,可以查询源数据库的编码集,在初始化目标数据库时将编码集设置为源数据库的编码集。本公开实施例中在从源数据库读取数据以及写入数据至目标数据库时,可以将源数据库和目标数据库的编码集设置一致,即在数据迁移过程中的输入输出流的编码集与源数据库、目标数据库一致,从而减少因转码等引起的乱码,数据丢失、迁移失败等问题,确保数据的完整性、一致性、准确性等。
可选的,在本公开的一些实施例中,所述迁移方法还可以包括下述步骤:
在所述目标数据库中写入数据之前,获取所述源数据库中每张表的属性信息。
基于所述每张表的属性信息在所述目标数据库中创建所述每张表对应的无日志表;各所述无日志表用以存储对应的每张表的数据。
确定所述源数据库中的数据迁移完之后,将各所述无日志表更改为普通表。
具体的,作为示例,属性信息可以包括表的元信息,如表名、表的所有列名、类型等。结合图4中所示,通过源数据库的系统表可以获取到表的元信息,以获取源表创建DDL,通过该元信息可以拼装转换为无日志表即unlogged表创建DDL,如源数据库某表名为test,列名为col,类型为int,那么在目标数据库中创建对应的无日志unlogged表的DDL如下所示:create unlogged table test(col1 int)。最后执行上述DDL,完成在目标数据库中unlogged表的创建。
示例性的,以目标数据库是金仓数据库为例,金仓数据库中引入了预写式日志(write-Ahead Logging,简称为WAL或WAL日志)。而写入WAL将会占用大量的I/O、影响数据插入速度。本实施例中创建unlogged表,写入数据时不会写WAL日志,从而减少I/O资源占用并减少数据插入时间。也即通过创建unlogged表,减少因写WAL日志占用的I/O、时间资源等方式减少目标数据库写入数据的时间,加快数据的迁移,提高数据库数据迁移效率。数据迁移完后可将unlogged表设置为普通表,即可以写入WAL日志的表,确保在以后实际业务过程中的数据库高可用。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。另外,也易于理解的是,这些步骤可以是例如在多个模块/进程/线程中同步或异步执行。
基于同一构思,本公开实施例还提供一种数据库数据迁移装置,参考图5中所示,该数据库数据迁移装置50可以包括表数据统计模块501、数据量确定模块502、线程数确定模块503和数据迁移模块504;其中:
所述表数据统计模块501,用以确定源数据库中每张表的第一数据量;
所述数据量确定模块502,用以确定线程单次读取的第二数据量;所述第二数据量与计算机资源相关;
所述线程数确定模块503,用以基于所述第二数据量以及所述每张表的第一数据量,确定所述每张表的数据迁移完所需的线程数;
所述数据迁移模块504,用以控制启动指定数量的线程,基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库。
本公开实施例提供的上述数据库数据迁移装置,数据迁移之前分析了源数据库中每张表的数据量,同时设置线程单次读取的数据量时考虑计算机资源因素,因此可以较为合理平衡地利用计算机资源以分配迁移完每张表数据的线程数,然后控制启动指定数量的线程,并基于所述每张表对应的线程数调度所述指定数量的线程运行以实现数据迁移,整体上使得数据迁移时的线程分配调度较为合理,在数据迁移时可实现更快速、高可靠性的数据迁移,对于存在大数据量的数据库,可以在很大程度上提高数据迁移效率。
在本公开的一些实施例中,所述源数据库可以包括数据库统计信息,所述数据库统计信息可以包含每张表的数据量。所述表数据统计模块501确定源数据库中每张表的第一数据量,具体可以包括:获取所述源数据库中的所述数据库统计信息;基于所述数据库统计信息确定所述源数据库中每张表的第一数据量。
在本公开的一些实施例中,所述计算机资源可以包括但不限于CPU资源、I/O资源和内存资源中的至少一个。在本公开的一些实施例中,所述指定数量与CPU核数相关,且该指定数量小于等于CPU核数的两倍值。所述数据量确定模块502确定线程单次读取的第二数据量,具体可以包括:基于所述CPU资源、I/O资源和内存资源中的至少一个确定线程单次读取的第二数据量。
在本公开的一些实施例中,所述线程数确定模块503基于所述第二数据量以及所述每张表的第一数据量,确定所述每张表的数据迁移完所需的线程数,具体可以包括:确定所述第二数据量是否大于所述每张表的第一数据量;确定所述第二数据量大于所述每张表的第一数据量时,所述每张表对应的线程数是第一数值;确定所述第二数据量不大于所述每张表的第一数据量时,所述每张表对应的线程数是第二数值;所述第二数值大于第一数值。
在本公开的一些实施例中,所述线程数确定模块503确定所述每张表对应的线程数是第二数值可以由以下方式确定:取余运算所述每张表的第一数据量与所述第二数据量;确定取余运算的结果是零时,所述每张表对应的线程数是所述每张表的第一数据量与所述第二数据量取模运算的结果;确定取余运算的结果不是零时,所述每张表对应的线程数是所述每张表的第一数据量与所述第二数据量取模运算的结果再加一。
在本公开的一些实施例中,还可以包括数据分片模块,用以基于所述每张表对应的线程数对每张表中的数据进行分片得到分片数据;其中所述分片数据的片数与该线程数相同;为各所述分片数据建立查询关键字,基于各所述分片数据的查询关键字构建各所述分片数据的查询SQL并放入队列中。相应的,所述数据迁移模块504基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库,具体可以包括:基于所述每张表对应的线程数,从所述指定数量的线程中调度与该线程数对应的线程依次从所述队列中获取每张表的各所述分片数据的查询SQL以执行分片数据的查询操作,并将查询结果写入所述目标数据库。
在本公开的一些实施例中,各所述分片数据是所述每张表中的部分行数据,各所述分片数据的所述查询关键字是哈希值,该哈希值由所述部分行数据的唯一标识以及预设哈希函数确定;其中,所述唯一标识用以指示行数据在所述源数据库中的物理存储位置。
在本公开的一些实施例中,还包括约束配置模块,用以在所述目标数据库中创建预设约束,所述预设约束被配置为指示所述目标数据库在写入数据时不检查数据完整性;确定所述源数据库中的数据迁移完之后,更改所述预设约束以启动检查数据完整性。
在本公开的一些实施例中,还可以包括编码集配置模块,其在所述目标数据库中写入数据之前,用以获取所述源数据库的编码集,将所述目标数据库的编码集设置为与所述源数据库的编码集一致。
在本公开的一些实施例中,还可以包括表状态配置模块,用以在所述目标数据库中写入数据之前,获取所述源数据库中每张表的属性信息;基于所述每张表的属性信息在所述目标数据库中创建所述每张表对应的无日志表;各所述无日志表用以存储对应的每张表的数据;确定所述源数据库中的数据迁移完之后,将各所述无日志表更改为普通表。
关于上述实施例中的装置,其中各个模块执行操作的具体方式以及带来的相应技术效果已经在有关该方法的实施例中进行了对应的详细描述,此处将不做详细阐述说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项实施例所述数据库数据迁移方法的步骤。
示例性的,该可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
本公开实施例还提供一种电子设备例如数据库服务器,包括处理器以及存储器,存储器用于存储所述处理器的可执行指令。其中,所述处理器配置为经由执行所述可执行指令来执行上述任一项实施例中所述数据库数据迁移方法的步骤。
下面参照图6来描述根据本发明的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述数据库数据迁移方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示方法的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述数据库数据迁移方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (13)

1.一种数据库数据迁移方法,其特征在于,包括:
确定源数据库中每张表的第一数据量;
确定线程单次读取的第二数据量;所述第二数据量与计算机资源相关,所述计算机资源包括CPU资源、I/O资源和内存资源中的至少一个;
确定所述第二数据量不大于所述每张表的第一数据量时,所述每张表对应的线程数是第二数值;其中,所述第二数值由以下方式确定:
取余运算所述每张表的第一数据量与所述第二数据量;
确定取余运算的结果不是零时,所述每张表对应的线程数是所述每张表的第一数据量与所述第二数据量取模运算的结果再加一;
控制启动指定数量的线程,基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库。
2.根据权利要求1所述的数据库数据迁移方法,其特征在于,所述源数据库包括数据库统计信息,所述数据库统计信息包含每张表的数据量;所述确定源数据库中每张表的第一数据量,包括:
获取所述源数据库中的所述数据库统计信息;
基于所述数据库统计信息确定所述源数据库中每张表的第一数据量。
3.根据权利要求1所述的数据库数据迁移方法,其特征在于,所述指定数量与CPU核数相关,且该指定数量小于等于CPU核数的两倍值;所述确定线程单次读取的第二数据量,包括:
基于所述CPU资源、I/O资源和内存资源中的至少一个确定线程单次读取的第二数据量。
4.根据权利要求1所述的数据库数据迁移方法,其特征在于,所述方法还包括:
确定所述第二数据量是否大于所述每张表的第一数据量;
确定所述第二数据量大于所述每张表的第一数据量时,所述每张表对应的线程数是第一数值,所述第二数值大于所述第一数值。
5.根据权利要求1所述的数据库数据迁移方法,其特征在于,所述方法还包括:
确定所述取余运算的结果是零时,所述每张表对应的线程数是所述每张表的第一数据量与所述第二数据量取模运算的结果。
6.根据权利要求1所述的数据库数据迁移方法,其特征在于,还包括:
基于所述每张表对应的线程数对每张表中的数据进行分片得到分片数据;其中所述分片数据的片数与该线程数相同;
为各所述分片数据建立查询关键字,基于各所述分片数据的查询关键字构建各所述分片数据的查询SQL并放入队列中;
所述基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库,包括:
基于所述每张表对应的线程数,从所述指定数量的线程中调度与该线程数对应的线程依次从所述队列中获取每张表的各所述分片数据的查询SQL以执行分片数据的查询操作,并将查询结果写入所述目标数据库。
7.根据权利要求6所述的数据库数据迁移方法,其特征在于,各所述分片数据是所述每张表中的部分行数据,各所述分片数据的所述查询关键字是哈希值,该哈希值由所述部分行数据的唯一标识以及预设哈希函数确定;其中,所述唯一标识用以指示行数据在所述源数据库中的物理存储位置。
8.根据权利要求1~7任一项所述的数据库数据迁移方法,其特征在于,还包括:
在所述目标数据库中创建预设约束,所述预设约束被配置为指示所述目标数据库在写入数据时不检查数据完整性;
确定所述源数据库中的数据迁移完之后,更改所述预设约束以启动检查数据完整性。
9.根据权利要求1~7任一项所述的数据库数据迁移方法,其特征在于,在所述目标数据库中写入数据之前,还包括:
获取所述源数据库的编码集,将所述目标数据库的编码集设置为与所述源数据库的编码集一致。
10.根据权利要求1~7任一项所述的数据库数据迁移方法,其特征在于,还包括:
在所述目标数据库中写入数据之前,获取所述源数据库中每张表的属性信息;
基于所述每张表的属性信息在所述目标数据库中创建所述每张表对应的无日志表;各所述无日志表用以存储对应的每张表的数据;
确定所述源数据库中的数据迁移完之后,将各所述无日志表更改为普通表。
11.一种数据库数据迁移装置,其特征在于,
表数据统计模块,用以确定源数据库中每张表的第一数据量;
数据量确定模块,用以确定线程单次读取的第二数据量;所述第二数据量与计算机资源相关,所述计算机资源包括CPU资源、I/O资源和内存资源中的至少一个;
线程数确定模块,用以确定所述第二数据量不大于所述每张表的第一数据量时,所述每张表对应的线程数是第二数值;其中,所述第二数值由以下方式确定:取余运算所述每张表的第一数据量与所述第二数据量;确定取余运算的结果不是零时,所述每张表对应的线程数是所述每张表的第一数据量与所述第二数据量取模运算的结果再加一;
数据迁移模块,用以控制启动指定数量的线程,基于所述每张表对应的线程数调度所述指定数量的线程以读取所述每张表中的数据并写入目标数据库。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1~10任一项所述数据库数据迁移方法的步骤。
13.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~10任一项所述数据库数据迁移方法的步骤。
CN202010774424.9A 2020-08-04 2020-08-04 数据库数据迁移方法、装置、介质和电子设备 Active CN112015716B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010774424.9A CN112015716B (zh) 2020-08-04 2020-08-04 数据库数据迁移方法、装置、介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010774424.9A CN112015716B (zh) 2020-08-04 2020-08-04 数据库数据迁移方法、装置、介质和电子设备

Publications (2)

Publication Number Publication Date
CN112015716A CN112015716A (zh) 2020-12-01
CN112015716B true CN112015716B (zh) 2024-02-09

Family

ID=73499068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010774424.9A Active CN112015716B (zh) 2020-08-04 2020-08-04 数据库数据迁移方法、装置、介质和电子设备

Country Status (1)

Country Link
CN (1) CN112015716B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190534A (zh) * 2021-05-26 2021-07-30 中国工商银行股份有限公司 数据库数据迁移方法及装置
CN113515503A (zh) * 2021-07-23 2021-10-19 浩鲸云计算科技股份有限公司 一种基于表的InfluxDB数据迁移方法
CN114077602B (zh) * 2022-01-13 2022-05-17 中兴通讯股份有限公司 数据迁移方法和装置、电子设备、存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101374533B1 (ko) * 2013-04-17 2014-03-14 주식회사 엔써티 대용량 데이터에 대한 고성능 복제 및 백업 시스템과, 고성능 복제 방법
CN104794204A (zh) * 2015-04-23 2015-07-22 上海新炬网络信息技术有限公司 一种数据库敏感数据自动识别方法
CN107357883A (zh) * 2017-06-30 2017-11-17 北京奇虎科技有限公司 数据迁移方法及装置
CN109753493A (zh) * 2019-01-04 2019-05-14 中国银行股份有限公司 数据库间进行数据迁移的方法、装置以及设备
CN110222115A (zh) * 2019-04-30 2019-09-10 武汉达梦数据库有限公司 基于表初始化分组装载的数据库同步方法及设备
WO2019219010A1 (zh) * 2018-05-14 2019-11-21 杭州海康威视数字技术股份有限公司 数据迁移方法、装置及计算机可读存储介质
CN111125059A (zh) * 2019-12-17 2020-05-08 南京甄视智能科技有限公司 数据迁移方法、装置、存储介质及服务器
CN111125769A (zh) * 2019-12-27 2020-05-08 上海轻维软件有限公司 基于oracle数据库的海量数据脱敏方法
CN111143331A (zh) * 2019-12-30 2020-05-12 广州酷狗计算机科技有限公司 数据迁移方法、装置及计算机存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890455B2 (en) * 2008-05-28 2011-02-15 International Business Machines Corporation System and apparatus to ensure a low-latency read of log records from a database management system (“DBMS”)
US10949401B2 (en) * 2014-06-25 2021-03-16 Vmware, Inc. Data replication in site recovery environment
CN107025225B (zh) * 2016-01-30 2018-12-14 华为技术有限公司 一种终端数据库的并行执行方法和装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101374533B1 (ko) * 2013-04-17 2014-03-14 주식회사 엔써티 대용량 데이터에 대한 고성능 복제 및 백업 시스템과, 고성능 복제 방법
CN104794204A (zh) * 2015-04-23 2015-07-22 上海新炬网络信息技术有限公司 一种数据库敏感数据自动识别方法
CN107357883A (zh) * 2017-06-30 2017-11-17 北京奇虎科技有限公司 数据迁移方法及装置
WO2019219010A1 (zh) * 2018-05-14 2019-11-21 杭州海康威视数字技术股份有限公司 数据迁移方法、装置及计算机可读存储介质
CN109753493A (zh) * 2019-01-04 2019-05-14 中国银行股份有限公司 数据库间进行数据迁移的方法、装置以及设备
CN110222115A (zh) * 2019-04-30 2019-09-10 武汉达梦数据库有限公司 基于表初始化分组装载的数据库同步方法及设备
CN111125059A (zh) * 2019-12-17 2020-05-08 南京甄视智能科技有限公司 数据迁移方法、装置、存储介质及服务器
CN111125769A (zh) * 2019-12-27 2020-05-08 上海轻维软件有限公司 基于oracle数据库的海量数据脱敏方法
CN111143331A (zh) * 2019-12-30 2020-05-12 广州酷狗计算机科技有限公司 数据迁移方法、装置及计算机存储介质

Also Published As

Publication number Publication date
CN112015716A (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
CN112015716B (zh) 数据库数据迁移方法、装置、介质和电子设备
US20170083573A1 (en) Multi-query optimization
US8601474B2 (en) Resuming execution of an execution plan in a virtual machine
US8935232B2 (en) Query execution systems and methods
US10387411B2 (en) Determining a density of a key value referenced in a database query over a range of rows
Bajda-Pawlikowski et al. Efficient processing of data warehousing queries in a split execution environment
CN108536705B (zh) 数据库系统中对象的编码及运算方法与数据库服务器
US7702616B1 (en) Methods and apparatus for processing a query joining tables stored at different data sources
US8566333B2 (en) Multiple sparse index intelligent table organization
EP2811792A1 (en) A method for operating a mobile telecommunication device
CN103177057A (zh) 用于内存列存储数据库的多核算法
CN109885642B (zh) 面向全文检索的分级存储方法及装置
US8396858B2 (en) Adding entries to an index based on use of the index
JP2020098593A (ja) 列状データの不均一なページネーション
US20170270149A1 (en) Database systems with re-ordered replicas and methods of accessing and backing up databases
Šušter et al. Optimization of MySQL database
US9870399B1 (en) Processing column-partitioned data for row-based operations in a database system
US8321429B2 (en) Accelerating queries using secondary semantic column enumeration
Zhao et al. MapReduce model-based optimization of range queries
CA3203549A1 (en) Unified verification method, device, equipment and storage medium
US20080162414A1 (en) Accelerating queries using delayed value projection of enumerated storage
Reniers et al. Schema design support for semi-structured data: Finding the sweet spot between NF and De-NF
US20170031909A1 (en) Locality-sensitive hashing for algebraic expressions
CN112818010B (zh) 数据库查询方法及装置
WO2017019889A1 (en) Maintaining performance in the presence of insertions, deletions, and streaming queries

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