用于NoSQL数据库的数据去重的制作方法

专利查询3月前  34



背景技术:

1、在本发明的一些实施例中,本发明涉及一种用于数据库中的数据去重的方法和系统,更具体地但不限于,涉及一种用于nosql数据库中的数据去重的方法和系统。sql或者称为结构化查询语言(structured query language)是一种标准化编程语言,用于管理关系型数据库并对其中的数据执行各种操作。

2、数据去重是一种通常用于消除或减少过多数据副本并降低存储容量要求的进程。数据去重可以在数据写入存储系统时作为一个进程运行,和/或在数据写入磁盘后作为一个后台进程运行,以消除重复。数据去重和压缩通常需要信任,因为执行数据去重的存储必须能够访问数据,以便找到多个相同的数据并能够对其进行压缩。

3、一些块存储系统使用固定大小的数据去重,其中,存储被划分为8kb对齐的块。为每个块创建签名。如果块具有相同的签名,则不会再次存储数据,而是保留指向已存储块的指针。固定大小的数据去重的一个缺点是,固定大小的数据去重不捕获相似的块,只捕获彼此相同的块。例如,如果块相同但移位了512个字节,则固定大小的数据去重将不会捕获其中一个相同块。字节移位和插入切换也是如此,固定大小的数据去重不会捕获其中一个相同块。

4、通常情况下,备份数据去重的局部性很大,因此备份系统一旦找到数据去重的参考点,就能更快地找到其余的数据去重位置。因此,备份系统可以优化数据并进行内联变量数据去重。

5、变量数据去重将数据分为可变大小的块,并检查相同数据是否已写入系统。如果相同数据已写入系统,则只保留指向数据的一个副本的指针。

6、nosql(最初指“非sql”或“非关系型”)数据库提供了一种用于数据存储和检索的机制,该机制的建模方式与关系型数据库中使用的表格关系不同。这类数据库自20世纪60年代末以来就已经存在,但“nosql”这一名称直到21世纪初才因web 2.0公司的需求而被创造出来。nosql数据库越来越多地用于大数据和实时网络应用。nosql系统有时也称为“不仅仅是sql”,以强调nosql系统可以支持类似sql的查询语言,或者在多语言持久架构中与sql数据库并存。这种方法可以简化设计,更简单地“水平”扩展到机器集群(这对于关系型数据库来说是一个问题),对可用性进行更精细的控制,并且限制对象关系阻抗不匹配。

7、nosql数据库通常保持将数据镜像在多个位置。在许多这类nosql数据库系统中,每个镜像都是相同的。然而,在cassandra等现代集群式非sql数据库中,数据副本并不总是完全相同的,这会导致重删比大幅降低。

8、数据库数据的备份可以直接由数据库本身执行,因为数据库数据是以数据库的原生格式存储的,因此,数据库在备份存储设备上定位和复制镜像中的数据时不会出现问题。本文使用的术语“镜像”是指虚拟数据的相同副本,而不是指左右颠倒的副本(物理对象的镜像可能就是这种情况)。替代地,可以使用通用备份系统来备份数据库数据,这大大增加了总备份大小,因为通用备份系统通常将新备份附加到旧备份的末尾,而不删除以前的备份。

9、一些数据库提供应用感知数据去重系统,提供冗余副本检测以及备份和恢复机制,这些机制的运行不管数据库配置如何。

10、传统的数据库备份系统通常将备份附加到备份文件的末尾,从而导致副本大小大于原始数据。

11、因此,需要在正在备份的nosql数据库和数据去重存储之间实现集成、理解和一致性。


技术实现思路

1、提供给数据库备份和数据去重系统的数据库配置文件可以提供:数据库中的每行数据的线格式(line format);数据库用于将数据库中的每行数据映射到用于存储数据库数据的第一存储节点和用于存储数据库数据的第二存储节点的函数;以及要作为备份的行数据的副本的数量。

2、数据库通常存储在至少三个不同的节点中,每行数据通常在至少两个节点中进行镜像。数据库中的多行数据中的每行数据与键相关联,键至少是到第一存储节点和第二存储节点的映射的函数。处理器执行的分块进程将至少三个节点中的每个节点分成块。所述处理器对每个块执行排序进程,其中,所述排序进程对每个块中的行数据根据其相关联的键来进行排序,使得与相同键相关联的所述多行数据中的每行数据连续地存储在每个块中,所述排序进程用于在对所述行数据执行所述排序进程之前,创建指示每行数据在所述块中的位置的映射。

3、根据本发明的一些实施例的一方面,提供了一种设备,所述设备包括:处理器;数据库,其中,所述数据库包括存储在至少三个节点中的数据,每个节点包括至少一个数据存储设备;多行数据,其中,每行数据存储在所述至少三个节点中的第一节点中,每行数据至少在所述至少三个节点中的第二节点中进行镜像,所述多行数据中的每行数据与键相关联,所述键至少是到所述第一节点和所述第二节点的映射的函数;分块进程,其中,所述分块进程由所述处理器执行,所述分块进程将所述至少三个节点中的每个节点分成块;排序进程,其中,所述排序进程由所述处理器对每个块执行,所述排序进程对每个块中的行数据根据其相关联的键来进行排序,使得与相同键相关联的所述多行数据中的每行数据连续地存储在每个块中,所述排序进程用于在对所述行数据执行所述排序进程之前,创建指示每行数据在所述块中的位置的映射。

4、根据本发明的一些实施例的一方面,提供了一种方法,所述方法包括:在至少三个节点中存储数据库中的多行数据,其中,每个节点包括至少一个数据存储设备;至少在所述至少三个节点中的第一节点和至少在所述至少三个节点中的第二节点中对所述多行数据中的每行数据进行镜像,其中,所述多行数据中的每行数据与键相关联,所述键至少是到所述第一节点和所述第二节点的映射的函数;将所述至少三个节点中的每个节点分成块;对每个块中的行数据根据其相关联的键来进行排序,使得与所述相同键相关联的所述多行数据中的每行数据连续地存储在每个块中,其中,所述排序进程用于在对所述行数据执行所述排序进程之前,创建指示每行数据在所述块中的位置的映射。

5、根据本发明的一些实施例的一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储表示计算机可执行的软件的数据,其中,所述软件包括指令,用于:在至少三个节点中存储数据库中的多行数据,其中,每个节点包括至少一个数据存储设备;至少在所述至少三个节点中的第一节点和至少在所述至少三个节点中的第二节点中对所述多行数据中的每行数据进行镜像,其中,所述多行数据中的每行数据与键相关联,所述键至少是到所述第一节点和所述第二节点的映射的函数;将所述至少三个节点中的每个节点分成块;对每个块中的行数据根据其相关联的键来进行排序,使得与相同键相关联的所述多行数据中的每行数据连续地存储在每个块中,其中,所述排序进程用于在对所述行数据执行所述排序进程之前,创建指示每行数据在所述块中的位置的映射。

6、根据本发明的一些实施例,还包括配置文件,其中,所述配置文件至少包括:所述数据库中的每行数据的线格式;所述数据库用于将所述数据库中的每行数据映射到所述第一节点和所述第二节点的函数;所述行数据的副本的数量。

7、根据本发明的一些实施例,所述数据库包括nosql数据库。

8、根据本发明的一些实施例,所述多个节点中的每个节点中存储的数据与所述多个节点中的任何其它节点中的数据不相同。

9、根据本发明的一些实施例,在所述分块进程对一个块中的数据进行排序之后,所述处理器对所述一个块中的数据执行数据去重进程。

10、根据本发明的一些实施例,每个块的大小至少为4兆字节(mb)。

11、根据本发明的一些实施例,还包括存储配置文件,所述配置文件至少包括:所述数据库中的每行数据的线格式;所述数据库用于将所述数据库中的每行数据映射到所述第一节点和所述第二节点的函数;所述行数据的副本的数量。

12、除非另有定义,否则本文所使用的所有技术和/或科学术语的含义与本发明所属领域的普通技术人员通常理解的相同。尽管与本文所描述的方法和材料类似或等效的方法和材料可以用于本发明实施例的实现或测试,但下文还是描述了一些示例性方法和/或材料。如有冲突,以本专利说明书(包括定义)为准。此外,这些材料、方法和示例仅是说明性的,并不一定具有限制性。

13、本发明实施例提供的方法和/或系统的实现方式可以涉及手动、自动或者这两种方式结合地执行或完成所选择的任务。此外,根据本发明的方法和/或系统的实施例的实际仪器和设备,可以使用操作系统通过硬件、软件、固件或者这三者组合实现多个选择的任务。

14、例如,用于执行根据本发明实施例的所选择的任务的硬件可以被实现为芯片或电路。对于软件,根据本发明实施例的所选择的任务可以被实现为由计算机使用任意合适的操作系统执行的多个软件指令。在本发明的示例性实施例中,根据本文所描述的方法和/或系统的示例性实施例的一个或多个任务由数据处理器执行,例如,由用于执行多个指令的计算平台执行。可选地,数据处理器包括存储指令和/或数据的易失性存储器和/或非易失性存储器,例如,用于存储指令和/或数据的硬磁盘和/或可移动介质。可选地,还提供了网络连接。可选地,还提供了显示器和/或键盘或鼠标等用户输入设备。


技术特征:

1.一种设备,其中,所述设备包括:

2.根据权利要求1所述的设备,其中,所述设备还包括配置文件,其中,所述配置文件至少包括:

3.根据权利要求1至2中任一项所述的设备,其中,所述数据库包括nosql数据库。

4.根据权利要求1至3中任一项所述的设备,其中,所述多个节点中的每个节点中存储的数据与所述多个节点中的任何其它节点中的数据不相同。

5.根据权利要求1至4中任一项所述的设备,其中,在所述排序进程对一个块中的数据进行排序之后,所述处理器对所述一个块中的数据执行数据去重进程。

6.根据权利要求1至5中任一项所述的设备,其中,每个块的大小至少为4mb。

7.一种方法,其中,所述方法包括:

8.根据权利要求7所述的方法,其中,所述方法还包括存储配置文件,其中,所述配置文件至少包括:

9.根据权利要求7或8所述的方法,其中,所述数据库包括no sql数据库。

10.根据权利要求7至9中任一项所述的方法,其中,所述多个节点中的每个节点中存储的数据与所述多个节点中的任何其它节点中的数据不相同。

11.根据权利要求7至10中任一项所述的方法,其中,在所述排序进程对一个块中的数据进行排序之后,所述处理器对所述一个块中的数据执行数据去重进程。

12.根据权利要求7至11任一项所述的方法,其中,每个块的大小至少为4mb。

13.一种计算机可读存储介质,其中,所述计算机可读存储介质中存储有表示计算机可执行的软件的数据,其中,所述软件包括指令,用于:


技术总结
描述了一种设备、一种方法和一种计算机可读存储介质,所述设备包括:处理器;数据库,其中,所述数据库包括存储在至少三个节点中的数据,每个节点包括至少一个数据存储设备;多行数据,其中,所述多行数据存储在第一节点中并且至少在第二节点中进行镜像,所述多行数据中的每行数据与键相关联,所述键至少是到所述第一节点和第二节点的映射的函数;分块进程,其中,所述分块进程将每个节点分成块;排序进程,其中,所述排序进程根据行数据的相关联的键对每个块中的行数据进行排序,使得与相同键相关联的行数据中的每行数据连续地存储在每个块中,并且在执行所述排序进程之前,创建指示每行数据在所述块中的位置的映射。

技术研发人员:阿萨夫·纳塔逊
受保护的技术使用者:华为技术有限公司
技术研发日:
技术公布日:2024/12/5

最新回复(0)