CN101339538B - 使用页结构的数据树存储方法、系统和计算机程序产品 - Google Patents
使用页结构的数据树存储方法、系统和计算机程序产品 Download PDFInfo
- Publication number
- CN101339538B CN101339538B CN2008101319860A CN200810131986A CN101339538B CN 101339538 B CN101339538 B CN 101339538B CN 2008101319860 A CN2008101319860 A CN 2008101319860A CN 200810131986 A CN200810131986 A CN 200810131986A CN 101339538 B CN101339538 B CN 101339538B
- Authority
- CN
- China
- Prior art keywords
- node
- leaf
- index
- page
- leaf node
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种使用页结构的数据树存储方法、系统和计算机程序产品。通过将叶节点和包括指向叶节点的指针的索引节点存储在以每页为基础读的闪存装置中的同一页中来在闪存装置中存储树数据结构。例如,当键值被添加到叶节点或者从叶节点删除键值时,叶节点的修改版本和索引节点的修改版本可被存储在闪存装置的新的页中。
Description
本申请要求在2007年7月4日提交到韩国知识产权局的第10-2007-0067129号韩国专利申请的优先权,该申请全部公开于此以资参考。
技术领域
本申请涉及闪存装置及其操作方法,更具体地讲,涉及闪存装置的数据存储方法、系统和计算机程序产品。
背景技术
闪存装置是即使在没有电源的情况下也能在存储芯片上保留数据的非易失性存储装置。尽管闪存装置通常比例如用作个人计算机(PC)的主存储器的动态随机存取存储器(DRAM)慢,但是通常比硬盘读的速度要高并且更能抵抗冲击。另外,闪存装置通常能够抵抗来自周围的冲击,比如高的压力和沸腾的水。因为这些特性,闪存装置被广泛用作用电池操作的装置中的存储单元。
闪存装置是电可擦除可编程非易失性存储装置。通常的闪存装置可按块被擦除和被编程。因为通常闪存装置相对便宜,所以它们被广泛用作高容量固态非易失性存储器。使用闪存的典型实例是在数字音乐播放器、数字相机和蜂窝电话中。闪存装置还用作通用串行总线(USB)驱动器,所述USB存储器被广泛用于在计算机之间存储和传送数据。
因为硬盘驱动器机械地驱动磁盘以读/写数据,通常在结构上限制了硬盘的操作速度上的增加。为此,已经试图使用用于高容量存储器的闪存来替换硬盘驱动器。例如,在闪存中存储启动代码时可增加系统启动速度。
发明内容
本发明的一些实施例提供一种用于闪存的索引方案。
本发明的实施例提供基于包括多页的闪存的树结构的索引方法,所述索引方法包括:将叶节点和与叶节点相关的索引节点存储在闪存的同一页中。
在一些实施例中,每页存储高达k个叶节点和/或索引节点,k为正数。
在其他实施例中,以页为基础对闪存装置进行读或写操作。
在一些实施例中,存储在页中的叶节点或索引节点的数量取决于树的高度。
在一些实施例中,索引节点中的最高索引节点是根节点。
在一些实施例中,索引方法还包括对叶节点进行修改。
在一些实施例中,对叶节点进行修改的步骤还包括:改变与将被修改的叶节点相关的索引节点的指针;并把将被修改的叶节点和修改的索引节点存储在新的一页中。
在一些实施例中,索引方法还包括插入新的叶节点。
在一些实施例中,插入新的叶节点的步骤包括:改变与新的叶节点相关的索引节点的指针;并将新的叶节点和与所述新的叶节点相关的索引节点存储在新的页中。
在一些实施例中,插入新的叶节点的步骤还包括:确定与新的叶节点相关的索引节点是否满;如果与新的叶节点相关的索引节点满,则将索引节点划分为第一索引节点和第二索引节点;产生第一索引节点和第二索引节点的上层节点。
在一些实施例中,索引方法还包括将新的键值插入到叶节点。
在一些实施例中,插入新的键值的步骤包括:确定将插入新的键值的叶节点是否满;如果将插入新的键值的叶节点满,则将叶节点划分为第一叶节点和第二叶节点;并将新的键值插入到第一叶节点和第二叶节点中的一个节点中。
在一些实施例中,第一叶节点和第二叶节点被分别存储在闪存中的新的页中。
在一些实施例中,插入新的键值的步骤还包括:确定与新的叶节点相关的索引节点是否满;如果与新的叶节点相关的索引节点满,则将索引节点划分为第一索引节点和第二索引节点;产生第一索引节点和第二索引节点的上层索引节点。
在一些实施例中,第一索引节点被存储在与第一叶节点和第二叶节点中的一个节点相同的页中,第二索引节点与上层索引节点一起被存储在新的页中。
在一些实施例中,索引方法还包括删除叶节点。
在一些实施例中,删除叶节点的步骤包括:确定与删除的叶节点相关的索引节点是否指定另一叶节点;如果与删除的叶节点相关的索引节点没有指定另一叶节点,则删除索引节点。
在一些实施例中,删除叶节点的步骤还包括:如果树的根节点具有一个子节点,则将树的高度减小1,并将根节点的子节点设置为新的根节点。
在一些实施例中,删除叶节点的步骤还包括将新的根节点存储在新的页中。
在一些实施例中,索引方法基于μ-树结构。
在本发明的其他实施例中,系统包括:闪存,包括多页;处理器,访问闪存,其中,处理器执行上述的索引方法。
本发明的一些实施例提供一种将树数据结构存储在闪存装置中的方法,其中,叶节点和包括指向叶节点的指针的索引节点被存储在闪存装置的同一页中。例如,当将键值添加到叶节点或者从叶节点删除键值时,可将叶节点的修改版本和索引节点的修改版本存储在闪存装置的新的页中。索引节点的修改版本可包括指向所述新的页的指针。可存储在闪存装置的页中的树结构的节点的最大数量可取决于树数据结构的高度,并且树数据结构的节点的最大大小取决于树数据结构中的节点的层次。
在一些实施例中,将叶节点的修改版本和索引节点的修改版本存储在闪存装置的新的页中的步骤可包括:如果叶节点满,则将叶节点划分为第一叶节点和第二叶节点;将新的键值插入到第一叶节点和第二叶节点中的一个叶节点中,并将第一叶节点和第二叶节点存储在闪存装置的各自的新的页中。将叶节点的修改版本和索引节点的修改版本存储在闪存装置的新的页中的步骤还可包括:如果索引节点满,则将索引节点划分为第一索引节点和第二索引节点;产生指向第一索引节点和第二索引节点的高层索引节点;将第一索引节点存储在新的页中的第一页中;将第二索引节点和高层索引节点存储在新的页中第二页中。
在一些实施例中,索引节点和叶节点包括来自高层节点的第一分支的第一索引节点和第一叶节点,其中,第一分支与第二分支共享高层节点,所述第二分支包括第二索引节点和第二叶节点。将叶节点和包括指向叶节点的指针的索引节点存储在闪存的同一页中的步骤可包括将第一叶节点和第一索引节点存储在第一页中。高层节点可被存储在第一页中,第二叶节点和第二索引节点可被存储在第二页中。可检测到从第一叶节点删除键值将导致在第一叶节点中没有剩余键值,并且第一索引节点不包括其他指向叶节点的指针。作为响应,第二叶节点的修改版本可被存储在第三页中。这可从树数据结构删除高层节点。
本发明的实施例可提供包括被构造为执行上述操作的处理器的系统。进一步实施例可提供包括被构造为在计算机上执行的计算机程序代码的计算机可读存储介质,所述计算机程序代码包括被构造为执行上述操作的计算机程序代码。
在另外的实施例中,系统包括:闪存装置,包含多页;处理器,与闪存装置相关并被构造为将树数据结构的叶节点和包括指向所述叶节点的指针的索引节点存储在闪存的同一页中。处理器可被构造为操作作为固态盘(SSD)的闪存装置。
附图说明
包括附图以提供对本发明的进一步理解,并且附图被包含在说明书的一部分中并构成说明书的一部分。附图和描述示出本发明的示例性实施例,并用于解释本发明的原理。在附图中:
图1是示出典型的B+树结构被存储在闪存中的实例的示图;
图2是示出对B+树结构中的任何叶节点进行修改然后改变的B+树被存储在闪存中的实例的示图;
图3是示出根据本发明的一些实施例的在闪存中存储μ-树的方案的示图;
图4是示出根据本发明的一些实施例的修改图3所示的在闪存中存储的μ-树的叶节点的方案的概念性示图;
图5是示出根据本发明的一些实施例的在图3所述的闪存中存储的μ-树中插入新的叶节点的方案的概念性示图;
图6是示出根据本发明的一些实施例的删除图3所示的闪存中存储的μ-树的叶节点的方案的概念性示图;
图7是示出根据本发明一些实施例的删除图6所示的闪存中存储的μ-树的叶节点的方案的概念性示图;
图8是示出存储在一页中的叶节点/索引节点的最大可存储大小的随着高度(H)的增加而改变的示图;
图9A是示出包括根节点和叶节点的μ-树的实例的示图;
图9B是示出将键值插入在图9A所示的μ-树的叶节点中的示例性处理的示图;
图9C是示出由图9B示出的键值插入处理导致的改变的μ-树的示图;
图10是示出在处理器的控制下将键值插入μ-树的叶节点的处理的流程图;
图11A是示出用于描述μ-树的键值删除方案的μ-树的示例的示图;
图11B是示出从图11A所示的μ-树的任何叶节点删除键值的示例性处理的示图;
图11C是示出图11A所示的μ-树的键值删除处理导致的改变的μ-树结构的示图;
图12是示出在处理器的控制下从μ-树的叶节点删除键值的处理的流程图;
图13是使用根据本发明一些实施例的索引方案的电子装置的框图;
图14是示出使用根据本发明一些实施例的索引方案的存储器系统的框图;
图15是使用根据本发明一些实施例的索引方案的另一电子装置的框图。
具体实施方式
下面将参照附图来更全面地描述本发明,其中,在附图中显示本发明的实施例。然而,可以以多种不同形式实现本发明,并且不应该将本发明解释为限于这里阐述的实施例。相反,提供这些实施例,从而使本公开彻底和完整,并完全向对本领域的技术人员传达本发明的范围。
在附图中,为了清楚起见,部件的大小或构造可被理想化或者被放大。应该理解,当部件被称作被“连接到”或“结合到”另一部件时,它可被直接连接到或结合到另一部件或者可存在中间部件。相反,当部件被称作被“直接连接到”或“直接结合到”另一部件时,不存在中间部件。相同的标号始终表示相同的部件。如这里所使用的,术语“和/或”包括所列出的相关项的一个或多个的任何和所有结合。
应该理解,尽管术语第一、第二、第三等可在这里被用于描述各种部件、组件和/或部分,但是这些部件、组件和/或部分不应该限于这些术语。这些术语仅用于区分一个部件、组件或部分和另一部件、区域或部分。因此,在不脱离本发明的教导的情况下,下面讨论的第一部件、组件或部分可以被称作第二部件、组件或部分。
这里使用的术语仅为了描述具体实施例,而并不意图限制本发明。如这里所使用的单数形式意图包括复数形式,除非上下文清楚地做出不同的表示。还应该理解在本说明书中使用的术语“包括”明确说明了存在所述特征、整数、步骤、操作、部件和/或组件,并不排除存在或添加一个或多个其他特征、整数、步骤、操作、部件、组件和/或其组合。
除非有不同的限定,这里使用的所有术语(包括科技术语)具有与通常本发明所属领域的技术人员所理解的相同含义。还应该理解,比如在常用的字典里定义的术语,应该被解释为与现有技术中的上下文中的含义一致,并不应该被解释为理想化的或者非正常的意义,除非在这里清楚地定义。
贯穿说明书,术语“写”和“编程”具有相同的含义。
下面将参照示出方法、设备(系统和/或装置)和/或计算机程序产品的示意图来描述本发明的实施例。应该理解示图的块以及示图中块的结合可被计算机程序指令实现。向通用计算机、专用计算机和/或其他可编程数据处理设备的处理器提供这些计算机程序指令以产生机制,从而经过计算机和/或其他可编程数据处理设备的处理器执行的指令创建用于实现在示图中指定的功能/动作的方法(功能性)和/或结构。这些计算机程序指令还可被存储在知道计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,从而存储在计算机可读存储器中的指令产生一项包括实现在示图中指定的功能和动作的指令的产品。计算机程序指令还可被加载到计算机或其他可编程的数据处理设备中以使一系列的操作步骤在计算机或其他可编程设备上执行以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在示图中指定的功能/动作的步骤。
因此,本发明可在硬件和/或软件(包括固件、长驻软件、微代码等)中实现本发明。此外,本发明可采用具有程序代码(指令)的计算机可用或计算机可读存储介质计算机程序产品的形式,所述程序代码(指令)由指令执行系统使用或结合所述指令执行系统使用而在计算机可读存储介质上实现。在本文档的上下文中,计算机可用或计算机可读存储介质可以是包含、存储或传送由指令执行系统、设备或装置使用或结合所述指令执行系统、设备或装置使用的程序。
计算机可用或计算机可读存储介质可以是,例如电、磁、光、电磁或半导体系统、设备或装置。计算机可读存储介质的更具体示例(非穷尽列表)将包括如下内容:便携式计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、便携式光学和/或磁介质(比如闪盘或CD-ROM)。
μ树是修改的B树的树结构,并包括叶节点和索引节点。叶节点包括按升序排列的顺序数据(sequential data),即键值。索引节点包括键值和用于搜索叶节点中的键值的指针。与B树不同,μ树具有按顺序构成链表的叶节点,从而μ树的键值可被顺序处理。μ树被广泛用作访问存储在比如硬盘的存储介质中的数据或者数据库的索引。本发明的一些实施例提供新的μ树结构。
图1是示出在闪存中存储典型的B+树结构的示例。参照图1,B+树(a)高度(H)为3,并具有3个叶节点和3个索引节点。也就是说,标号D、E和F表示叶节点,标号B、C和A表示索引节点。索引节点中最上面的索引节点A被称作根节点。如果B+树的高度是1,则“根节点=叶节点”,如果B+树的高度是2或者更多,则“根节点=索引节点”。
每个索引节点包括键值和指针。例如,索引节点A包括索引节点B和C的页地址P5和P4,索引节点B包括叶节点D和E的页地址P3和P2。
按闪存(b)的页分别将B+树(a)的索引节点和叶节点进行存储。通常,以块为基础来擦除闪存,而以页为基础对闪存进行读/写。
图2是示出对B+树结构中的任何叶节点进行修改然后将改变的B+树结构存储在闪存中的示例。通常,在闪存中,为了将新数据写在已经写有数据的单元中必须执行擦除操作。如果不进行擦除操作而对新数据进行写操作,则新数据必须被写在已经被擦除的新页中。因此,为了将键值插入到B+树(c)的叶节点F中或者从B+树(c)的叶节点F删除键值,必须在闪存(d)的新页P7中写入修改的叶节点F’。索引节点C必须被修改为索引节点C’以指定叶节点F’的页P7,此外,索引节点A必须被修改为索引节点A’以指定已经存储索引节点C’的页P8。以这种方式,叶节点F的修改导致与叶节点F相关的索引节点C和A的修改。也就是说,为了修改/插入/删除叶节点,写操作被执行至少B+树的高度(H)次。
通常,在NAND闪存中,写操作比读操作需要更多时间,并且可在一块上形成的写操作的次数有限。因此,可能需要大量时间来修改索引方案,并且可能还会缩短NAND闪存的寿命。
图3是示出根据本发明一些示例性实施例的在闪存中存储μ-树的方案的示图。参照图3,在μ-树(e)中,叶节点和与叶节点相关的索引节点被写到同一页中。例如,叶节点F和作为叶节点F的父节点的索引节点C和A被存储在页P1中。同样,叶节点E以及索引节点B和A被存储在页P2中,叶节点D和索引节点B和A被存储在页P3中。然而,当叶节点E和索引节点B和A被存储在页P2中时,因为索引节点A指定存储索引节点B和C的页,所以存储在页P1中的索引节点A无效。同样,当叶节点D和索引节点B和A被存储在页P3中时,因为索引节点A的指针指定存储索引节点C和B的页P1和P2,并且索引节点B的指针指定存储叶节点D和E的页P3和P2,所以存储在页P2中的索引节点B无效。例如,不能访问存储在页P2中的索引节点B。换句话说,因为按从索引节点A(即最后页P3的根节点)到子节点的顺序来进行搜索,所以不能访问存储在页P1中的索引节点A和存储在页P2中的索引节点A和B。
图4是示出根据本发明一些实施例的修改图3所示的闪存中存储的μ-树的叶节点的方案的概念性示图。参照图4,不仅修改叶节点F,还修改索引节点C和A,以对叶节点F进行修改。这样做的原因在于如果在新页P4中存储修改的叶节点F’,则指定叶节点F’的索引节点C被修改为索引节点C’,并且修改的指针指定页P4而非页P1。索引节点A被修改为具有指定索引节点C’的修改的指针的索引节点A’。这里,符号(’)是指叶节点/索引节点的键值/指针已经被修改。
修改的节点F’、C’和A’被存储在页P4中。也就是说,只对一页P4执行写操作以修改一个页节点F。因此,可减少修改叶节点所花费的时间,并且可减少闪存的使用。本发明的这种索引方案可减少对闪存进行写操作的次数,从而可延长闪存的寿命。
当对图4所示的闪存(h)中的叶节点进行搜索时,按从存储在最后页P4的根节点A’到子节点的顺序来进行搜索。也就是说,根节点A’指定索引节点B和C’,索引节点B指定叶节点D和E,并且索引节点C’指定叶节点F’。这种索引方案适用于μ-树的搜索方案。
图5是示出根据本发明一些实施例的在图3所示的闪存中存储的μ-树中插入新的叶节点的方案的概念性示图。当将要插入叶节点G时,索引节点C和A(即与叶节点G相关的父节点)必须被修改。参照图5,修改的索引节点C’和A’以及在μ-树(i)中插入的叶节点G被存储在闪存(j)的页P4中。修改的索引节点C’包括用于指定存储叶节点G的页P4和用于存储叶节点F的页P1。
从上面的描述可以看出,可通过一次写操作插入新的叶节点。如果在插入了新的叶节点G之后,索引节点C’变满,则可分离索引节点C’。这将在下面详细描述。
图6是示出根据本发明的一些实施例的删除图3所示的闪存中存储的μ-树的叶节点的方案的概念性示图。参照图6,当从μ-树(k)中删除叶节点E时,修改索引节点B和A(即与叶节点E相关的父节点)。与从μ-树删除的叶节点E相关的修改的索引节点B’和A’被存储在页P4中。修改的索引节点B’指定存储叶节点D的页P3,修改的索引节点A’指定修改的索引节点B’和索引节点C。修改的索引节点A’和B’被存储在闪存(I)的页P4中。
图7是示出根据本发明一些实施例的删除图6中所示的闪存中存储的μ-树的叶节点的方案的概念性示图。当将要从μ-树(m)删除叶节点D时,修改索引节点B和A(即与叶节点E相关的父节点)。参照图6,如果从μ-树(m)删除叶节点D,索引节点B不指定任何叶节点。因此,删除没有子节点的索引节点B。因为索引节点A(即根节点)只指定存储索引节点C的页P5,所以索引节点C可被修改为根节点。例如,索引节点C被修改为指向页P1和P4中的叶节点F和G的根节点。
如图6和图7所示,通过对闪存执行一次写操作可实现删除叶节点的操作。可减少删除叶节点所花费的时间,并且可减少闪存的使用。根据本发明一些实施例的索引方案可减少闪存上写操作的次数,这可延长闪存的寿命。
如上所述,按从叶节点到根节点的顺序依次对μ-树的叶节点执行修改、插入或删除操作,并且在一页中存储索引节点(即与修改的、插入的或删除的叶节点相关的非叶节点)。因此,闪存的一页必须被指定为能够存储从叶节点到根节点的所有节点。
图8是示出在本发明一些实施例中存储在一页中的叶节点/索引节点的最大可存储大小随着高度(H)增加而改变的示图。参照图8,当闪存的一页具有4096字节大小时,如果高度(H)是1,则根节点811也具有4096字节大小。如果高度(H)是2,则根节点821具有2048字节大小,叶节点822也具有2048字节大小。如果高度(H)是3,则根节点831和索引节点832中的每一个都具有1024字节大小,叶节点833具有2048字节大小。如果高度(H)是4,则根节点841和索引节点842中的每一个都具有512字节大小,索引节点843具有1024字节大小,并且叶节点844具有2048字节大小。
随着高度(H)增加,叶节点822、833和844的大小保持2048字节,而根节点811、821和831的大小减小1/2。可以看出,当μ-树被存储在闪存中时,通过根节点数据大小和闪存的一页的大小来确定μ-树的最大高度。
索引节点/叶节点的最大大小根据树的层次而变化。例如,如果高度(H)是4,则第4层的叶节点844具有2048的最大大小,第3层的索引节点843具有1024字节的最大大小,第2层的索引节点842具有512字节的最大大小,第1层的根节点841具有512字节的最大大小。
闪存可被内置在各种电子装置(比如个人计算机、笔记本计算机、数字音乐播放器、数字相机和手机)中或者连接到所述各种电子装置上。内置或连接到电子装置中的闪存可被电子装置中的处理器控制。
图9A是示出包括根节点和叶节点的μ-树的示例的示图。图9B是示出用于在图9A所示的μ-树的叶节点中插入键值的示例性处理的示图。在图9B所示的示例中,可被存储在闪存的一页中的根节点或叶节点的键值的数量高达100。图9C是示出在图9B中所示的键值插入处理导致的改变的μ-树的示图。图10是示出在处理器的控制下在μ-树的叶节点中插入键值的处理的流程图。
参照图9B和图10,键值被插入到存储在闪存的一页P11中的叶节点X2中(操作1000)。因为键值将被插入的叶节点X2满了(存储的键值的数量/可存储的键值的最大数量=50/50),所以叶节点X2被划分成两个叶节点X21和X22,并且这两个叶节点X21和X22被临时存储在两个缓冲器存储器M11和M12中。这里,新插入的叶节点被存储在缓冲器存储器M11的叶节点X21中,指定新叶节点X21和X22的根节点X1’被存储在缓冲器存储器M12中。
包括在存储在前一页P11中的根节点X1中的指针的数量是49/50。叶节点X2被划分为叶节点X21和X22,添加新的指针以指定叶节点X21。因此,50/50指针被包括在根节点X1’中。
因为根节点X1’满(操作1010),所以索引节点X1’被划分成两个索引节点X11和X12(操作1020)。μ-树的高度(H)增加1(操作1030)。指定叶节点X21和X22的索引节点被存储在闪存的页P13中,索引节点X12被存储在页P14中。产生新的根节点X0以指定索引节点X11和X12。根节点X0被存储在页P14中。
以这种方式,如果在新键值被插入到叶节点中时叶节点满,则通过划分操作对叶节点进行划分。如果通过叶节点的划分根节点满,则根节点被划分为两个索引节点,并且产生了新的根节点(操作1040)。即使当通过插入新键值而使得叶节点或根节点满时,根据本发明一些实施例的索引方案也可执行最小写操作。此外,可指定根据本发明一些实施例的索引方案,从而只有直接分支的节点被存储在闪存的一页中。因此,可相对容易地执行比如拉圾收集的操作。例如,通过只对一页中最低层的节点(叶节点)执行有效性测试,整页的有效性可被验证。
图11A是示出用于描述用于μ-树的键值删除方案的μ-树的示例的示图。图11B是示出从图11A所示的μ-树的任何叶节点删除键值的示例性处理的示图。在图11B所示的示例中,可被存储在闪存的一页中的根节点或叶节点的键值数量高达100。图11C是示出图11A所示的μ-树的键值删除处理导致的改变的μ-树结构的示图。图12是示出在处理器的控制下从μ-树的叶节点删除键值的处理的流程图。
参照图11B和图12,叶节点Y5被删除(操作1200)。如果在从叶节点Y5中删除了键值之后在叶节点Y5中没有键值,则删除叶节点Y5。如果该叶节点被删除,则不存在索引节点Y3的子节点,并且根节点Y1只有一个子节点,即索引节点Y2。被修改以只指定索引节点Y2的根节点Y1’被存储在缓冲器存储器M21中。
当根节点Y1’有一个子节点(操作1210)时,μ-树的高度(H)减小1。在图11B所示的示例中,μ-树的高度(H)从3减小到2(操作1220)。结果,索引节点Y2被修改为根节点Y2’,并被存储在闪存的页P23中(操作1230)。因此,叶节点Y2的键值被删除,图11A所示的μ-树被改变为如图11C所示的具有叶节点Y4和根节点Y2。
如上所述,根据本发明一些实施例的索引方案可限制μ-树的索引节点/叶节点的大小,从而可将叶节点和与叶节点相关的父节点(例如索引节点和根节点)存储在闪存的一页中。因此当μ-树的节点被修改、插入或删除时可减少对闪存的数据写操作。因此,可延长闪存的寿命。当μ-树的索引节点/叶节点的大小被限制时,可增加μ-树的高度(H)。然而,因为闪存的读操作可比写操作快,所以在各种工作量条件下也可增加索引方案的速度。
图13是使用根据本发明一些实施例的索引方案的电子装置的框图。参照图13,电子装置1300包括与系统总线1301连接的处理器1310、显示器1320、小键盘1330、闪存1340、只读存储器(ROM)1350和随机存取存储器(RAM)1360。电子装置1300将文件系统存储在闪存1340中。这里,闪存1340基于μ-树结构使用本发明的索引方案。电子装置1300的示例包括数字音乐播放器、数字相机、手机、便携式多媒体播放器(PMP)和播放站。根据遵循上述概念的索引方案,处理器1310可将μ-树的叶节点和与所述叶节点相关的索引节点存储在闪存1340的一页中,并且可对叶节点/索引节点执行修改、插入或删除操作。
图14是使用根据本发明一些实施例的索引方案的存储器系统的框图。参照图14,存储卡1420被连接到主机1410。存储卡1420包括存储器控制器1422和闪存1424。存储器控制器1422提供主机1410和闪存1424之间的接口。存储器控制器1422和闪存1424被构造在一个芯片中,并且可以以小型闪存(compact flash)、智能介质、记忆棒、安全数字(SD)卡、多媒体卡等来实现。在上述存储器系统中,主机1410可根据遵循上述概念的索引方案来访问闪存1424。
图15是使用根据本发明一些实施例的索引方案的另一电子装置的框图。
参照图15,电子装置1500包括固态盘(SSD)1540,而非图13所示的电子装置1300的闪存1340。电子装置1500的其他结构和操作相似于电子装置1300的其他结构和操作。使用遵循上述概念的索引方案,电子装置1500的处理器1510可将μ-树的叶节点和与叶节点相关的索引节点存储在SSD1540的一页中,并可对叶节点/索引节点执行修改、插入或删除操作。
上述内容是对本发明的说明,并不应该解释为限制本发明。尽管已经描述了本发明的一些示例性实施例,但是本领域的技术人员应该理解,在实质上不脱离本发明新颖性教导和优点的情况下,可对这些示例性实施例进行很多修改。因此,所有的这种修改被认为是包括在权利要求限定的本发明的范围中。因此,应该理解,上述内容只是对本发明的说明,而并不被理解为限于公开的具体实施例,并且对公开的实施例的修改以及其他修改被认为是包括在权利要求的范围内。
Claims (9)
1.一种在闪存装置中存储树数据结构的方法,所述方法包括:
将叶节点和包括指向所述叶节点的指针的索引节点存储在闪存装置的同一页中,
将叶节点的修改版本和索引节点的修改版本存储在闪存装置的新的页中,
其中,索引节点的修改版本包括指向所述新的页的指针,并且修改的叶节点包括新的键值。
2.如权利要求1所述的方法,还包括:以每页为基础对闪存装置进行读操作。
3.如权利要求1所述的方法,其中,可存储在闪存装置的一页中的树结构的节点的最大数量取决于树数据结构的高度。
4.如权利要求3所述的方法,其中,树数据结构的节点的最大大小取决于树数据结构中的节点的层次。
5.如权利要求1所述的方法,其中,将叶节点的修改版本和索引节点的修改版本存储在闪存装置的新的页的方法包括:
如果叶节点满,则将叶节点划分为第一叶节点和第二叶节点;
将新的键值插入到第一叶节点和第二叶节点中的一个叶节点中;
将第一叶节点和第二叶节点存储在闪存装置的各自的新的页中。
6.如权利要求5所述的方法,其中,将叶节点的修改版本和索引节点的修改版本存储在闪存装置的新的页中的步骤还包括:
如果索引节点满,则将索引节点划分为第一索引节点和第二索引节点;
产生指向第一索引节点和第二索引节点的高层索引节点;
将第一索引节点存储在新的页的第一页中;
将第二索引节点和高层索引节点存储在新的页的第二页中。
7.如权利要求1所述的方法,其中,叶节点的修改版本缺少在原始叶节点中存在的键值。
8.如权利要求1所述的方法,其中,索引节点和叶节点包括来自高层节点的第一分支的第一索引节点和第一叶节点,其中,包括第二索引节点和第二叶节点的第二分支与所述第一分支共享所述高层节点;
其中,将叶节点和包括指向叶节点的指针的索引节点存储在闪存中的同一页中的步骤包括:将高层节点、第一叶节点和第一索引节点存储在第一页中;
其中,所述方法还包括:
将所述高层节点、第二叶节点和第二索引节点存储在第二页中,并使第一页中的高层节点无效。
9.如权利要求8所述的方法,还包括:
将第一页节点的修改版本存储在第三页中,并使第二页中的高层节点无效。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070067129 | 2007-07-04 | ||
KR1020070067129A KR100922389B1 (ko) | 2007-07-04 | 2007-07-04 | 플래시 메모리를 위한 색인 스킴 |
KR10-2007-0067129 | 2007-07-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101339538A CN101339538A (zh) | 2009-01-07 |
CN101339538B true CN101339538B (zh) | 2012-12-19 |
Family
ID=40213609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101319860A Active CN101339538B (zh) | 2007-07-04 | 2008-07-04 | 使用页结构的数据树存储方法、系统和计算机程序产品 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9058253B2 (zh) |
KR (1) | KR100922389B1 (zh) |
CN (1) | CN101339538B (zh) |
TW (1) | TWI515561B (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8612668B2 (en) * | 2008-11-24 | 2013-12-17 | Juniper Networks, Inc. | Storage optimization system based on object size |
TWI407441B (zh) * | 2009-03-20 | 2013-09-01 | Phison Electronics Corp | 快閃記憶體寫入方法及使用此方法的儲存系統與控制器 |
TWI385518B (zh) * | 2009-03-20 | 2013-02-11 | Phison Electronics Corp | 用於快閃記憶體的資料儲存方法及儲存系統 |
CN101650689B (zh) * | 2009-09-16 | 2011-10-26 | 中兴通讯股份有限公司 | 一种非易失性数据的存储和检索方法及装置 |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8700670B2 (en) * | 2010-04-12 | 2014-04-15 | Symantec Corporation | Insert optimization for B+ tree data structure scalability |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
KR101699779B1 (ko) | 2010-10-14 | 2017-01-26 | 삼성전자주식회사 | 플래시 메모리의 색인 방법 |
US8527546B2 (en) | 2010-11-25 | 2013-09-03 | International Business Machines Corporation | Generating a checkpoint image for use with an in-memory database |
US9158670B1 (en) | 2011-06-30 | 2015-10-13 | Western Digital Technologies, Inc. | System and method for dynamically adjusting garbage collection policies in solid-state memory |
US9155320B2 (en) * | 2011-07-06 | 2015-10-13 | International Business Machines Corporation | Prefix-based leaf node storage for database system |
US8375012B1 (en) * | 2011-08-10 | 2013-02-12 | Hewlett-Packard Development Company, L.P. | Computer indexes with multiple representations |
US8924632B2 (en) | 2011-09-16 | 2014-12-30 | Apple Inc. | Faster tree flattening for a system having non-volatile memory |
CN103164431B (zh) * | 2011-12-13 | 2016-04-20 | 北京神州泰岳软件股份有限公司 | 关系型数据库的数据存储方法和存储系统 |
CN103518364B (zh) * | 2013-03-19 | 2016-03-09 | 华为技术有限公司 | 分布式存储系统的数据更新方法及服务器 |
US20150186550A1 (en) * | 2013-12-26 | 2015-07-02 | Nandan MARATHE | Append-Only B-Tree Cursor |
US10956050B2 (en) | 2014-03-31 | 2021-03-23 | Sandisk Enterprise Ip Llc | Methods and systems for efficient non-isolated transactions |
US9916356B2 (en) | 2014-03-31 | 2018-03-13 | Sandisk Technologies Llc | Methods and systems for insert optimization of tiered data structures |
US10572442B2 (en) * | 2014-11-26 | 2020-02-25 | Microsoft Technology Licensing, Llc | Systems and methods for providing distributed tree traversal using hardware-based processing |
CN109299113B (zh) * | 2015-06-08 | 2021-03-30 | 南京航空航天大学 | 具有存储感知的混合索引的范围查询方法 |
US10133764B2 (en) * | 2015-09-30 | 2018-11-20 | Sandisk Technologies Llc | Reduction of write amplification in object store |
US9619165B1 (en) | 2015-10-30 | 2017-04-11 | Sandisk Technologies Llc | Convertible leaf memory mapping |
KR20170073944A (ko) | 2015-12-21 | 2017-06-29 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법 |
US10289340B2 (en) | 2016-02-23 | 2019-05-14 | Sandisk Technologies Llc | Coalescing metadata and data writes via write serialization with device-level address remapping |
US10747676B2 (en) | 2016-02-23 | 2020-08-18 | Sandisk Technologies Llc | Memory-efficient object address mapping in a tiered data structure |
US10185658B2 (en) | 2016-02-23 | 2019-01-22 | Sandisk Technologies Llc | Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes |
FR3051574A1 (fr) | 2016-05-20 | 2017-11-24 | Proton World Int Nv | Gestion du stockage dans une memoire flash |
FR3055992A1 (fr) * | 2016-09-09 | 2018-03-16 | Proton World International N.V. | Gestion d'index dans une memoire flash |
KR20190031692A (ko) * | 2017-09-18 | 2019-03-27 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법 |
FR3072476A1 (fr) | 2017-10-13 | 2019-04-19 | Proton World International N.V. | Unite logique de memoire pour memoire flash |
CN110162525B (zh) * | 2019-04-17 | 2023-09-26 | 平安科技(深圳)有限公司 | 基于b+树的读写冲突解决方法、装置及存储介质 |
CN112486403A (zh) * | 2019-09-12 | 2021-03-12 | 伊姆西Ip控股有限责任公司 | 管理存储对象的元数据的方法、装置和计算机程序产品 |
CA3107299A1 (en) | 2020-01-31 | 2021-07-31 | Rinnai America Corporation | Vent attachment for a tankless water heater |
KR20230120347A (ko) * | 2022-02-09 | 2023-08-17 | 주식회사 티맥스티베로 | 데이터를 인덱스하기 위한 방법 |
CN114791913A (zh) * | 2022-04-26 | 2022-07-26 | 北京人大金仓信息技术股份有限公司 | 数据库的共享内存缓冲池处理方法、存储介质与设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1573746A (zh) * | 2003-05-30 | 2005-02-02 | 微软公司 | 使用b树的位置访问 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123104A (en) * | 1988-04-08 | 1992-06-16 | International Business Machines Corporation | Method and apparatus for concurrent modification of an index tree in a transaction processing system utilizing selective indication of structural modification operations |
US5694608A (en) * | 1995-01-27 | 1997-12-02 | Borland International, Inc. | Non-modal database system wth methods for incremental maintenance of live reports |
US5893125A (en) * | 1995-01-27 | 1999-04-06 | Borland International, Inc. | Non-modal database system with methods for incremental maintenance |
US5568423A (en) * | 1995-04-14 | 1996-10-22 | Unisys Corporation | Flash memory wear leveling system providing immediate direct access to microprocessor |
JP3707854B2 (ja) * | 1996-03-01 | 2005-10-19 | 株式会社東芝 | キャッシュ機能を有するコンピュータ及びキャッシュメモリ制御方法 |
JPH10154101A (ja) * | 1996-11-26 | 1998-06-09 | Toshiba Corp | データ記憶システム及び同システムに適用するキャッシュ制御方法 |
JP3212960B2 (ja) | 1999-02-04 | 2001-09-25 | 埼玉日本電気株式会社 | フラッシュメモリを利用したデータ管理方法 |
KR100328129B1 (ko) | 1999-12-27 | 2002-03-12 | 오길록 | 메모리 계층 구조를 고려한 압축, 탐색 및 새로운 항목삽입 방법 |
KR20040072875A (ko) | 2003-02-11 | 2004-08-19 | 유비시스테크놀러지 주식회사 | 낸드 플래시 메모리를 이용한 저장장치 |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
WO2005066793A2 (en) | 2003-12-30 | 2005-07-21 | Sandisk Corporation | Non-volatile memory and method with non-sequential update block management |
US7383276B2 (en) * | 2004-01-30 | 2008-06-03 | Microsoft Corporation | Concurrency control for B-trees with node deletion |
US7761474B2 (en) * | 2004-06-30 | 2010-07-20 | Sap Ag | Indexing stored data |
KR101102754B1 (ko) | 2005-02-28 | 2012-01-05 | 삼성전자주식회사 | 낸드 플래시 메모리 파일 시스템 및 낸드 플래시 메모리 시스템에서 파일 엑세스 방법 |
KR20060106993A (ko) | 2005-04-06 | 2006-10-13 | 주식회사 에스원 | 플래시 메모리 데이터 저장 방법 |
TWM288401U (en) | 2005-07-15 | 2006-03-01 | Genesys Logic Inc | Highly efficient data characteristics recognition device for flash memory |
US7937375B2 (en) * | 2007-07-19 | 2011-05-03 | Oracle International Corporation | Method and apparatus for masking index values in a database |
US7856437B2 (en) * | 2007-07-31 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Storing nodes representing respective chunks of files in a data store |
-
2007
- 2007-07-04 KR KR1020070067129A patent/KR100922389B1/ko active IP Right Grant
-
2008
- 2008-07-03 US US12/167,324 patent/US9058253B2/en active Active
- 2008-07-03 TW TW097125122A patent/TWI515561B/zh active
- 2008-07-04 CN CN2008101319860A patent/CN101339538B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1573746A (zh) * | 2003-05-30 | 2005-02-02 | 微软公司 | 使用b树的位置访问 |
Also Published As
Publication number | Publication date |
---|---|
CN101339538A (zh) | 2009-01-07 |
KR20090002839A (ko) | 2009-01-09 |
TW200907677A (en) | 2009-02-16 |
TWI515561B (zh) | 2016-01-01 |
KR100922389B1 (ko) | 2009-10-19 |
US9058253B2 (en) | 2015-06-16 |
US20090012976A1 (en) | 2009-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101339538B (zh) | 使用页结构的数据树存储方法、系统和计算机程序产品 | |
US9626286B2 (en) | Hardware and firmware paths for performing memory read processes | |
US9223692B2 (en) | Nonvolatile memory device with multi-level memory cells and programming method | |
US20190042571A1 (en) | Update-Insert for Key-Value Storage Interface | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN103902632A (zh) | 键值存储系统中构建文件系统的方法、装置及电子设备 | |
CN101908368A (zh) | 电子存储装置及其操作方法 | |
CN101320594B (zh) | 一种闪存芯片的物理操作方法 | |
CN107291378B (zh) | 数据储存装置及其数据维护方法 | |
CN103077183A (zh) | 一种分布式顺序表的数据导入方法及其系统 | |
CN105117355A (zh) | 存储器、存储器系统及其数据处理方法 | |
CN101739351A (zh) | 一种用来管理一记忆装置的方法以及其相关的记忆装置 | |
US20150026391A1 (en) | Block grouping method for garbage collection of solid state drive | |
TWI614605B (zh) | 資料儲存裝置及其資料維護方法 | |
TW201715399A (zh) | 資料儲存裝置及其資料維護方法 | |
CN102024060B (zh) | 存储文件及恢复误删除文件的方法 | |
US20170147231A1 (en) | Storage device and operating method of storage device | |
CN101661431B (zh) | 用于快闪存储器的区块管理方法、快闪储存系统及控制器 | |
CN102486751A (zh) | 一种在微内存系统上实现小页nandflash虚拟大页的方法 | |
CN103218300A (zh) | 数据处理方法、存储器控制器与存储器储存装置 | |
KR20120038809A (ko) | 플래시 메모리의 색인 방법 | |
KR100878142B1 (ko) | 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법 | |
CN101604291B (zh) | 增进多级单元非挥发性内存的数据存取可靠度的方法 | |
US11023170B2 (en) | Writing method for multi-stream write solid state drive | |
CN102981976B (zh) | 用于数据存储的访问控制方法 |
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 |