CN101512526B - 动态片段映射 - Google Patents

动态片段映射 Download PDF

Info

Publication number
CN101512526B
CN101512526B CN2007800330122A CN200780033012A CN101512526B CN 101512526 B CN101512526 B CN 101512526B CN 2007800330122 A CN2007800330122 A CN 2007800330122A CN 200780033012 A CN200780033012 A CN 200780033012A CN 101512526 B CN101512526 B CN 101512526B
Authority
CN
China
Prior art keywords
fragment
mapping
actual
data
actual fragment
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
CN2007800330122A
Other languages
English (en)
Other versions
CN101512526A (zh
Inventor
R·H·格伯
V·卡瑟瑞
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN101512526A publication Critical patent/CN101512526A/zh
Application granted granted Critical
Publication of CN101512526B publication Critical patent/CN101512526B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting
    • 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

数据集被划分为各个片并被存储在多个位置处,且系统动态地增加或减少可以在其中存储该数据集的各个片的存储位置的数量。数据结构包括含有第一索引和第一元素的第一数据字段,和各自具有索引和元素的一个或多个数据字段。该一个或多个数据字段的元素包括表示与第一数据字段的索引相关联的位置的记号。数据集的数据行使用第二索引被映射到数据字段的索引。第二索引是使用散列函数从数据集的数据行导出的。第二索引随后使用模函数被映射到该一个或多个数据字段中所包括的数据字段的索引。

Description

动态片段映射
背景
数据库系统可以用各种方式存储一组具有行和列的表格数据。数据库系统可以将数据存储在易失性和非易失性存储器中,存储在位于该数据库系统本地的常规文件存储的文件中,存储在位于附加到位于网络上的一个或多个存储系统的常规文件存储的文件中,等等。数据库系统通常可以向数据集添加或从中移除数据,并且因而该数据集可以随时间缩小或增长。
然而,随着数据集的增长,该数据集可能增长得过大,且可能超过其被存储的位置的存储容量。例如,数据集可作为文件存储在硬盘驱动器上。如果该数据集增长得大于硬盘驱动器的容量,则该数据集或可以被整体移动到更大的容量的硬盘驱动器,或可以被分为一个或多个片,且每一片可被移动到多个物理存储位置的一个。
一旦数据集被拆分,则数据库系统可以实现固定函数来定位和取回存储在多个物理存储位置的每一个的数据。例如,数据库系统可以包括两个物理存储位置。该数据库系统可以选择将与数据集的第一行相关联的数据存储在第一物理存储位置中。该数据库系统还可以选择将与该数据集的第二行相关联的数据存储在第二物理存储位置中。该数据库系统随后可以选择将与该数据集的第三行相关联的数据存储在第一物理存储位置中。这样的模式可以对该数据集的每一行重复。该数据库系统随后可以反转这种固定函数来定位和取回数据。例如,该数据库系统可以通过访问存储在第二物理位置的数据,来取回与该数据集的第二行相关联的数据。
如果第一或第二物理存储位置的任一个也被填满,则附加物理存储位置可被添加到该数据库系统。然而,因为该数据库系统可能利用固定函数来划分以及取回数据,所以可能要求改组(reshuffle)存储在第一和第二物理存储位置上的所有数据,以适应第三物理存储位置的添加。
例如,该数据库系统现可以选择将与第一行相关联的数据存储在第一物理存储位置中。该数据库系统还可以选择将与第二行相关联的数据存储在第二物理存储位置中。该数据库系统随后可以选择将与第三行相关联的数据存储在第三物理存储位置中。注意,与第三行相关联的数据先前被存储在第一物理存储位置中。然而,为符合可由该数据库系统采用的固定函数,可以要求与第三行相关联的数据改组到第三物理存储位置。
或者,如果数据库系统不采用固定函数来划分和存储数据集,则可以要求划分和查找函数在每次向数据库系统添加新的物理位置或从中移除物理位置时,都进行改变。例如,该数据库系统可以包括非固定函数,该非固定函数通过执行基于行号和物理存储位置的数量的数学函数,来选择数据集中的一行的物理位置。因为数据的每一行的位置和确定每一行的位置的数学函数两者都基于物理位置的数量,所以每次向数据库系统添加或从中移除物理存储位置,都必须重新计算和改组数学函数和每一行的位置。
一种实现允许将数据从一个物理存储位置容易地移动到另一位置,而不要求每次添加或移除物理存储位置时,都改组所有物理存储位置上的所有数据的方法的系统,是有用的。
概述
下面提供本发明的简化概要以便为读者提供基本的理解。本概要不是本发明的详尽概观,并且既不标识本发明的关键/重要元素也不描绘本发明的范围。其唯一目的是以简化形式提供在此公开的一些概念作为稍后提供的更详细描述的序言。
本示例提供用于动态片段映射的机制和技术。数据库对象,如表、行集合、索引、或表或索引的一部分,可被划分为数据片段或可以作为一个数据片段存在。行集合可被认为是数据库表中的一行或多行的集合或可以是索引中的各条目。术语行和记录可被认为是基本上相同的。因此,行集合也可以等于记录集合。
可以选择最大数量的可能的数据片段。在将数据集划分为各个片段时,数据集的每一片可被分配一个虚拟标识符。可包含行集合的物理位置可被称为实际片段。可以对每一元素创建包括标识符记号的数组,该标识符记号可被解引用(dereference)以发现实际片段的物理位置。出于根据虚拟标识符发现实际片段的物理位置的目的,这一数组可以作为映射。可以调用使虚拟标识符与映射索引值相关的映射函数,以发现相关联的映射索引值处的元素的值。数据集的每一片随后可以被物理地存储在映射索引值所引用的位置处。
映射中的多个元素可以引用同一物理位置。可以通过改变指向预先存在的物理位置的多个映射索引元素之一处的值,来添加新的物理位置。先前与该映射元素相关联的数据片随后可以从旧的物理位置移动到该新的物理位置。因此,可以通过将映射索引元素的值改变为另一预先存在位置,并通过将数据从要删除的位置移动到所述预先存在的位置,来删除现有的物理位置。
包括实际片段映射的元素集合可以在必要时扩展或压缩。例如,可能发生这样的情况:对于新的物理位置,映射可能不再具有足够的存储。映射元素的数量随后可以按所选因数增加。由于映射函数可以使虚拟标识符与映射索引值相关,所以多个虚拟标识符值现在可以与新的映射索引值相关。新索引处的映射元素的值可被改变为引用新的物理位置。与新的映射索引值相关联的所有数据片可被移动到该新的物理位置。
在另一示例中,可能发生以下的情况:物理位置存储了过少的行。映射索引元素的数量可以减少。由于映射函数使虚拟标识符与映射索引值相关,所以多个虚拟标识符现在可以与新的映射索引值相关。映射索引元素的值可被改变为引用现有的物理位置。与新的映射索引值相关联的所有数据片可被移动到该现有的物理位置。
在替换示例中,与虚拟标识符相关联的物理数据,对于物理位置而言现在可能增长得过大。这种情况可被称为数据倾斜。在这种数据倾斜的情况下,添加新的物理位置并向虚拟标识符分配新的物理地址可能是不可能的,因为这样做可能将所有信息从旧的物理位置移动到新的物理位置,而非将该信息拆分为两部分。在这种数据倾斜的情况下,可以向映射索引条目添加标志,且与该映射索引值相关联的数据可被分发到所有物理位置。这种数据倾斜标志可以指示,查找函数可以检查所有物理位置以发现该数据的位置。
为找到片段的物理位置,虚拟标识符被传递给映射函数。映射函数随后可以返回映射索引值。映射索引值处的元素可以包括引用该片段所被存储的物理位置的标识符。该标识符随后可以被解引用来发现该物理位置,且该片段可被取回。
许多附带特征将随着参考下面的详细描述并结合附图进行理解而得到更好的认识。
附图说明
考虑附图阅读以下详细描述,将更好地理解本说明书,在附图中:
图1是示出常规数据存储和查找系统的框图。
图2是示出包括用于创建片段映射的示例方法、用于拆分实际片段的示例方法、用于合并实际片段的示例方法、以及用于查找片段位置的示例方法的动态片段系统的框图。
图3是示出片段映射数据结构的框图。
图4是示出用于创建片段映射的示例方法的流程图。
图5是示出用于拆分实际片段的示例方法的流程图。
图6是示出在实际片段拆分期间,示例片段映射和示例物理位置中的状态转移的框图。
图7是示出用于合并实际片段的示例方法的流程图。
图8是示出在实际片段合并期间,示例片段映射和示例物理位置中的状态转移的框图。
图9是示出用于使用片段标识符来查找片段的物理位置的标识符的示例方法的流程图。
图10是示出用于拆分实际片段和用于在片段映射中将片段标记为具有数据倾斜的示例方法的流程图。
图11是示出在包括数据倾斜的实际片段拆分期间,示例片段映射和示例物理位置中的状态转移的框图。
图12是示出用于使用片段标识符,来查找具有数据倾斜的片段的物理位置的标识符的示例方法的流程图。
图13示出用于实现所述系统和方法的示例计算机设备。
附图中使用相同的附图标记来指代相同的部分。
详细描述
下面结合附图提供的详细描述旨在作为对本示例的描述,而非表示用于解释或利用本示例的唯一形式。本说明书阐述本示例的功能以及用于构造和操作本示例的步骤序列。然而,相同或等价的功能与序列可由不同的示例来实现。
虽然此处将各示例描述并示出为在动态片段映射系统中实现,但是所描述的系统只是作为示例而非限制来提供的。本领域的技术人员将会认识到,本发明的示例适于在各种不同类型的动态片段映射系统中应用。
图1是示出包括常规数据集110、常规存储和查找组件120、常规物理存储130、常规物理存储140、和常规物理存储150的常规数据查找系统100的框图。
常规数据查找系统100可以是任何类型的典型数据库系统,包括诸如
Figure G2007800330122D00051
SQL ServerTM等独立数据库系统,诸如
Figure G2007800330122D00052
.Net、SunMicrosystems Java等并入受管或解释语言系统的数据库系统,等等。常规数据集110可被耦合到常规存储和查找组件120。常规存储和查找组件120可被耦合到常规物理存储130、常规物理存储140、和常规物理存储150。常规物理存储130、常规物理存储140、或常规物理存储150的每一个都可以是典型形式的计算机存储,如易失性或非易失性物理存储器、计算机硬盘驱动器,等等。
常规数据集110可以是以表格结构存储的任何类型的数据。例如,常规数据集110可以是具有常规行和常规列的常规数据库表、可扩展标记语言(XML),等等。常规存储和查找组件120可以是典型地构造的、能够在常规数据查找系统100上执行的软件组件。常规存储和查找组件120可以实现常规存储函数。这种常规存储函数可以提供将常规数据集110的一行或多行存储在常规物理存储130、常规物理存储140、或常规物理存储150的一个中的功能。这种常规存储函数还可以实现固定函数,以确定可以将一行存储在常规物理存储130、常规物理存储140、或常规物理存储150的哪一个。
常规存储和查找组件120还可以实现常规固定查找函数。这种常规固定查找函数可以提供发现存储在常规物理存储130、常规物理存储140、或常规物理存储150中的常规数据集110的一行或多行的位置的功能。这种常规固定查找函数还可以利用常规存储函数所使用的固定函数,来发现常规数据集110的一行或多行的位置。
例如,常规存储函数可以利用物理存储单元的计数来确定将常规数据集100的一行或多行存储在何处。在一示例中,常规存储和查找组件120最初可以被耦合到常规物理存储130和常规物理存储140。常规存储函数可以将奇数行存储在常规物理存储130中,而将偶数行存储在常规物理存储140中。常规查找函数因而可以在常规物理存储130中定位与奇数行相关联的数据,而在常规物理存储140中定位与偶数行相关联的数据。
继续该示例,常规存储和查找组件120随后可以响应于常规物理存储130或常规物理存储140被填满,而添加常规物理存储150。然而,常规存储和查找组件120可能不能简单地将存储在常规物理存储130或常规物理存储140的各行,迁移到常规物理存储150如前所述,常规查找函数可能期望在常规物理存储130中找到奇数行,而在常规物理存储150中找到偶数行。因此,常规查找函数可以扩展固定函数,以便常规数据集110的第一行可以存储在常规物理存储130中,第二行可以存储在常规物理存储140中,第三行可以存储在常规物理存储150中,第四行可以存储在常规物理存储130中,依此类推,来重复这一模式。
从以上示例可以看出,添加常规物理存储150可能要求完全改组先前存储在常规物理存储130和常规物理存储140上的数据。另选地,常规存储和查找组件120可以由包括新的常规存储方法和新的常规查找方法的备选常规存储和查找组件来替换。这种新的常规存储方法和新的常规查找方法可以包括在常规物理存储130、常规物理存储140、或常规物理存储150的每一个中存储和取回数据的功能。然而,如果应当引入附加的常规物理存储位置,则也可能需要附加的新的常规存储和查找组件替换先前的常规存储和查找组件。
一种实现允许将数据从一个物理存储位置容易地移动到另一位置,而不要求每次添加或移除物理存储位置时,都改组所有物理存储位置上的所有数据的方法的系统,是有用的。
图2是示出包括示例查找组件210的动态片段系统200的框图,示例查找组件210包括用于创建片段映射的示例方法400、用于拆分实际片段的示例方法500、用于合并实际片段的示例方法700、以及用于查找片段位置的示例方法900。
动态片段系统200可以是任何类型的典型数据库系统,包括诸如
Figure G2007800330122D00071
SQL ServerTM等独立数据库系统,诸如.Net或SunMicrosystems Java等并入受管或解释语言系统的数据库系统,等等。然而,动态片段系统200可被用在任何类型的计算机系统中,以提供此处所描述的功能。本领域技术人员将理解,动态片段系统200包括可被用在大量应用中的功能,在这些应用中,第一标识符可被映射到第二标识符。片段还可被称为数据集的子集。
数据集110可被耦合到存储和查找组件210。存储和查找组件210可被耦合到物理存储位置130、物理存储位置140、和物理存储位置150。数据集110可以是存储在表格结构中的任何类型的数据。例如,数据集110可以是具有常规行和常规列的常规数据库表。数据集110的常规列可被指定为包括唯一标识符或唯一键。
存储和查找组件210可以是典型地构造的、能够在动态片段系统200上执行的软件组件。物理存储位置130、物理存储位置140、或物理存储位置150的每一个都可以是典型形式的计算机存储,如易失性或非易失性物理存储器、计算机硬盘驱动器,等等。
存储和查找组件210还可以实现用于创建片段映射的示例方法400、用于拆分实际片段的示例方法500、用于合并实际片段的示例方法700、以及用于查找片段位置的示例方法900,等等。用于创建片段映射的方法400将在图4的描述中更全面地讨论。用于拆分实际片段的方法500将在图5的描述中更全面地讨论。用于合并实际片段的方法700将在图7的描述中更全面地讨论。用于查找片段位置的方法900将在图9的描述中更全面地讨论。
图3是示出片段映射数据结构300的框图。片段映射数据结构300可以是数组、列表、集合、或特定数据类型的同类元素的任何其它分组的形式的、典型的计算机数据结构。
片段映射数据结构300可以包括映射330,映射330可以包括由还作为逻辑片段id的数字来索引的一组元素。映射330还可以包括实际片段映射310和虚拟实际片段映射320。实际片段映射310可以包括映射330的任何数量的元素。此外,实际片段元素310的每一元素可以包括可以引用诸如第一实际片段340和/或第二实际片段350等实际片段的标识符、记号等。在替换示例中,实际片段映射310的每一元素都可以将索引引用到另一类似的片段映射结构中。
如前所述,映射330中的每一元素可以由数字来索引,如图3中通过数字0到n+1所示。此外,包括在虚拟实际片段映射320中的映射300中的元素,可以具有索引值,该索引值在被传递过一函数时,该函数可以返回落入实际片段映射310内的索引值。以此方式,虚拟实际片段映射320中的元素的索引值,被使用该函数来“映射”到实际片段映射310中的对应的元素。这种函数将在图4、图5、图7和图9的描述中更全面地描述。
此外,由于实际片段映射310中的元素可以包括对应于实际片段340、第二实际片段350等的标识符,虚拟实际片段映射320中的元素因而“指向”实际片段340或第二实际片段350之一。这种关系由在实际片段340中包括索引值0、2、4、6到n和在第二实际片段350中包括索引值1、3、5、7和n+1来示出。
在一实施例中,片段映射数据结构300中的实际片段映射310可被用来将数据集中的各行映射到物理存储位置。在替换实施例中,片段映射数据结构300中的实际片段映射310可被用来将任何经索引的数据映射到任何对应的片段类型。在另一替换实施例中,实际片段映射310可被用来将虚拟标识符映射到另一片段映射结构中的实际标识符。现在讨论用于创建片段映射结构的示例实施例的示例方法。
图4是示出用于创建片段映射的示例方法400的流程图。
框410可以指的是可以在其中确定片段的初始数量的操作。可以使用任何方法来确定片段的初始数量。在一实施例中,片段的初始数量可被确定为2的幂。在替换示例中,片段的初始数量可被确定为实际片段映射的大小的因数。在另一替换示例中,片段的初始数量可以与片段的初始数量所表示的数据集的大小相关。
框420可以指的是可以在其中确定实际片段映射的大小的操作。实际片段映射可以包括表示实际片段、物理片段、虚拟片段等的物理存储位置的标识符、记号等。可以使用任何方法来执行这一确定。在一实施例中,实际片段映射的大小是基于在框410处所确定的片段的初始数量的大小来确定的。如果该确定未产生作为2的幂的实际映射大小,则可以选择下一最接近的2的幂。
框430可以指的是可以在其中创建具有索引值和元素的数组的操作。可以创建具有在框420处确定的实际片段映射的大小的数组。在替换实施例中,可以创建等于在框410处所创建的初始片段映射的大小和在框420处所创建的实际片段映射的大小的组合的数组。在另一替换实施例中,大小大于或小于在框400处所创建的初始片段映射的大小和在框420处所创建的实际片段映射的大小的组合的数组可被创建并被动态地调整到另一大小。
框440可以指的是可以在其中用各个值填充在框420所确定的实际片段映射的各元素的操作。可以使用任何方法来选择各值,且这些值可以是标识符、记号等。在一实施例中,这些值是实际片段的物理位置的引用。可以使用任何方法来将这些值插入到实际片段映射中。
图5是示出用于拆分实际片段的示例方法500的流程图。片段映射可以是诸如在图3中所讨论的数组。
框510可以指的是在其中标识了增长得过大的片段的操作。这种标识可以采用以下形式:查询片段,并作出该片段可能容量已满或大于所需大小,并且不能存储任何附加信息的进一步的判定。出于演示的目的,LARGE_AF可以指的是增长得过大的片段。
框520可以指的是在其中确定在实际片段映射中LARGE_AF是否被引用了超过一次的判定。响应于否定判定,流程继续至框530。响应于肯定判定,流程继续至框540。
框530可以指的是在其中加倍实际片段映射的大小的操作。然而,本领域技术人员可以理解,实际片段映射在大小上可以按任何适当的因数来增加。在加倍实际片段映射的大小之后,原始实际片段映射中的元素的值被复制到该实际片段映射的新创建的元素中。
框540可以指的是在其中创建新的实际片段的操作。这一实际片段可以是“空的”,可以不包含任何信息,等等。出于讨论的目的,这一新的实际片段可被称为NEWAF。
框550可以指的是在其中为在框540中创建的实际片段选择或创建新的标识符的操作。这一标识符可以是数字、记号、任意值,等等。出于讨论的目的,这一新的标识符可被称为NEW AF ID。
框560可以指的是在其中实际片段映射的各条目中曾用标识符LARGE_AF填充的一个,可被改变为在框550处所选择或创建的NEW AF ID的操作。
框570可以指的是在其中数组的虚拟实际片段映射中与现指向NEW AFID的ID相关联的数据行,可被从LARGE_AF片段移动到NEW AF的操作。可以使用任何手段来实现这一信息移动。例如,该消息可从一个物理存储设备复制到另一个,可通过网络来复制,可从物理存储器的一个区域复制到物理存储器的另一个区域,等等。
以下附图可以利用一系列图来示出图5的方法。
图6是示出在实际片段拆分期间,示例片段映射和示例物理位置中的状态转移600的框图。
框A 610可以指的是在其中实际片段映射640包括两个元素的状态。实际片段映射640的第一元素可以包括对应于第一实际片段670的标识符。实际片段映射640的第二元素可以包括对应于第二实际片段680的标识符。在框A 610中,第二实际片段680可以被填满。注意,使用前述的映射函数,第一实际片段670中所包括的信息可被映射到实际片段映射640的第一元素。此外,使用前述的映射函数,第二实际片段680中所包括的信息也可被映射到实际片段映射640的第二元素。这一映射可由框A 610中的箭头来表示。
框B 620可以指的是在其中实际片段映射640在大小上被加倍,以创建经扩展的实际片段映射650的状态。包括在实际片段映射640的第一和第二元素中的标识符,可能已被复制到经扩展的实际片段映射650的新创建的元素中。在框B 620中可以看到,经扩展的实际片段映射650的第一和第三元素可以对应于第一实际片段670。此外,经扩展的实际片段映射650的第二和第四元素可以对应于第二实际片段680。
注意,可以将与经扩展的实际片段映射650相关联的虚拟实际片段的各元素映射到第一实际片段670,并将经扩展的实际片段映射650的第二和第四元素映射到第二实际片段680的映射函数,可以是模函数。例如,该模函数可以返回,经扩展的实际片段映射650的大小除以经扩展的实际片段映射650中的元素的索引号的余数,或除以经扩展的实际片段映射650的元素中除索引值之外的任何其它部分-如虚拟实际片段映射-的余数。然而,可以使用产生这种行为的任何类型的散列函数或映射函数。
框C 630可以指的是在其中可能已添加第三实际片段690的状态。经扩展的实际片段映射650中的第四条目可被修改成创建最终经扩展的实际片段映射660。最终经扩展的实际片段映射660的第四元素现在可以对应于第三实际片段690。即,因为前述映射函数可以将虚拟实际片段映射中的元素映射到最终经扩展的实际片段映射660中的第二或第四元素,所以虚拟实际片段映射中曾对应于第二条目的元素现在可以对应于第四条目。因此,这些元素现在可以对应于新的片段——第三实际片段690。最后,曾存储在第二实际片段680、现在映射到最终经扩展的实际片段映射660中的第四元素上的任何信息被转移到第三实际片段690。
图7是示出用于合并实际片段的示例方法700的流程图。
框710可以指的是在其中实际片段被标识为要被合并的候选的操作。这一标识可以采用以下形式:查询实际片段,并作出该片段可能具有大量空闲或空的存储空间的进一步判定。出于讨论的目的,这一候选实际片段可被称为AF_M。AF_M ID可以指的是与所标识的片段相关联的标识符。
框720可以指的是在其中查询实际片段映射,以确定实际片段映射是否包括候选实际片段AF_M的潜在的合并伙伴的判定。在一实施例中,查询具有像空闲存储空间等类似因素的实际片段映射中的元素,以确定实际片段之一是否是候选实际片段AF_M的潜在的合并伙伴。然而,实际片段中的任何元素都可以是候选实际片段AF_M的潜在的合并伙伴。响应于否定判定,流程继续至框770。响应于肯定判定,潜在的合并伙伴实际片段成为合并伙伴实际片段,且流程继续至框730。
框730可以指的是在其中存储在实际片段AF_M上的任何信息被移动到已经在框720处标识的合并伙伴实际片段的操作。
框740可以指的是在其中实际片段映射中的先前包括对候选实际片段的引用的映射条目,被修改成包括对已经在框720处标识的合并伙伴实际片段的标识符的引用的操作。
框750可以指的是在其中确定实际片段映射是否可被折叠或在大小上减小的判定。在一实施例中,检查实际片段映射,并且如果实际片段映射的元素包括形成规律模式的标识符,则实际片段映射可以按与该模式重复的次数相关的因数来折叠。例如,实际片段映射可以包括四个元素,第一和第三元素包括第一标识符,而第二和第四元素包括第二标识符。该实际片段映射可以折叠,因为标识符遵循第一标识符、第二标识符的重复模式。响应于否定判定,流程继续至框770。响应于肯定判定,流程继续至框760。
框770可以指的是在其中该方法终止的操作。
框760可以指的是在其中折叠实际片段映射的操作。可以使用任何方法来执行这一折叠。在一实施例中,实际片段映射可以通过减少包括在实际片段映射中的元素的数量来折叠。以下附图可以利用一系列图来示出图7的方法。
图8是示出在实际片段合并期间,示例片段映射和示例物理位置中的状态转移800的框图。
框A 810可以指的是在其中实际片段映射840包括四个元素的状态。实际片段映射840的第一元素可以包括对应于第一实际片段870的标识符。实际片段映射840的第二元素可以包括对应于第二实际片段880的标识符。实际片段映射840的第三元素可以包括对应于第一实际片段870的标识符。最后,实际片段映射840的第四元素可以包括对应于第三实际片段890的标识符。
在框A 810,第三实际片段890可以存储小于某一最小量的数据。注意,包括在第三实际片段890中的信息可由实际片段映射840的第四元素来引用。这一引用可由框A 810中的箭头来表示。相关联的虚拟实际片段映射中的元素未示出,但虚拟实际片段映射中的这些元素可以使用前述映射函数与实际片段映射840中的各元素之一相关联。这一映射函数可以是利用实际片段映射840的大小来确定余数的模函数。
框B 820可以指的是在其中经修改的实际片段映射850的第四元素已被改变成包括对应于第二实际片段880的标识符的状态。另外,存储在第三实际片段890上的信息可被移动到第二实际片段880。
框C 830可以指的是在其中框B 820的经修改的实际片段映射850可以折叠,以产生经折叠的实际片段映射860的状态。注意,相关联的虚拟实际片段映射中的元素,先前可能使用映射函数而被映射到实际片段的第三和第四元素。因为这一映射函数可以是利用经折叠的实际片段映射860的大小的模函数,所以相关联的虚拟实际片段映射中的元素现在可以映射到经折叠的实际片段映射860的第一或第二元素。
图9是示出用于操作片段的位置的示例方法900的流程图。
框910可以指的是可以在其中使用散列函数来将数据集中的一行映射到可包括在虚拟实际片段映射中的一个元素的操作。在一实施例中,散列函数可取数据集中的一行的列值作为参数,并返回虚拟实际片段映射的元素索引值。然而,可以使用可以将一片信息映射到虚拟实际片段映射中的索引的任何散列函数。
框920可以指的是可以在其中使用包装或映射函数来发现实际片段映射中的、在框910处所确定的元素索引可以映射到的对应的元素的操作。在一实施例中,包装函数可以是模函数,其可以通过将在框910处所确定的元素索引除以实际片段映射的大小并返回余数,来返回实际片段映射索引。然而,可以使用将虚拟实际片段映射中的元素索引映射到实际片段映射中的元素索引的任何包装函数。
框930可以指的是在其中定位在框920处所确定的实际片段映射中的元素索引的操作。
框940可以指的是在其中读取标识符的操作,该标识符可被存储在已在框930处被定位的实际片段映射中的元素索引处。这一读取操作可以使用任何典型的数组数据读取操作来实现。
图10是示出用于拆分实际片段和用于在片段映射中将片段标记为具有数据倾斜的示例方法1000的流程图。
框1010可以指的是在其中标识了增长得过大的片段的操作。这种标识可以采用以下形式:查询片段,并作出该片段容量已满或大于所需大小,并且不能存储任何附加信息的进一步判定。出于讨论的目的,LARGE_AF可以指的是增长得过大的片段。
框1020可以指的是确定在框1010处所标识的片段是否处于数据倾斜的情况的判定。数据倾斜可以指的是一种情况,在这种情况下,超过预定阈值的多行数据可能映射到单个片段。此外,片段映射可能处于该片段不再能如图5的讨论所述的那样来拆分的情况。响应于否定判定,流程继续至图5的框500。响应于肯定判定,流程继续至框1030。
框1030可以指的是在其中在框1010处所标识的片段具有的元素索引添加数据倾斜标志,以指定该片段处于数据倾斜的情况的操作。这一标志可以是任何类型的数据或信息。例如,数据倾斜标志可以是所存储的具有存储在框1010处所标识的实际片段LARGE_AF处的任何信息的数据的附加部分。
框1040可以指的是在其中先前存储在在框1010处所标识的片段LARGE_AF上的信息或数据,被分发到所有其它片段的操作。可以使用任何方法来执行这一分发。例如,存储在LARGE_AF上的信息或数据可被复制到所有其它片段所表示的本地物理存储,可通过网络连接复制到所有其它片段所表示的其它物理存储,等等。
图11是示出在包括数据倾斜的实际片段拆分期间,示例片段映射和示例物理位置中的状态转移1100的框图。
框A 1110可以指的是在其中实际片段映射1130包括四个元素的状态。实际片段映射1130的第一元素可以包括对应于第一实际片段1150的标识符。实际片段映射1130的第二元素可以包括对应于第二实际片段1160的标识符。实际片段映射1130的第三元素可以包括对应于实际片段1150的标识符。最后,实际片段映射1130的第四元素可以包括对应于第三实际片段1170的标识符。在框A 1110,第三实际片段1170可处于数据倾斜的情况。
框B 1120可以指的是在其中实际片段映射1140的第四元素可以包括由图中的小写字母“x”所表示的数据倾斜标志。数据倾斜标志的存在可以指示,实际片段映射1140的第四元素现在可以映射到实际片段1150、第二实际片段1160、和第三实际片段1170的全部。此外,先前存储在第三实际片段1170上的信息现在可能已被移动到实际片段1150和第二实际片段1160的每一个。
图12是示出用于使用片段标识符,来查找具有数据倾斜的片段的物理位置的标识符的示例方法1200的框图。
框900可以指的是用于使用在图9中所描述的片段标识符,来查找片段的物理位置的标识符的示例方法。
框1210可以指的是关于在框900处所查找的片段是否映射到片段映射中包括数据倾斜的元素的判定。这一判定可以采用任何形式。例如,可以读取对应于该片段的元素,并查询所返回的信息,以确定该信息是否包括数据倾斜标志。响应于否定判定,流程继续至框1220。响应于肯定判定,流程继续至框1230。
框1220可以指的是在其中从在框900处所标识的片段读取信息的操作。
框1230可以指的是在其中从片段映射中的每一片段读取信息的操作。
图13示出用于实现所述系统和方法的示例计算机设备1300。在其最基本的配置中,计算设备1300一般至少包括一个中央处理单元(CPU)1305和存储器1310。
取决于计算设备的确切配置和类型,存储器1310可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。另外,计算设备1300还可具有附加的特征/功能。例如,计算设备1300可包括多个CPU。所述方法可由计算设备1300中的任何处理单元以任何方式来执行。例如,所述过程可由多个CPU并行执行。
计算设备1300还可包括另外的存储(可移动和/或不可移动),其包括但不限于磁盘、光盘或磁带。这样的另外的存储在图13中由存储1315示出。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器1310和存储1315都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并且可由计算设备1300访问的任何其它介质。任何这样的计算机存储介质都可以是计算设备1300的一部分。
计算设备1300还可包含允许该设备与其它设备通信的通信设备1340。通信设备1340是通信介质的一个示例。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。如此处所用的术语计算机可读介质或设备可读介质,既包括计算机存储介质又包括通信介质。所述方法可用诸如数据、计算机可执行指令等任何形式编码在任何计算机可读介质中。
计算设备1300也可以具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备1335。也可以包括诸如显示器、扬声器、打印机等的输出设备1330。所有这些设备在本领域是公知的,因此不必在此详细讨论。
本领域的技术人员将认识到用于存储程序指令的存储设备可分布在网络上。例如,远程计算机可存储描述为软件的该过程的示例。本地或终端计算机可访问远程计算机并下载该软件的一部分或全部以运行该程序。可替换地,本地计算机可按需下载软件的片断,或者通过在本地终端上执行一些软件指令而在远程计算机(或计算机网络)上执行一些软件指令来分布式地处理。本领域的技术人员将认识到,通过使用本领域技术人员已知的常规技术,软件指令的全部或部分可由专用电路,如DSP、可编程逻辑阵列等来执行。

Claims (11)

1.一种用于数据片段映射拆分的方法,包括:
标识增长得过大的片段;
确定所述片段在实际片段映射中是否被引用了超过一次;
若所述片段未被引用超过一次,增加所述实际片段映射的大小;
选择新的记号来标识新的实际片段;以及
用所述新的记号修改实际片段映射中的条目。
2.如权利要求1所述的方法,其特征在于,增加所述实际片段映射的大小,使所述实际片段映射的大小加倍。
3.如权利要求1所述的方法,其特征在于,与所述新的记号相关联的数据从所述片段移动到所述新的实际片段。
4.如权利要求1所述的方法,其特征在于,所述片段是数据集的子集。
5.如权利要求1所述的方法,其特征在于,所述实际片段映射是数组。
6.如权利要求1所述的方法,其特征在于,所述修改实际片段映射中的条目指修改实际片段映射中的至少一个条目。
7.一种用于数据片段映射合并的方法,包括:
标识大小低于预定阈值的片段;
在实际片段映射中标识所述片段的合并伙伴;
用所述合并伙伴的标识符修改所述实际片段映射中对应于所述片段的条目;以及
如果所述实际片段映射可被减少,则减少所述实际片段映射的大小。
8.如权利要求7所述的方法,其特征在于,还包括将与所述片段相关联的数据移动到与所述合并伙伴相关联的物理存储。
9.如权利要求7所述的方法,其特征在于,所述片段是数据集的子集。
10.如权利要求7所述的方法,其特征在于,所述实际片段映射的大小按因数2而减少。
11.如权利要求7所述的方法,其特征在于,所述修改所述实际片段映射中对应于所述片段的条目指修改实际片段映射中的至少一个条目。
CN2007800330122A 2006-09-06 2007-08-18 动态片段映射 Active CN101512526B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/470,586 2006-09-06
US11/470,586 US7523288B2 (en) 2006-09-06 2006-09-06 Dynamic fragment mapping
PCT/US2007/076257 WO2008030694A1 (en) 2006-09-06 2007-08-18 Dynamic fragment mapping

Publications (2)

Publication Number Publication Date
CN101512526A CN101512526A (zh) 2009-08-19
CN101512526B true CN101512526B (zh) 2011-12-07

Family

ID=39153420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800330122A Active CN101512526B (zh) 2006-09-06 2007-08-18 动态片段映射

Country Status (7)

Country Link
US (1) US7523288B2 (zh)
EP (1) EP2069979B1 (zh)
JP (1) JP4669067B2 (zh)
KR (1) KR101467589B1 (zh)
CN (1) CN101512526B (zh)
TW (1) TWI372981B (zh)
WO (1) WO2008030694A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
EP2605143A4 (en) * 2010-08-13 2014-10-08 Fujitsu Ltd MEMORY CONTROL DEVICE, INFORMATION PROCESSING DEVICE AND CONTROL METHOD FOR A MEMORY CONTROL DEVICE
GB2489405B (en) * 2011-03-22 2018-03-07 Advanced Risc Mach Ltd Encrypting and storing confidential data
KR20130014943A (ko) * 2011-08-01 2013-02-12 삼성전자주식회사 임의의 메모리 집합을 지원하는 메모리 구성 장치 및 방법
US20140344235A1 (en) * 2013-05-17 2014-11-20 Emmanuel Zarpas Determination of data modification
CN103441937A (zh) * 2013-08-21 2013-12-11 曙光信息产业(北京)有限公司 组播数据的发送方法和接收方法
US9405643B2 (en) 2013-11-26 2016-08-02 Dropbox, Inc. Multi-level lookup architecture to facilitate failure recovery
US9547706B2 (en) * 2014-03-10 2017-01-17 Dropbox, Inc. Using colocation hints to facilitate accessing a distributed data storage system
US20170255565A1 (en) * 2016-03-02 2017-09-07 Intel Corporation Method and apparatus for providing a contiguously addressable memory region by remapping an address space
US10509798B2 (en) * 2016-05-11 2019-12-17 Informatica Llc Data flow design with static and dynamic elements
CN106227678B (zh) * 2016-07-21 2018-12-28 北京四维益友信息技术有限公司 一种虚拟存储介质的存取方法
CN108509438B (zh) * 2017-02-24 2021-08-31 南京烽火星空通信发展有限公司 一种ElasticSearch分片扩展方法
US11194495B2 (en) 2017-04-27 2021-12-07 EMC IP Holding Company LLC Best-effort deduplication of data while the data resides in a front-end log along an I/O path that leads to back end storage
WO2018199796A1 (en) 2017-04-27 2018-11-01 EMC IP Holding Company LLC Consolidating temporally-related data within log-based storage
US11402998B2 (en) 2017-04-27 2022-08-02 EMC IP Holding Company LLC Re-placing data within a mapped-RAID environment comprising slices, storage stripes, RAID extents, device extents and storage devices
WO2019022631A1 (en) * 2017-07-27 2019-01-31 EMC IP Holding Company LLC STORING DATA IN DIFFERENTLY SIZED WAFERS WITHIN DIFFERENT STORAGE LEVELS
CN107465573B (zh) * 2017-08-04 2020-08-21 苏州浪潮智能科技有限公司 一种提高ssr客户端在线监控效能的方法
US11199968B2 (en) 2017-10-26 2021-12-14 EMC IP Holding Company LLC Using recurring write quotas to optimize utilization of solid state storage in a hybrid storage array
WO2019083389A1 (en) 2017-10-26 2019-05-02 EMC IP Holding Company LLC MANAGING A FILE SYSTEM IN MULTIPLE LOGIC UNIT NUMBERS (LUN)
US11461250B2 (en) 2017-10-26 2022-10-04 EMC IP Holding Company LLC Tuning data storage equipment based on comparing observed I/O statistics with expected I/O statistics which are defined by operating settings that control operation
CN108776692A (zh) * 2018-06-06 2018-11-09 北京京东尚科信息技术有限公司 用于处理信息的方法和装置
CN112306372A (zh) 2019-07-31 2021-02-02 伊姆西Ip控股有限责任公司 用于处理数据的方法、设备和程序产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881379A (en) * 1996-05-20 1999-03-09 International Business Machines Corporation System, method, and program for using duplicated direct pointer sets in keyed database records to enhance data recoverability without logging
US6874061B1 (en) * 1998-10-23 2005-03-29 Oracle International Corporation Method and system for implementing variable sized extents

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555404A (en) * 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
JP3345628B2 (ja) * 1997-07-11 2002-11-18 アネックスシステムズ株式会社 データ格納及び検索方法
US6055604A (en) * 1997-08-26 2000-04-25 Hewlett-Packard Company Forced transaction log posting using a least busy storage media without maintaining redundancy of the transaction log
JPH11110262A (ja) * 1997-10-01 1999-04-23 Toshiba Corp 情報管理システム
JP4206586B2 (ja) * 1999-11-12 2009-01-14 株式会社日立製作所 データベース管理方法および装置並びにデータベース管理プログラムを記録した記憶媒体
US6523036B1 (en) * 2000-08-01 2003-02-18 Dantz Development Corporation Internet database system
US7162478B2 (en) * 2001-02-28 2007-01-09 International Business Machines Corporation System and method for correlated fragmentations in databases
JP2004021797A (ja) * 2002-06-19 2004-01-22 Hitachi Ltd データベース管理方法および装置
US6941310B2 (en) * 2002-07-17 2005-09-06 Oracle International Corp. System and method for caching data for a mobile application
AU2003262065A1 (en) * 2002-09-10 2004-04-30 Annex Systems Incorporated Database re-organizing system and database
US7237062B2 (en) * 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881379A (en) * 1996-05-20 1999-03-09 International Business Machines Corporation System, method, and program for using duplicated direct pointer sets in keyed database records to enhance data recoverability without logging
US6874061B1 (en) * 1998-10-23 2005-03-29 Oracle International Corporation Method and system for implementing variable sized extents

Also Published As

Publication number Publication date
JP4669067B2 (ja) 2011-04-13
TW200825800A (en) 2008-06-16
CN101512526A (zh) 2009-08-19
WO2008030694A1 (en) 2008-03-13
KR101467589B1 (ko) 2014-12-02
KR20090048624A (ko) 2009-05-14
EP2069979A1 (en) 2009-06-17
JP2010503117A (ja) 2010-01-28
US20080059749A1 (en) 2008-03-06
US7523288B2 (en) 2009-04-21
TWI372981B (en) 2012-09-21
EP2069979A4 (en) 2016-08-03
EP2069979B1 (en) 2018-10-24

Similar Documents

Publication Publication Date Title
CN101512526B (zh) 动态片段映射
CN1983266B (zh) 闪速类介质中存储事务记录的文件系统
US7788287B2 (en) System and method for storing and accessing data in an interlocking trees datastore
US7571299B2 (en) Methods and arrangements for inserting values in hash tables
US6728705B2 (en) System and method for selecting content for displaying over the internet based upon some user input
US5765165A (en) Fast method of determining duplicates on a linked list
CN104794177A (zh) 一种数据存储方法及装置
CN100565508C (zh) 结构化文档管理设备、搜索设备、存储和搜索方法
CN101091181A (zh) 保存和恢复互锁树数据库
CN102016789A (zh) 数据处理装置和处理数据的方法
CN103390020A (zh) 在数据库中存储数据的方法和系统
CN102341802B (zh) 图的相似度计算系统和方法
CN101840400A (zh) 一种多级分类检索方法及系统
CN102467521A (zh) 一种易扩展的多级分类检索方法及系统
CN110109894B (zh) 非关系型数据库的实现方法、装置、存储介质和设备
JP2001043237A (ja) データファイル及びデータ検索方法
CN101963993B (zh) 一种数据库单表记录快速查找的方法
CN101430685A (zh) 下载方法及其系统
CN102193988A (zh) 一种图形数据库节点数据的检索方法及系统
CN101814064B (zh) 报表模板的创建方法、报表生成方法及报表系统
CN105389394A (zh) 基于多个数据库集群的数据请求处理方法及装置
JP2002108844A (ja) Xmlデータ分割編集装置
JP2000132439A (ja) パーソナルコンピュータのハードディスクに記憶されたファイルを検索する検索システム
CN104050048A (zh) 冗余联系人记录清理方法和系统
EP1480140A2 (en) Storing element-based descriptions of documents in a database

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150511

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150511

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.