专利名称:使用页结构的数据树存储方法、系统和计算机程序产品的制作方法
技术领域:
本申请涉及闪存装置及其操作方法,更具体地讲,涉及闪存装置的数据 存储方法、系统和计算机程序产品。
背景技术:
闪存装置是即使在没有电源的情况下也能在存储芯片上保留数据的非易 失性存储装置。尽管闪存装置通常比例如用作个人计算机(PC)的主存储器 的动态随机存取存储器(DRAM)慢,但是通常比硬盘读的速度要高并且更 能抵抗冲击。另外,闪存装置通常能够抵抗来自周围的沖击,比如高的压力 和沸腾的水。因为这些特性,闪存装置被广泛用作用电池操作的装置中的存 储单元。
闪存装置是电可擦除可编程非易失性存储装置。通常的闪存装置可按块 被擦除和被编程。因为通常闪存装置相对便宜,所以它们被广泛用作高容量 固态非易失性存储器。使用闪存的典型实例是在数字音乐播放器、数字相机 和蜂窝电话中。闪存装置还用作通用串行总线(USB)驱动器,所述USB存 储器被广泛用于在计算机之间存储和传送数据。
因为硬盘驱动器机械地驱动磁盘以读/写数据,通常在结构上限制了硬盘 的操作速度上的增加。为此,已经试图使用用于高容量存储器的闪存来替换 硬盘驱动器。例如,在闪存中存储启动代码时可增加系统启动速度。
发明内容
本发明的 一 些实施例提供 一 种用于闪存的索引方案。 本发明的实施例提供基于包括多页的闪存的树结构的索引方法,所述索 引方法包括将叶节点和与叶节点相关的索引节点存储在闪存的同一页中。
在一些实施例中,每页存储高达k个叶节点和/或索引节点,k为正数。
在其他实施例中,以页为基础对闪存装置进行读或写操作。
在一些实施例中,存储在页中的叶节点或索引节点的数量取决于树的高度。
在一些实施例中,索引节点中的最高索引节点是根节点。 在一些实施例中,索引方法还包括对叶节点进行修改。
在一些实施例中,对叶节点进行修改的步骤还包括改变与将被修改的 叶节点相关的索引节点的指针;并把将被修改的叶节点和修改的索引节点存 储在新的一页中。
在一些实施例中,索引方法还包括插入新的叶节点。
在一些实施例中,插入新的叶节点的步骤包括改变与新的叶节点相关 的索引节点的指针;并将新的叶节点和与所述新的叶节点相关的索引节点存 储在新的页中。
在一些实施例中,插入新的叶节点的步骤还包括确定与新的叶节点相 关的索引节点是否满;如果与新的叶节点相关的索引节点满,则将索引节点 划分为第一索引节点和第二索引节点;产生第一索引节点和第二索引节点的 上层节点。
在一些实施例中,索引方法还包括将新的键值插入到叶节点。 在一些实施例中,插入新的键值的步骤包括确定将插入新的键值的叶 节点是否满;如果将插入新的键值的叶节点满,则将叶节点划分为第一叶节 点和第二叶节点;并将新的键值插入到第 一叶节点和第二叶节点中的 一个节点中。
在一些实施例中,第 一叶节点和第二叶节点被分别存储在闪存中的新的 页中。
在一些实施例中,插入新的键值的步骤还包括确定与新的叶节点相关 的索引节点是否满;如果与新的叶节点相关的索引节点满,则将索引节点划 分为第一索引节点和第二索引节点;产生第一索引节点和第二索引节点的上 层索引节点。
在 一 些实施例中,第 一 索引节点被存储在与第 一 叶节点和第二叶节点中 的一个节点相同的页中,第二索引节点与上层索引节点一起被存储在新的页 中。
在一些实施例中,索引方法还包括删除叶节点。
在一些实施例中,删除叶节点的步骤包括确定与删除的叶节点相关的 索引节点是否指定另一叶节点;如果与删除的叶节点相关的索引节点没有指
定另一叶节点,则删除索引节点。
在一些实施例中,删除叶节点的步骤还包括如果树的根节点具有一个 子节点,则将树的高度减小l,并将根节点的子节点设置为新的根节点。
在一些实施例中,删除叶节点的步骤还包括将新的根节点存储在新的页中。
在一些实施例中,索引方法基于p树结构。
在本发明的其他实施例中,系统包括闪存,包括多页;处理器,访问 闪存,其中,处理器执行上述的索引方法。
本发明的一些实施例提供一种将树数据结构存储在闪存装置中的方法, 其中,叶节点和包括指向叶节点的指针的索引节点被存储在闪存装置的同一 页中。例如,当将键值添加到叶节点或者从叶节点删除键值时,可将叶节点 的修改版本和索引节点的修改版本存储在闪存装置的新的页中。索引节点的 修改版本可包括指向所述新的页的指针。可存储在闪存装置的页中的树结构 的节点的最大数量可取决于树数据结构的高度,并且树数据结构的节点的最 大大小取决于树数据结构中的节点的层次。
在一些实施例中,将叶节点的修改版本和索引节点的修改版本存储在闪 存装置的新的页中的步骤可包括如果叶节点满,则将叶节点划分为第一叶 节点和第二叶节点;将新的键值插入到第 一叶节点和第二叶节点中的 一 个叶 节点中,并将第 一叶节点和第二叶节点存储在闪存装置的各自的新的页中。 将叶节点的修改版本和索引节点的修改版本存储在闪存装置的新的页中的步 骤还可包括如果索引节点满,则将索引节点划分为第一索引节点和第二索 引节点;产生指向第一索引节点和第二索引节点的高层索引节点;将第一索 引节点存储在新的页中的第一页中;将第二索引节点和高层索引节点存储在 新的页中第二页中。
在一些实施例中,索引节点和叶节点包括来自高层节点的第 一分支的第 一索引节点和第一叶节点,其中,第一分支与第二分支共享高层节点,所述
第二分支包括第二索引节点和第二叶节点。将叶节点和包括指向叶节点的指 针的索引节点存储在闪存的同一页中的步骤可包括将第一叶节点和第一索引
节点存储在第一页中。高层节点可被存储在第一页中,第二叶节点和第二索 引节点可被存储在第二页中。可检测到从第一叶节点删除键值将导致在第一 叶节点中没有剩余键值,并且第 一 索引节点不包括其他指向叶节点的指针。 作为响应,第二叶节点的修改版本可被存储在第三页中。这可从树数据结构 删除高层节点。
本发明的实施例可提供包括被构造为执行上述操作的处理器的系统。进 一步实施例可提供包括被构造为在计算机上执行的计算机程序代码的计算机 可读存储介质,所述计算机程序代码包括被构造为执行上述操作的计算机程
序代码。
在另外的实施例中,系统包括闪存装置,包含多页;处理器,与闪存 装置相关并被构造为将树数据结构的叶节点和包括指向所述叶节点的指针的 索引节点存储在闪存的同一页中。处理器可被构造为操作作为固态盘(ssd) 的闪存装置。
包括附图以提供对本发明的进一步理解,并且附图被包含在说明书的一 部分中并构成说明书的一部分。附图和描述示出本发明的示例性实施例,并 用于解释本发明的原理。在附图中
图1是示出典型的B+树结构被存储在闪存中的实例的示图2是示出对B+树结构中的任何叶节点进行修改然后改变的B+树被存 储在闪存中的实例的示图3是示出根据本发明的一些实施例的在闪存中存储/i-树的方案的示
图4是示出根据本发明的一些实施例的修改图3所示的在闪存中存储的 pt-树的叶节点的方案的概念性示图5是示出根据本发明的一些实施例的在图3所述的闪存中存储的/x-树 中插入新的叶节点的方案的概念性示图6是示出根据本发明的一些实施例的删除图3所示的闪存中存储的m-树的叶节点的方案的概念性示图7是示出根据本发明一些实施例的删除图6所示的闪存中存储的/x-树 的叶节点的方案的概念性示图8是示出存储在一 页中的叶节点/索引节点的最大可存储大小的随着高
度(H)的增加而改变的示图9A是示出包括根节点和叶节点的^-树的实例的示图9B是示出将键值插入在图9A所示的/x-树的叶节点中的示例性处理的
示图9C是示出由图9B示出的键值插入处理导致的改变的y-树的示图; 图10是示出在处理器的控制下将键值插入/x-树的叶节点的处理的流程
图11A是示出用于描述/x-树的键值删除方案的p树的示例的示图; 图IIB是示出从图11A所示的/i-树的任何叶节点删除键值的示例性处理 的示图IIC是示出图IIA所示的g-树的键值删除处理导致的改变的^-树结 构的示图12是示出在处理器的控制下从/x-树的叶节点删除键值的处理的流程 图; .
图13是使用根据本发明 一 些实施例的索引方案的电子装置的框图14是示出使用根据本发明一些实施例的索引方案的存储器系统的框
图15是使用根据本发明 一 些实施例的索引方案的另 一 电子装置的框图。
具体实施例方式
下面将参照附图来更全面地描述本发明,其中,在附图中显示本发明的 实施例。然而,可以以多种不同形式实现本发明,并且不应该将本发明解释 为限于这里阐述的实施例。相反,提供这些实施例,从而使本公开彻底和完 整,并完全向对本领域的技术人员传达本发明的范围。
在附图中,为了清楚起见,部件的大小或构造可被理想化或者被放大。 应该理解,当部件被称作被"连接到"或"结合到"另一部件时,它可被直 接连接到或结合到另一部件或者可存在中间部件。相反,当部件被称作被"直 接连接到"或"直接结合到"另一部件时,不存在中间部件。相同的标号始 终表示相同的部件。如这里所使用的,术语"和/或"包括所列出的相关项的 一个或多个的任何和所有结合。应该理解,尽管术语第一、第二、第三等可在这里被用于描述各种部件、 组件和/或部分,但是这些部件、组件和/或部分不应该限于这些术语。这些术 语仅用于区分一个部件、组件或部分和另一部件、区域或部分。因此,在不 脱离本发明的教导的情况下,下面讨论的第一部件、组件或部分可以被称作 第二部件、组件或部分。
这里使用的术语仅为了描述具体实施例,而并不意图限制本发明。如这 里所使用的单数形式意图包括复数形式,除非上下文清楚地做出不同的表示。 还应该理解在本说明书中使用的术语"包括"明确说明了存在所述特征、整 数、步骤、操作、部件和/或组件,并不排除存在或添加一个或多个其他特征、 整数、步骤、操作、部件、组件和/或其组合。
除非有不同的限定,这里使用的所有术语(包括科技术语)具有与通常 本发明所属领域的技术人员所理解的相同含义。还应该理解,比如在常用的 字典里定义的术语,应该被解释为与现有技术中的上下文中的含义一致,并 不应该被解释为理想化的或者非正常的意义,除非在这里清楚地定义。
贯穿说明书,术语"写"和"编程"具有相同的含义。
下面将参照示出方法、设备(系统和/或装置)和/或计算机程序产品的示 意图来描述本发明的实施例。应该理解示图的块以及示图中块的结合可被计 算机程序指令实现。向通用计算机、专用计算机和/或其他可编程数据处理设 备的处理器提供这些计算机程序指令以产生机制,从而经过计算机和/或其他 可编程数据处理设备的处理器执行的指令创建用于实现在示图中指定的功能
/动作的方法(功能性)和/或结构。这些计算机程序指令还可被存储在知道计 算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,从 而存储在计算机可读存储器中的指令产生一项包括实现在示图中指定的功能 和动作的指令的产品。计算机程序指令还可被加载到计算机或其他可编程的 数据处理设备中以使一系列的操作步骤在计算机或其他可编程设备上执行以 产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供 用于实现在示图中指定的功能/动作的步骤。
因此,本发明可在硬件和/或软件(包括固件、长驻软件、微代码等)中 实现本发明。此外,本发明可采用具有程序代码(指令)的计算机可用或计 算机可读存储介质计算机程序产品的形式,所述程序代码(指令)由指令执 行系统使用或结合所述指令执行系统使用而在计算机可读存储介质上实现。
在本文档的上下文中,计算机可用或计算机可读存储介质可以是包含、存储 或传送由指令执行系统、设备或装置使用或结合所述指令执行系统、设备或 装置使用的程序。
计算机可用或计算机可读存储介质可以是,例如电、磁、光、电磁或半 导体系统、设备或装置。计算机可读存储介质的更具体示例(非穷尽列表)
将包括如下内容便携式计算机磁盘、随机存取存储器(RAM)、只读存储 器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、便携式光学和/或 磁介质(比如闪盘或CD-ROM )。
p树是修改的B树的树结构,并包括叶节点和索引节点。叶节点包括按 升序排列的顺序数据(sequential data),即键值。索引节点包括键值和用于搜 索叶节点中的键值的指针。与B树不同,/x树具有按顺序构成链表的叶节点, 从而^树的键值可被顺序处理。m树被广泛用作访问存储在比如硬盘的存储 介质中的数据或者数据库的索引。本发明的一些实施例提供新的m树结构。
图1是示出在闪存中存储典型的B+树结构的示例。参照图1, B+树(a) 高度(H)为3,并具有3个叶节点和3个索引节点。也就是说,标号D、 E 和F表示叶节点,标号B、 C和A表示索引节点。索引节点中最上面的索引 节点A被称作根节点。如果B+树的高度是1,则'呀艮节点=叶节点",如果 B+树的高度是2或者更多,贝'j "根节点=索引节点"。
每个索引节点包括键值和指针。例如,索引节点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是示出才艮据本发明 一些示例性实施例的在闪存中存储M-树的方案的 示图。参照图3,在/x-树(e)中,叶节点和与叶节点相关的索引节点被写到 同一页中。例如,叶节点F和作为叶节点F的父节点的索引节点C和A一皮存 储在页P1中。同样,叶节点E以及索引节点B和A被存储在页P2中,叶节 点D和索引节点B和A被存储在页P3中。然而,当叶节点E和索引节点B 和A被存储在页P2中时,因为索引节点A指定存储索引节点B和C的页, 所以存储在页Pl中的索引节点A无效。同样,当叶节点D和索引节点B和 A被存储在页P3中时,因为索引节点A的指针指定存储索引节点C和B的 页Pl和P2,并且索引节点B的指针指定存储叶节点D和E的页P3和P2, 所以存储在页P2中的索引节点B无效。例如,不能访问存储在页P2中的索 引节点B。换句话说,因为按从索引节点A(即最后页P3的根节点)到子节 点的顺序来进行搜索,所以不能访问存储在页Pl中的索引节点A和存储在 页P2中的索引节点A和B。
图4是示出根据本发明一些实施例的修改图3所示的闪存中存储的/x-树 的叶节点的方案的概念性示图。参照图4,不仅修改叶节点F,还修改索引节 点C和A,以对叶节点F进行修改。这样做的原因在于如果在新页P4中存 储修改的叶节点F,,则指定叶节点F,的索引节点C被修改为索引节点C,,并 且修改的指针指定页P4而非页Pl。索引节点A被修改为具有指定索引节点 C,的修改的指针的索引节点A,。这里,符号(,)是指叶节点/索引节点的键值/ 指针已经被修改。
修改的节点F,、 C,和A,被存储在页P4中。也就是说,只对一页P4执行 写操作以修改一个页节点F。因此,可减少修改叶节点所花费的时间,并且 可减少闪存的使用。本发明的这种索引方案可减少对闪存进行写操作的次数, 从而可延长闪存的寿命。
当对图4所示的闪存(h)中的叶节点进行搜索时,按从存储在最后页 P4的根节点A,到子节点的顺序来进行搜索。也就是说,根节点A,指定索引节 点B和C,,索引节点B指定叶节点D和E,并且索引节点C,指定叶节点F,。
这种索引方案适用于M-树的搜索方案。
图5是示出根据本发明一些实施例的在图3所示的闪存中存储的/x-树中
插入新的叶节点的方案的概念性示图。当将要插入叶节点G时,索引节点C 和A (即与叶节点G相关的父节点)必须被修改。参照图5,修改的索引节 点C,和A,以及在)U-树(i)中插入的叶节点G被存储在闪存(j)的页P4中。修改 的索引节点C,包括用于指定存储叶节点G的页P4和用于存储叶节点F的页 Pl。
从上面的描述可以看出,可通过一次写操作插入新的叶节点。如果在插 入了新的叶节点G之后,索引节点C,变满,则可分离索引节点C,。这将在 下面详细描述。
图6是示出根据本发明的一些实施例的删除图3所示的闪存中存储的 树的叶节点的方案的概念性示图。参照图6,当从r树(k)中删除叶节点E 时,修改索引节点B和A (即与叶节点E相关的父节点)。与从/x-树删除的 叶节点E相关的修改的索引节点B,和A,被存储在页P4中。修改的索引节点 B,指定存储叶节点D的页P3,修改的索引节点A,指定修改的索引节点B,和 索引节点C。修改的索引节点A,和B,被存储在闪存(I)的页P4中。
图7是示出根据本发明一些实施例的删除图6中所示的闪存中存储的/X-树的叶节点的方案的概念性示图。当将要从At-树(m)删除叶节点D时,修 改索引节点B和A(即与叶节点E相关的父节点)。参照图6,如果从/x-树(m) 删除叶节点D,索引节点B不指定任何叶节点。因此,删除没有子节点的索 引节点B。因为索引节点A (即根节点)只指定存储索引节点C的页P5,所 以索引节点C可被修改为根节点。例如,索引节点C被修改为指向页Pl和 P4中的叶节点F和G的#>节点。
如图6和图7所示,通过对闪存执行一次写操作可实现删除叶节点的操 作。可减少删除叶节点所花费的时间,并且可减少闪存的使用。根据本发明 一些实施例的索引方案可减少闪存上写操作的次数,这可延长闪存的寿命。
如上所述,按从叶节点到根节点的顺序依次对M-树的叶节点执行修改、 插入或删除操作,并且在一页中存储索引节点(即与修改的、插入的或删除 的叶节点相关的非叶节点)。因此,闪存的一页必须被指定为能够存储从叶节 点到根节点的所有节点。
图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。可以看出,当/x-树被存储在闪存 中时,通过根节点数据大小和闪存的一页的大小来确定M-树的最大高度。
索引节点/叶节点的最大大小根据树的层次而变化。例如,如果高度(H) 是4,则第4层的叶节点844具有2048的最大大小,第3层的索引节点843 具有1024字节的最大大小,第2层的索引节点842具有512字节的最大大小, 第1层的根节点841具有512字节的最大大小。
闪存可被内置在各种电子装置(比如个人计算机、笔记本计算机、数字 音乐播放器、数字相机和手机)中或者连接到所述各种电子装置上。内置或 连接到电子装置中的闪存可被电子装置中的处理器控制。
图9A是示出包括根节点和叶节点的/x-树的示例的示图。图9B是示出用 于在图9A所示的p树的叶节点中插入键值的示例性处理的示图。在图9B所 示的示例中,可被存储在闪存的 一 页中的根节点或叶节点的键值的数量高达 100。图9C是示出在图9B中所示的键值插入处理导致的改变的r树的示图。 图10是示出在处理器的控制下在pt-树的叶节点中插入键值的处理的流程图。
参照图9B和图10,键值被插入到存储在闪存的一页Pll中的叶节点X2 中(操作1000)。因为键值将被插入的叶节点X2满了 (存储的键值的数量/ 可存储的键值的最大数量=50/50),所以叶节点X2被划分成两个叶节点X21 和X22,并且这两个叶节点X21和X22被临时存储在两个緩沖器存储器Mil 和M12中。这里,新插入的叶节点被存储在緩沖器存储器Mil的叶节点X21 中,指定新叶节点X21和X22的根节点Xl,被存储在緩沖器存储器M12中。
包括在存储在前一页Pll中的根节点X1中的指针的数量是49/50。叶节 点X2被划分为叶节点X21和X22,添加新的指针以指定叶节点X21。因此, 50/50指针被包括在根节点XI,中。
因为根节点xr满(操作ioio),所以索引节点xr被划分成两个索引节
点Xll和X12 (操作1020)。 i(X-树的高度(H)增加1 (操作1030)。指定叶 节点X21和X22的索引节点被存储在闪存的页P13中,索引节点X12被存 储在页P14中。产生新的根节点X0以指定索引节点X11和X12。根节点XO 被存储在页P14中。
以这种方式,如果在新键值被插入到叶节点中时叶节点满,则通过划分 操作对叶节点进行划分。如果通过叶节点的划分根节点满,则根节点被划分 为两个索引节点,并且产生了新的根节点(操作1040)。即使当通过插入新 键值而使得叶节点或根节点满时,根据本发明一些实施例的索引方案也可执 行最小写操作。此外,可指定根据本发明一些实施例的索引方案,从而只有 直接分支的节点被存储在闪存的一页中。因此,可相对容易地执行比如拉圾 收集的操作。例如,通过只对一页中最低层的节点(叶节点)执行有效性测 试,整页的有效性可被验证。
图11A是示出用于描述用于/x-树的键值删除方案的g-树的示例的示图。 图IIB是示出从图11A所示的M-树的任何叶节点删除键值的示例性处理的示 图。在图11B所示的示例中,可被存储在闪存的一页中的根节点或叶节点的 键值数量高达IOO。图IIC是示出图IIA所示的/x-树的键值删除处理导致的 改变的iit-树结构的示图。图12是示出在处理器的控制下从/A-树的叶节点删 除键值的处理的流程图。
参照图IIB和图12,叶节点Y5被删除(操作1200)。如果在从叶节点 Y5中删除了键值之后在叶节点Y5中没有键值,则删除叶节点Y5。如果该叶 节点被删除,则不存在索引节点Y3的子节点,并且根节点Yl只有一个子节 点,即索引节点Y2。被修改以只指定索引节点Y2的根节点Yl,被存储在緩 沖器存储器M21中。
当根节点Yl,有一个子节点(操作1210)时,/x-树的高度(H)减小1。 在图IIB所示的示例中,/x-树的高度(H)从3减小到2(操作1220)。结果, 索引节点Y2被修改为根节点Y2',并被存储在闪存的页P23中(操作1230)。 因此,叶节点Y2的4建值被删除,图IIA所示的M-树被改变为如图IIC所示 的具有叶节点Y4和根节点Y2。
如上所述,根据本发明一些实施例的索引方案可限制^-树的索引节点/ 叶节点的大小,从而可将叶节点和与叶节点相关的父节点(例如索引节点和
根节点)存储在闪存的一页中。因此当M-树的节点被修改、插入或删除时可 减少对闪存的数据写操作。因此,可延长闪存的寿命。当/X-树的索引节点/ 叶节点的大小被限制时,可增加/x-树的高度(H)。然而,因为闪存的读操作 可比写操作快,所以在各种工作量条件下也可增加索引方案的速度。
图13是使用根据本发明 一些实施例的索引方案的电子装置的框图。参照 图13,电子装置1300包括与系统总线1301连接的处理器1310、显示器1320、 小键盘1330、闪存1340、只读存储器(ROM) 1350和随机存取存储器(RAM) 1360。电子装置1300将文件系统存储在闪存1340中。这里,闪存1340基于 p树结构使用本发明的索引方案。电子装置1300的示例包括数字音乐播放器、 数字相机、手机、便携式多媒体播放器(PMP)和播放站。根据遵循上述概 念的索引方案,处理器1310可将/x-树的叶节点和与所述叶节点相关的索引节 点存储在闪存1340的一页中,并且可对叶节点/索引节点执行修改、插入或 删除操作。
图14是使用根据本发明一些实施例的索引方案的存储器系统的框图。参 照图14,存储卡1420被连接到主机1410。存储卡1420包括存储器控制器 1422和闪存1424。存储器控制器1422提供主机1410和闪存1424之间的接 口。存储器控制器1422和闪存1424被构造在一个芯片中,并且可以以小型 闪存(compact flash )、智能介质、记忆棒、安全数字(SD)卡、多媒体卡等 来实现。在上述存储器系统中,主机1410可根据遵循上述概念的索引方案来 "i方问闪存1424。
图15是使用根据本发明 一些实施例的索引方案的另 一 电子装置的框图。 参照图15,电子装置1500包括固态盘(SSD) 1540,而非图13所示的 电子装置1300的闪存1340。电子装置1500的其他结构和操作相似于电子装 置1300的其他结构和操作。使用遵循上述概念的索引方案,电子装置1500 的处理器1510可将/x-树的叶节点和与叶节点相关的索引节点存储在SSD 1540的一页中,并可对叶节点/索引节点执行修改、插入或删除操作。
上述内容是对本发明的说明,并不应该解释为限制本发明。尽管已经描 述了本发明的一些示例性实施例,但是本领域的技术人员应该理解,在实质 上不脱离本发明新颖性教导和优点的情况下,可对这些示例性实施例进行很 多修改。因此,所有的这种修改被认为是包括在权利要求限定的本发明的范 围中。因此,应该理解,上述内容只是对本发明的说明,而并不被理解为限
于公开的具体实施例,并且对公开的实施例的修改以及其他修改被认为是包 括在权利要求的范围内。
权利要求
1、一种在闪存装置中存储树数据结构的方法,所述方法包括将叶节点和包括指向所述叶节点的指针的索引节点存储在闪存装置的同一页中。
2、 如权利要求l所述的方法,还包括以每页为基础对闪存装置进行读操作。
3、 如权利要求l所述的方法,其中,可存储在闪存装置的一页中的树结 构的节点的最大数量取决于树数据结构的高度。
4、 如权利要求3所述的方法,其中,树数据结构的节点的最大大小取决 于树数据结构中的节点的层次。
5、 如权利要求l所述的方法,还包括将叶节点的修改版本和索引节点 的修改版本存储在闪存装置的新的页中。
6、 如权利要求5所述的方法,其中,索引节点的修改版本包括指向所述 新的页的指针。
7、 如权利要求5所述的方法,其中,修改的叶节点包括新的键值。
8、 如权利要求7所述的方法,其中,将叶节点的修改版本和索引节点的 修改版本存储在闪存装置的新的页的方法包括如果叶节点满,则将叶节点划分为第 一叶节点和第二叶节点; 将新的4建值插入到第 一叶节点和第二叶节点中的 一个叶节点中;将第一叶节点和第二叶节点存储在闪存装置的各自的新的页中。
9、 如权利要求8所述的方法,其中,将叶节点的修改版本和索引节点的 修改版本存储在闪存装置的新的页中的步骤还包括如果索引节点满,则将索引节点划分为第一索引节点和第二索引节点;产生指向第一索引节点和第二索引节点的高层索引节点;将第一索引节点存储在新的页的第一页中; 将第二索引节点和高层索引节点存储在新的页的第二页中。
10、 如权利要求5所述的方法,其中,叶节点的修改版本缺少在原始叶 节点中存在的键值。
11、 如权利要求l所述的方法,其中,索引节点和叶节点包括来自高层 节点的第一分支的第一索引节点和第一叶节点,其中,包括第二索引节点和 第二叶节点的第二分支与所述第一分支共享所述高层节点;其中,将叶节点和包括指向叶节点的指针的索引节点存储在闪存中的同一页中的步骤包括将第 一叶节点和第 一 索引节点存储在第 一页中; 其中,所述方法还包括将高层节点存储在第一页中;将第二叶节点和第二索引节点存储在第二页中;检测从第 一叶节点删除键值的步骤将导致在第 一叶节点中没有剩余键值 并且第 一索引节点不包括指向叶节点的其他指针;响应地将第二索引节点的修改版本存储在第三页中。
12、 如权利要求11所述的方法,其中,将第二索引节点的修改版本存储 在第三页中的步骤从树数据结构删除高层节点。
13、 一种包括被构造为执行权利要求1所述方法的处理器的系统。
14、 一种包括被构造为在计算机上执行的计算机程序代码的计算机可读 存储介质,所述计算机程序代码包括被构造为执行权利要求1所述的方法。
15、 一种系统,包括 闪存装置,包括多个页;处理器,运行上与闪存装置相关,并被构造为将树数据结构的叶节点和 包括指向所述叶节点的指针的索引节点存储在闪存中的同 一 页中。
16、 如权利要求15所述的系统,其中,所述处理器被构造为操作作为固 态盘的闪存。
全文摘要
本发明提供一种使用页结构的数据树存储方法、系统和计算机程序产品。通过将叶节点和包括指向叶节点的指针的索引节点存储在以每页为基础读的闪存装置中的同一页中来在闪存装置中存储树数据结构。例如,当键值被添加到叶节点或者从叶节点删除键值时,叶节点的修改版本和索引节点的修改版本可被存储在闪存装置的新的页中。
文档编号G06F12/02GK101339538SQ20081013198
公开日2009年1月7日 申请日期2008年7月4日 优先权日2007年7月4日
发明者姜东阮, 康贞旭, 朴赞益, 金珍洙 申请人:三星电子株式会社;韩国科学技术院