CN102301349B - 访问存储控制器控制的存储芯片中根据列条带化的行数据 - Google Patents
访问存储控制器控制的存储芯片中根据列条带化的行数据 Download PDFInfo
- Publication number
- CN102301349B CN102301349B CN201080005858.7A CN201080005858A CN102301349B CN 102301349 B CN102301349 B CN 102301349B CN 201080005858 A CN201080005858 A CN 201080005858A CN 102301349 B CN102301349 B CN 102301349B
- Authority
- CN
- China
- Prior art keywords
- striping
- row
- memory
- data
- data block
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了使用列关系跨越逻辑存储单元条带化数据行的方法、设备和计算机可读介质。备选地,提供使用行关系跨越逻辑存储单元条带化数据列的方法、设备和计算机可读介质。当请求逻辑片段数据时,映射可以提供用于判断哪个单元可能存储该逻辑片段的信息。在一个实施例中,从预测为存储该逻辑片段的逻辑单元检索数据。在另一实施例中,从若干逻辑单元检索数据且从检索的数据去除不映射到逻辑单元的数据。
Description
技术领域
本发明涉及数据库管理,且尤其涉及用于在物理存储器中存储数据的系统和方法。
背景技术
表数据常规地被形象化和概念性地看作是二维的。例如,下面的简单表包含与多个雇员相关的数据。
雇员ID | 姓名 | 薪水 | 部门 |
1234 | John | 75000 | 财务 |
1235 | Tom | 65000 | 财务 |
1236 | Kate | 85000 | 法律 |
然而,当存储在计算机存储器中时,该数据将存储为一维值串。用于存储表值的第一技术被称为行为主定向,其针对第一行存储所有值且然后针对下一行存储值——例如:“...1234;John;75000;财务;1235;Tom;65000;财务;1236;Kate;85000;法律...”。用于存储表值的第二种技术被称为列为主定向,其针对第一列存储所有值且然后针对第二列存储值——“...1234;1235;1236;John;Tom;Kate;75000;65000;85000;财务;财务;法律...”。换句话说,来自表的数据可以以列形式(即列为主)或行形式(即行为主)的存储格式存储。
当检索存储的数据时,数据从诸如硬盘驱动器这样的永久存储器移动到以块为单位的诸如缓存的短期存储器,其中块可以是诸如32K的固定大小。当检索连续存储在永久存储器中的数据时,需要传输到短期存储器的块的数目被最小化。例如,如果上述表以行为主格式存储,则检索针对雇员1234的记录包含检索连续存储在永久存储器上的数据(即,“1234;John;75000;财务”)。相应地,该数据可能全都包含在一个块中或仅跨越几个块。然而,如果对以行为主格式存储的数据执行计算平均薪水的功能,则该功能将必须检索存储在表中的不连续存储的所有薪水,因而必然比检索需要的雇员记录向短期存储器传输更多数据块。
如果上表以列为主格式存储,则方案倒置。薪水数据被连续存储(“75000;65000;85000”),且判断平均薪水仅需要向短期存储器传送少量数据块。然而针对雇员的完整记录并不是连续存储的,因而需要传输很多数据块。
传输很多数据块是更加耗时的且与仅传输少量数据块相比是更加资源密集的。因此,对于以列为主格式存储的数据,上述平均薪水操作将较快地完成且使用较少的系统资源,但是对于以行为主格式存储的数据,雇员记录的检索将较快地执行且使用较少的系统资源。数据库设计者可以基于将最频繁执行的操作的类型选择优选存储技术,但是无论哪种格式都将不能有效地执行所有类型的操作。因此,在本领域中存在对组合列为主和行为主存储技术的益处的数据存储技术的需要。
本部分中描述的方法是可以研究的方法,但是不必是原先已经构想或研究的方法。因此,除非明确指示,不应当假设本部分中描述的方法中的任一种由于它们包括在本部分中而纯粹限定为现有技术。
发明内容
一实施例提供一种存储器设备,包含:存储器控制器;以及多个存储器芯片;该存储器控制器被配置成从计算设备接收对数据的请求,所述数据存储在跨越所述多个存储器芯片而被条带化的一个或多个数据块中,其中每个数据块存储一组行;所述存储器控制器被配置成确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的;并且所述存储器控制器被配置成针对所述一个或多个数据块中的每个数据块,执行:针对所述每个数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑;基于所述映射逻辑,选择所述多个存储器芯片中的存储所述一个或多个列所映射到的所述一个或多个条带化部分的一个或多个存储器芯片;从所述一个或多个存储器芯片检索所述一个或多个条带化部分,而不从多个存储器芯片中的一个或多个其他存储器芯片检索所述数据块的一个或多个其他条带化部分,其中所述数据块的一个或多个其他条带化部分是由一个或多个其他列映射的;以及从所述数据块的所述一个或多个条带化部分向所述计算设备返回所述列数据。
另一实施例提供一种存储器设备,包含:存储器控制器;多个存储器芯片;所述存储器控制器被配置成从计算设备接收对数据的请求,所述数据存储在跨越所述多个存储器芯片而被条带化的一个或多个数据块中,其中所述一个或多个数据块中的每个存储一组行;所述存储器控制器被配置成确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的;并且所述存储器控制器被配置成针对所述一个或多个数据块中的每个数据块,执行:从所述多个存储器芯片中的每一个检索所述数据块的条带化部分,针对所述数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑,基于所述映射逻辑,从所述数据块的检索的条带化部分提取所述一个或多个条带化部分,以及从所述数据块的一个或多个条带化部分向计算设备返回列数据,而不返回所述数据块的检索的条带化部分中的一个或多个其他条带化部分。
另一实施例提供一种用于访问多个存储器设备中的条带化的行数据的方法,所述方法包含:存储器控制器从计算设备接收对数据的请求,所述数据存储在跨越所述存储器设备而被条带化的一个或多个数据块中,其中每个数据块存储一组行;确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的;并且针对所述一个或多个数据块中的每个数据块:针对所述每个数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑;基于所述映射逻辑,选择所述多个存储器设备中的存储所述一个或多个列映射到的所述一个或多个条带化部分的一个或多个存储器设备;从所述一个或多个存储器设备检索所述一个或多个条带化部分,而不从所述多个存储器设备中的一个或多个其他存储器设备检索所述数据块的一个或多个其他条带化部分,其中所述数据块的一个或多个其他条带化部分是由一个或多个其他列映射的;以及从所述数据块的所述一个或多个条带化部分向所述计算设备返回所述列数据。
另一实施例提供一种用于访问多个存储器设备中的条带化的行数据的方法,所述方法包含:所述存储器控制器从所述计算设备接收对数据的请求,所述数据存储在跨越多个存储器设备而被条带化的一个或多个数据块中,其中所述一个或多个数据块中的每一个存储一组行;确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的;以及针对所述一个或多个数据块中的每个数据块:从所述多个存储器设备中的每个检索所述数据块的条带化部分,针对所述数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑,基于所述映射逻辑,从所述数据块的检索的条带化部分提取所述一个或多个条带化部分,以及从所述数据块的所述一个或多个条带化部分向所述计算设备返回列数据,而不返回所述数据块的检索的条带化部分中的一个或多个其他条带化部分。
另一实施例提供一种存储器控制器,包括:用于从计算设备接收对数据的请求的装置,所述数据存储在跨越多个存储器芯片而被条带化的一个或多个数据块中,其中每个数据块存储一组行;用于确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的装置;以及用于针对所述一个或多个数据块中的每个数据块,执行以下操作的装置:针对所述每个数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑;基于所述映射逻辑,选择所述多个存储器芯片中的存储所述一个或多个列所映射到的所述一个或多个条带化部分的一个或多个存储器芯片;从所述一个或多个存储器芯片检索所述一个或多个条带化部分,而不从所述多个存储器芯片中的一个或多个其他存储器芯片检索所述数据块的一个或多个其他条带化部分,其中所述数据块的一个或多个其他条带化部分是由一个或多个其他列映射的;以及从所述数据块的所述一个或多个条带化部分向所述计算设备返回所述列数据。
另一实施例提供一种存储器控制器,包含:用于从计算设备接收对数据的请求的装置,所述数据存储在跨越多个存储器芯片而被条带化的一个或多个数据块中,其中所述一个或多个数据块中的每个存储一组行;用于确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的装置;以及用于针对所述一个或多个数据块中的每个数据块执行以下操作的装置:从所述多个存储器芯片中的每一个检索所述数据块的条带化部分,针对所述数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑,基于所述映射逻辑,从所述数据块的检索的条带化部分提取所述一个或多个条带化部分,以及从所述数据块的一个或多个条带化部分向计算设备返回列数据,而不返回所述数据块的检索的条带化部分中的一个或多个其他条带化部分。
附图说明
在附图中,通过举例而非限制性方式说明本发明,附图中相似的附图标记表示类似的元件,且附图中:
图1说明示例闪存模块。
图2A和2B说明示例开放式NAND闪存接口组连接器。
图3说明内部闪存芯片层次的示例。
图4说明可以与此处描述的技术结合使用的示例计算机系统。
具体实施方式
在下面的描述中,出于解释目的,提出各种特定细节以提供对本发明的透彻理解。然而,很明显,本发明可以不使用这些特定细节实践。在其他实例中,以框图形式示出已知结构和设备以避免不必要地混淆本发明。
概述
提供了使用列片段的关系跨越逻辑存储单元(此处也称为“LUN”)条带化行为主数据的方法和存储设备。备选地,提供了使用行片段的关系跨越逻辑存储单元条带化列为主数据的方法和存储设备。当主机设备向存储设备请求列片段数据时,存储设备中的存储器控制器使用映射逻辑来判断哪个逻辑单元更可能存储该列片段。在减小存储器控制器和存储器芯片之间的数据I/O(“输入/输出”)的一个实施例中,从被预测为存储列片段的逻辑单元检索数据。在减小存储器控制器和主机设备之间的I/O的另一实施例中,从若干逻辑单元检索数据,且从检索的数据中去除不在该列片段中的数据。
映射逻辑可以被控制器使用以存储和检索数据,且映射逻辑可以包括将列片段映射到逻辑单元的任意硬件或编程的软件映射。在一个实施例中,映射逻辑是专用数据块。换句话说,可以针对不同数据块提供不同的映射。在一个实例中,映射存储在存储块的块头的逻辑单元上,且存储控制器从该逻辑单元检索映射。在一个实施例中,存储器控制器使用在存储器或存储控制器上的硬件中实现的列片段到逻辑单元的默认映射。存储器控制器使用该默认映射来确定数据应该从默认地存储列片段的逻辑单元和默认地存储块头的逻辑单元中被并行地检索。在该实施例中,块头提供诸如列片段的相对大小的附加的校正映射信息,用于确定所请求的列片段的部分是否存储在其他逻辑单元上。如果默认逻辑单元包含整个列片段,则无需执行进一步的数据检索就能满足请求。
闪存设备
在诸如闪存的示例非易失性(NV)存储驱动系统中,多个NV存储器芯片存储数据。作为示例,图1示出示例闪存驱动的示意。闪存驱动包含闪存控制器101和多个闪存芯片102s。多个闪存芯片102a可以用于实现每个驱动器的较高存储容量。
在图1的示例中,闪存控制器101经由总线103连接到HOST系统适配器104。总线例如可以是具有诸如SAS或SATA的差分接口的高速串行总线。高速串行线缆可以简化存储箱布线,由于较薄的线在存储封装内提供更好的空气流动,具有更紧凑的PCB封装,且避免平行布线之间的串扰。该HOST系统是诸如PC(“个人计算机”)的计算设备,被配置成使用HOST系统适配器104来向闪存控制器101发送用于存储和检索包括闪存控制器101和存储器芯片102s的闪存设备上的数据的指令。
逻辑存储单元
在一个实施例中,内部闪存芯片层次(例如见图3)将闪存芯片分割成可变数目的完全并行的LUN(逻辑单元号)301s。所有LUN共享连接闪存芯片与闪存控制器的一个总线。在另一实施例中,每个逻辑存储单元对应于诸如闪存芯片的不同物理存储单元。在一个实施例中,每个LUN还被再分割为也能够并行操作的可变数目的“交织”303s(具有某些限制。例如,ONFi2.0当前没有定义交织读取)。内部闪存芯片层次中的这种灵活性进一步增强了闪存特性中的可变性。
图3示出目标存储器组织的示例。在这种情况中,存在两个逻辑单元,其中每个逻辑单元支持双向交织地址。设备包含一个或多个目标。目标被一个CE#信号控制。目标被组织到一个或多个逻辑单元(LUN)中。逻辑单元(LUN)是可以独立执行命令和报告状态的最小单元。具体而言,分离的LUN可以并行地对任意命令序列进行操作。例如,允许在LUN0上启动页编程操作且然后在操作完成之前在LUN1上启动读取命令。在一个实施例中,LUN包含至少一个页寄存器和闪存阵列。在一个实施例中,页寄存器的数目依赖于对该LUN支持的交织操作的数目。在一个实施例中,闪存阵列包含多个块。
用于闪存驱动器的并行接口
用于闪存驱动器的很多并行接口不提供优于高速串行接口的明显性能优势。例如,ONFi(开放式NAND闪存接口组)定义了用于闪存系统的新的并行连接器,它并没有优于当代3Gpbs SATA的明显优势,且实际上比下一代6Gbps SATA更慢。遗留ONFi接口的速度是40MB/s,第一代的速率约为133MB/s,第二代的速率约为266MB/s,且第三代的速率约为400MB/s。具有新的并行ONFi连接器标准的主要目的因此看上去是用于大多数消费者(笔记本或桌面)PC的标准且不是新的或较快存储系统接口。
示例ONFi连接器在图2A和2B中示出。ONFi连接器杠杆调节着现有存储器连接器,避免大部分加工成本,重用电学验证且确保低成本和快速TTM(产品投放市场时间)。ONFi连接器和模块是用于在PC平台中普遍使用NAND的关键构建块。ONFi2.0源同步数据接口在NAND设备上是可伸缩的、后向兼容的,且没有DLL。
只要并行接口不明显胜于高速串行接口(实现消除闪存驱动到HOST适配器总线中的所有带宽瓶颈的程度),则串行和并行接口之间的差异与本公开的目的不相关。示例存储接口可以与当代3Gbps或下一代6Gbps SATA/SAS相当。
数据条带化
为了实现磁盘和HOST系统之间的高带宽,存储阵列常规地采用条带化技术,其中逻辑上连续的数据组块被分割在多个磁盘上。对于在足够大的单元中读取数据的主机应用,组合的磁盘带宽是可用的。然而,组合的磁盘带宽可能受到存储管道(“存储总线”)、主机控制器逻辑、主机存储器总线等中的瓶颈限制。
类似于存储阵列,具有多个存储器芯片的闪存驱动器系统可以采用数据条带化来将逻辑上连续的应用数据组块分割到多个存储器芯片,向运行在HOST系统上的应用提供增强的HOST到闪存的带宽。
对于给定HW闪存驱动器配置(即,具有基于硬件加密的闪存驱动器),不同数据条带化方法可以导致显著不同的性能特性,其中存储器芯片的数目和类型、内部驱动器上总线和外部存储总线是固定的。
闪存设备上的条带化
相同的数据条带化方法可以导致不同HW闪存驱动器系统上显著不同的性能特性。因此,闪存驱动器中的数据条带化典型地是与闪存技术/供应商相关的。
例如,在用于NAND存储器芯片、外部芯片封装和内部闪存芯片层次的原始接口的ONFi2.0规范中,定义了5种不同的闪存芯片封装(TSOP-48、WSOP-48、LGA-52、BGA-63和BGA-100)且引脚是固定的以利于芯片供应商之间的互操作性。数据总线宽度在8位和16位之间灵活可变。存在从20Mhz至66MHz范围内的6个异步时序模式和4个源同步时序模式。还存在将一个16位总线分割2个8位总线和源同步模式中的DDR(双数据速率)模式的规定。这些总线参数单独地可以向芯片到控制器带宽公式引入>6X可变性。
与ONFi相对照,SD(安全数字)卡规范定义了高达6线的外部卡总线(时钟、命令和1-4线数据总线),具有高达50MHz的可变时序和用于各种操作的最大值(即超时)。既使SD规范一般比ONFi简单,与ONFi兼容的闪存芯片行为相比,SD卡性能特性典型地更不可控且行为更不可预测。
最小传输单元
很多闪存芯片标准或趋势都有的一个特点是读取传输在多个最小传输单元(也称为MTU、扇区、块或页)中完成。在一个示例中,最小传输单元长度是512字节。在其他实施例中,MTU长度可以更大或更小。最小传输单元可以实现请求-应答总线协议的“闲话(chattinness)”的隐藏,且允许HOST应用或运行在HOST系统上的应用利用数据存取中引用局域化的特点。实际上,它甚至事实上应用于DRAM到CPU存储器接口。CPU典型地以缓存线大小的传输进行操作,例如,每次传输64-128字节。
MTU存取的等待时间(定义为读取请求命令的结束与数据总线上出现MTU的第一位之间的时钟周期的数目)是设备、技术和封装专有的。例如,如果命令总线相对窄且读取请求相对长,也可以计数向闪存芯片发送读取命令所需的时钟周期的数目。在一些实例中,命令足够短且总线足够宽以使得读取命令长度在整个MTU存取等待时间中不明显。在初始MTU存取等待时间之后,MTU以全数据总线速度传输。
存储和检索中的瓶颈
另一共同特点是外部闪存芯片接口规范(例如,波形因数、总线命令和总线时序)不频繁变化。然而规范倾向于包括用于增加芯片密度以及并行(LUN)和“交织”程度中的可变性的明确规定。因此可以预计,增加闪存驱动器容量的客户需求导致驱动器上总线和/或磁驱动器到HOST总线中的瓶颈,因为例如,给定波形因数的仅有限数目的芯片可以适于典型的3.5寸盘的封装。每个驱动器上芯片的数目限制被转换为芯片到闪存控制器的总线的数目和组合的芯片-闪存-控制器带宽的限制。
在数据库管理系统中,数据被存储在表中,且表存储在诸如图3中的块302的数据块中。全表扫描操作一次读取N个连续数据块组中的表块(例如,32K数据块大小且一组中N=32个块导致1MB的连续读取)。
为了利用多个芯片(以及芯片内的多个并行LUN等),1MB的连续(从应用的视角)数据可以在闪存驱动器中跨越很多并行单元而被条带化。
存在很多数据格式无意识(即物理)数据条带化技术。例如,给定64个并行闪存单元,数据可以按位(例如,第一位进入第一芯片、第二位进入第二芯片,...第64为进入第64芯片,且然后重复该模式)、按字节、字、等被条带化为高达16k单元(在1MB读取中,64个芯片配置),或者可以根本不条带化。
良好的物理数据条带化技术利用闪存驱动器内的可用并行度,但是不减小需要从闪存芯片传输到主机系统的数据量。如果数据必须跨越在闪存芯片和HOST CPU之间的总线中的任意一个是瓶颈,则增加的并行度不导致性能改进(或仅部分地实现潜在的性能益处),且条带化是低效的(或者仅具有部分效果)。
使用数据片段的关系条带化数据
在数据库管理系统中,全表扫描典型地选择数据库列的子集(选择的所有列是一种可能的子集)。对于具有C列的表,全表扫描中可能的子集的数目是2^C,它们中仅一个是“所有列被选择”的情况。对于选择表列的子集的表扫描,表数据的子集需要从闪存芯片传输到HOSTCPU。
在一个实施例中,以行为主格式存储的数据库块在行内包含各种块头、表行和行列。行为主格式提供引用存取属性的良好局域化且允许高效的表索引,而列为主格式具有其自己的不同于行为主格式的折中集合。例如,列为主格式在若干专门的研究和商业产品中使用,诸如OracleExpress和其他Oracle产品。根据此处描述的技术,可以采用任一种格式。为了提供这些技术的清晰和简洁的解释,参考通过使用列关系条带化数据,以行为主格式存储数据来提供示例。当在此使用时,术语“行”包括垂直于“列”的任意数据片段,且术语“列”包括垂直于“行”的任意数据片段。换句话说,术语“行”可以被用词“列”代替,且反之亦然,只要它们描述垂直的数据片段。因此,描述的示例可以用于通过使用行关系条带化数据以列为主格式存储数据或者可以通过使用列关系条带化数据以行为主格式存储数据。
在行为主格式中,存储表数据的数据块包含给定全表扫描需要的列以及给定全表扫描不需要的列。类似地,在列为主格式中,存储表数据的数据块包含给定全表扫描需要的行以及给定全表扫描不需要的行。
与技术无关的条带化
我们的方法的技术在行存储中引入数据块的专用表达,其中列与闪存MTU(最小传输单元)大小的单元关联。在各个实施例中,该技术提供:
a)非常简单的与闪存技术/供应商无关的闪存控制器中智能扫描投影的实现方式。在闪存控制器中完成的智能扫描投影减小了需要从闪存控制器传输到HOST CPU的MTU的数目,减小了对于闪存控制器的所有上行总线上的需求;和/或
b)与大量闪存技术/供应商相关的智能扫描优化,其中仅MTU的子集从闪存芯片传输到闪存控制器,减小了对于连接闪存芯片到闪存控制器的局部总线、闪存芯片和闪存控制器本身的需求。
如果全表扫描在这些资源中的任意一个上遇到瓶颈,实施此处讨论的各种方法可以导致性能改进。
在数据以行为主格式存储的一个实施例中,块被逻辑地划分成“块帧”和“列数据”。列数据又被分割成多个列片段,每一列一个片段。块帧包含各种块头(缓存头、事务头等)。在一个实施例中,存储在块帧中的块头包括将列映射到逻辑存储单元的映射信息。列片段包含“垂直”列片段(例如,<长度,值>对的序列)。
逻辑列片段被映射到一组MTU。
在一个实施例中,为了实现上述a),映射是与闪存/供应商技术无关的。例如,仅MTU的大小被考虑进来以实施映射。
在一个实施例中,为实现上述b),映射是与闪存/供应商技术相关的。例如,MTU的大小和跨越多个闪存芯片的数据的物理条带化被考虑进来。
一个块到已知数目的固定长度的MTU的映射可以由跨越64个条而条带化的63列表的32K表块的非限制性示例解释,每个条512字节。
在该示例中,通过计算组合的块帧空间需求而开始条带化处理并且针对所有63列聚集列片段需求。这是64个非负数的集合,其和值小于或等于32768(32K)。在该示例中,该和值通常小于32K,因为块典型地在其中具有一定量的自由空间。
在该示例中,64个数存储在块帧片段中。可选地,在数据插入时,在块中预留用于存储这些64个2字节整数的128个字节。在另一实施例中,额外的空间在该块中可用,因为很少有具有0空闲字节的满负荷块。例如,128字节是32K块的0.4%,且这不以任何方式强加明显的存储开销。
继续该示例,开始于块帧,所有64个片段然后被一个接着一个相继写入到连续64个512字节条,关系/装填规则被配置为使得如果在其初级条带上开始下一片段不溢出32K,则下一片段对准于(装填于)其初级条带。否则,除了向其初级条带装填下一片段,下一片段可以在前一片段之后。例如,下一片段可以在下一条带上紧跟前一片段。
这种映射通过下面的示图示出,选择该示图是用于简单化目的。可以使用任意其他“可再生”关系映射。
在该示图中,块帧(由F指示)部分地填充第一MUT大小的单元。第一片段(由“x”指示)被装填。第一列片段(由“1”指示)开始于其初级映射位置且溢出到接下来的2个条带中。列2和列3的列片段(由“2”和“3”指示)不能在其初级位置开始,所以它们相继跟随。在列3和列61(由“A”指示)之间的某处,装填和初级映射变得再次可用,且最后的3列(61、62、63)映射到它们相应的初级条带且完全装入该初级条带中。
片段到MTU大小的条带的这种映射允许闪存控制器中非常简单的投影实现方式。通过查看块帧中的64个数,闪存控制器可以判断给定智能扫描不需要哪个MTU大小的片段,且避免向HOST发送这些不需要的条带。
可以看出,该特殊的块表示方式是布置块数据的完全等价的方式。在一个实施例中,如果在块中存在保存64个2字节的数的空间,则两个表示方式之间的高速转换总是可能的。如前所述,该空间可以在插入时预留,或者可以只是偶然存在于该块中。在现有块不具有128个空闲字节的稀少情况(例如,由数据库系统的前一版本格式化/插入)中,该例外块可以以其原始格式被存储,且存在例外的事实可以通过块帧头部中的专用位指示。在一个实施例中,备用位总是存在于32K块中以指示例外。
在一个实施例中,存储控制器从跨越多个存储器芯片而被条带化的行数据的块接收对列数据的请求。存储控制器从存储器芯片检索信息,诸如数据的最小传输单元。存储控制器访问存储在所检索信息的块头中的映射以确定数据的一个或多个部分存储所请求的一个或多个列。在一个示例中,数据的一个或多个部分从一个或多个存储器芯片而不是一个或多个其他存储器芯片被接收,并且数据的一个或多个其他部分从该一个或多个其他存储器芯片接收。基于该映射,存储控制器过滤出数据的一个或多个其他部分且向主机设备仅返回所请求的一个或多个列被映射到的数据的那些部分。
与技术相关的条带化
与技术相关的映射是对上面解释的映射的增强。在各个实施例中,所述技术包括:
1)从闪存驱动器系统中的所有芯片获得智能扫描的并行度;
2)减小必须在闪存芯片和闪存控制器之间移动的MTU的数目。
在一个实施例中,闪存驱动器采用跨越闪存芯片进行物理数据条带化的某种形式。在一个实施例中,“没有条带化”被认为是另一种特殊形式的条带化。在一个实施例中,条带的数目、它们的大小和条带向闪存芯片/LUN/交织的专门的分配是与闪存/厂商技术相关的。对于混合数据存取类型,可以基于闪存驱动器的最佳整体性能选择条带的数目。
在一个实施例中,默认映射逻辑位于存储器控制器上。默认映射逻辑将一个或多个列映射到被预测为存储用于该一个或多个列的数据的逻辑单元。默认映射逻辑可以由从存储块头的存储器芯片检索的校正映射补充。例如,默认映射可以预测可以存储所请求的列的一个或多个逻辑单元,且块头可以指示这些列是否实际存储在所预测的一个或多个逻辑单元上。在一个示例中,块头存储列大小以指示列数据是否从一个逻辑单元溢出到另一逻辑单元。
在一个实施例中,条带化是生理的、即不能控制的(physio-logical),其中数据的物理条带不变。换句话说,在一个实施例中,如果物理条带化将32K块数据分布在某些位置中某一数量的芯片上,则该生理的条带化导致相同的条带用在相同组的闪存芯片上。在一个实施例中,不像物理条带化方法,条带的内容被重新布置以允许各种读取时间的智能扫描优化。
在一个实施例中,生理条带化具有优于改变物理数据条带化的更积极方法的简单性的优点,因为物理逻辑条带化一般决不会差于仅物理的条带化方法。在一个实施例中,物理条带化被优选地选择。根据该实施例,在最差情况,当没有生理条带化时,可以按完全相同的顺序读取完全相同组的条带,确保没有劣化(但是在这种情况中也没有益处)。并不是每次数据库访问都是可以理论上受益于逻辑条带化的智能扫描。因此,各个实施例不劣化非智能扫描操作。服从物理条带设置是实现该目的的一种简单方式。
与上面的内容类似,通过存取63列表的智能扫描的示例示出物理逻辑条带化。在一个实施例中,针对给定闪存/供应商技术选择的物理条带化在闪存驱动器中的闪存芯片中跨越64个并行单元分配32K的连续数据,每个芯片一个MTU。
在该示例中,在一个32K数据库块中,映射保持相同——帧,接着是C1、C2...C63。对于连续的32K数据库块,列片段到MTU的映射是使用引入的“相移”完成的,如下面的示图所示。
如图所示,“F”指示块帧片段映射,数字1、2、3、4和5表示列片段1、2、3等的初级映射,且字母A、B和C相应地指示列片段61、62和63的初级映射。在一个实施例中,该表的列对应于64个闪存芯片,且列内的MTU连续存在于芯片内。
在该示例中,对于下一组32个块,类似于第一组32个32K的块,引入的相移模式重复。引入的相移值用于在所有并行芯片(LUN)上分配每个初级列MTU。该生理条带化示例允许技术相关的各种读取时间优化。
存取列#1、处理1MB的连续数据块(32个32K块)的示例智能扫描以下面的方式进行。在算法的第一步骤,从32个并行的不同的闪存芯片传输初级32个块帧条带(相移的条带化保证了这些块帧被映射到不同芯片)。同时,其他32个芯片传输用于所需的列1的初级MTU。
在一个实施例中,如可以通过查看块帧片段中的组合列长度判断的,如果列1完全存在于初级片段上,则在第一步骤之后,读取算法中止。在该示例中,列条带化技术将闪存芯片和闪存控制器之间移动的数据量减小32倍(32X)。
在一个实施例中,如果列溢出到次级溢出片段,则继续读取,直到所有溢出的片段都被检索到。所检索的数据被发送到主机。在溢出示例中,闪存芯片和闪存控制器之间移动的数据量的减小小于32X,但是仍可以容易地实现数量级的减小。例如,如果溢出是仅单个溢出,则可以在闪存芯片和闪存控制器之间移动的数据量中实现16X的减小而不是其他示例中的32X。
在该示例中,取决于什么条带需要被检索且所需的列如何映射到它们的初级条带,如果位于闪存芯片和闪存控制器之间的局部总线是瓶颈,则列条带化技术可以导致1.0(没有改进)至32X之间的性能改进比。
在一个实施例中,如果上述智能扫描读取优化不可应用于给定的闪存技术(例如,由于等待时间太大),则可以使用基于MAX列大小的不同优化。有时,列大小是确切已知的,例如在Oracle日期、本地浮点/双浮点和固定字符(例如,char(3))列的情形。在这种情况中,对于智能扫描存取例如63列表中的列1-10,获知最初的10个列上的组合的MAX长度可以允许限制该扫描所需要的MTU的子集。在这种情况中,可以使用不同相移策略,以对于具有基于MAX列大小的MTU限制的前缀智能扫描,针对该技术优化跨芯片的MTU布局。
在64个并行芯片/512字节条带化示例中,如下所示,可以在每4个块之后完成16个MTU的相移。
相移示例增加了从每个闪存芯片的连续传输长度,在这种情况中减小了MTU的存取等待时间。在一个实施例中,相移示例得到了闪存芯片并行度的益处。
从闪存控制器向HOST返回MTU的子集意味着数据库系统必须处理由MTU的子集形成的“部分”块。这具有若干种选择。在一种选择中,在块被提供到关系数据库管理系统以用于进一步处理之前,MTU的子集被重组成部分行为主块。在另一种选择中,关系数据库管理系统可选地利用向量化的列处理技术直接处理列MTU。
在MUT重组的前一种情况中,在一个实施例中,闪存控制器本身被编程或逻辑地配置成执行MUT重组。MUT重组还可以在HOST CPU中完成,或者最合适地,在闪存控制器和HOST CPU之间分割。
在一个实施例中,从行存储格式到关系化的列MUT的块转化大部分在HOST CPU中完成,为此闪存控制器仅向HOST暴露必要的信息一一诸如MTU大小和跨越闪存芯片的物理条带化。在另一实施例中,从行存储格式到关系化列MTU的块转化完全在闪存控制器中完成,或者在合适时分割在HOST CPU和闪存控制器之间。
闪存控制器和HOST CPU之间的工作划分选择具有各种利弊。在HOST CPU中完成更多的工作可以转换为主机上的可见CPU开销。另一方面,闪存控制器可以比HOST更难以编程和更新。
在一个实施例中,在闪存控制器中支持智能扫描涉及使用存储总线命令扩展。大多数存储命令系统预留一些机制来实现厂商/应用专用的命令。
实现厂商专用命令的一种方案是预留一部分块地址,例如超出驱动器容量的高地址以用于厂商/应用专用通信。在一个实施例中,该方案可以普遍地应用于所有存储协议。由HOST向专用块地址进行写入可以被闪存控制器解读为厂商专用命令,且由HOST从这些地址进行读取可以被闪存控制器解读为智能扫描读取请求。
对数据请求的响应
在一个实施例中,存储器控制器从跨越多个存储器芯片而条带化的行数据的块接收对列数据的请求。例如,该请求可以包括从行数据的数据块选择一个或多个数据列的命令。在另一示例中,该请求包括指定所请求的列的元数据而不指定对于列执行的操作。存储器控制器访问映射以确定就存储器芯片自身或存储器芯片的逻辑单元而言可被识别的一个或多个存储器设备存储该请求的列数据。
在一个实施例中,存储控制器从确定性地映射到块头的存储设备以及被预测为持有所请求的列数据的一个或多个存储器设备并行地存取数据的MTU。块头被读取以确定整个请求的列数据是否存储在从被预测为持有所请求的列数据的存储器设备中检索到的信息中。如果全部所请求的列数据存储在从被预测为持有所请求的列数据的存储器设备中检索到的信息中,则存储器控制器向主机设备返回所请求的列数据,而无需检索或返回来自其他存储设备的其他数据。
如果块头指示所请求的列数据溢出到一个或多个其他存储器设备上,则存储器控制器从一个或多个其他存储器设备检索所请求的列数据的其余部分。在一个实施例中,存储器控制器组装来自多个存储器设备的所请求的列数据且将所请求的列数据返回到主机设备而不检索或返回来自不同于这些被预测或已知为存储所请求的数据列的其他存储设备的其他数据。
硬件概述
根据一个实施例,此处描述的技术通过一个或多个专用计算设备实施或与这些计算设备结合地实施。在一个示例中,闪存模块是被配置成向HOST计算设备发送数据且从其接收数据和命令的存储设备。HOST计算设备被配置成向闪存模块发送数据存储命令和数据检索命令。该专用计算设备可以是硬布线的以执行所述技术,或者可以包括诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备(被永久地编程和/或可以在运行中编程以执行这些技术),或者可以包括依照固件、存储器、其他存储装置或组合中的编程指令而被编程为执行这些技术的一个或多个通用硬件处理器。这种专用计算设备还可组合定制的硬布线逻辑、ASIC、或FPGA与定制程序来实现所述技术。该专用计算设备可以是结合硬布线和/或程序逻辑以实现或利用这些技术的桌面计算机系统、便携式计算机系统、手持式设备、网络设备或任意其他设备。
例如,图4是示出计算机系统400的框图。计算机系统400包括用于传递信息的总线402或其他通信机制以及与总线402耦合以用于处理信息的硬件处理器404。硬件处理器404例如可以是通用微处理器。
计算机系统400还包括耦合到总线402以用于存储信息和要由处理器404执行的指令的主存储器406,诸如随机存取存储器(RAM)或其他动态存储设备。主存储器406还可以用于存储要由处理器404执行的指令的执行期间的临时变量或其他中间信息。当被存储在处理器404可访问的非临时存储介质中时,这些指令使得计算机系统400呈现为定制为执行这些指令中指定的操作的专用机。
计算机系统400还包括耦合到总线402以用于存储静态信息和用于处理器404的指令的只读存储器(ROM)408和其他静态存储设备。诸如磁盘或光盘的存储设备410被提供且耦合到总线402以用于存储信息和指令。
计算机系统400可以经由总线402耦合到诸如阴极射线管(CRT)的显示器412以用于向计算机用户显示信息。包括字母数字和其他键的输入设备414耦合到总线402以用于向处理器404传递信息和命令选择。其他类型的用户输入设备是诸如鼠标、跟踪球或光标方向键的光标控制器416,以用于向处理器404传递方向信息和命令选择且用于在显示器412上控制光标移动。该输入设备典型地在两个轴:第一轴(例如x)和第二轴(例如y)中具有两个自由度,这允许设备在平面中指定位置。
计算机系统400可以使用定制的硬布线逻辑、一个或多个ASIC或FPGA、固件和/或与计算机系统程序或程序计算机系统400组合成专用机的程序逻辑实施此处描述的技术。根据一个实施例,此处的技术被计算机系统400使用以响应于处理器404执行包含在主存储器406中一个或多个指令的一个或多个序列以使得计算机系统400向闪存模块发送命令。这种指令可以从诸如存储设备410的其他存储介质读取到主存储器406。包含在主存储器406中的指令序列的执行使得处理器404执行此处描述的处理步骤。在备选实施例中,可以使用硬布线电路代替软件指令或与后者结合使用。
当在此使用时,术语“存储介质”表示存储使得机器以特定方式操作的数据和/或指令的任意非临时介质。这种存储介质可以包含非易失性介质和/或易失性介质。非易失性介质例如包括光盘、磁盘或闪存模块,诸如存储设备410。易失性介质包括诸如主存储器406的动态存储器。存储介质的公共形式例如包括软盘、柔性盘、硬盘、固态盘、磁带或任意其他磁性数据存储介质、CD-ROM、任意其他光学数据存储介质、具有孔图案的任意物理介质、RAM、ROM和EPROM、FLASH-EPROM、NVRAM、任意其他存储芯片或盒。
存储介质可以从传输介质分离,但也可以与传输介质结合使用。传输介质参与存储介质之间的信息传输。例如,传输介质包括同轴线缆、铜线和光纤,包括包含总线402的布线。传输介质还可以具有声学或光波的形式,诸如在无线电波和红外数据通信中产生的声学或光波。
各种形式的介质可以涉及向处理器404运送一个或多个指令的一个或多个序列以供执行。例如,指令可以初始地位于远程计算机的磁盘或固态驱动器上。远程计算机可以将指令装载到其动态存储器且通过使用调制解调器在电话线上发送指令。计算机系统400本地的调制解调器可以接收电话线上的数据且使用红外发射器将数据转换成红外信号。红外检测器可以接收红外信号中运送的数据且适当的电路系统可以将数据放置在总线402上。总线402将数据运送到主存储器406,处理器404从该主存储器406检索和执行指令。主存储器406接收的指令可选地可以在处理器404执行之前或之后存储在存储设备410上。
计算机系统400还包括耦合到总线402的通信接口418。通信接口418提供与连接到局域网422的网络链路420耦合的双向数据通信。例如,通信接口418可以是综合业务数字网(ISDN)卡、线缆调制解调器、卫星调制解调器或调制解调器以向相应类型的电话线提供数据通信连接。作为另一示例,通信接口418可以是局域网(LAN)卡以提供与兼容LAN的数据通信连接。也可以实现无线链路。在任意这种实施中,通信接口418发送和接收运送代表各种类型的信息的数字数据流的电学、电磁或光学信号。
网络链路420典型地通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路420可以通过局域网422向主机计算机424或向因特网服务提供商(ISP)426操作的数据设备提供连接。ISP426进而通过现在常称为“因特网”的万维包数据通信网络428提供数据通信服务。局域网422和因特网428均使用运送数字数据流的电学、电磁或光学信号。运送数字数据到计算机系统400且从其运送数字数据的通过各个网络的信号和网络链路420上且通过通信接口418的信号都是传输介质的示例形式。
计算机系统400可以通过(多个)网络、网络链路420和通信接口418发送包括程序代码的消息和接收数据。在因特网示例中,服务器430可以通过因特网428、ISP426、局域网422和通信接口418发送用于应用程序的请求代码。
所接收的代码可以通过在被处理器404接收时被处理器404执行,和/或存储在存储设备410或其他非易失性存储设备中以用于稍后执行。
在上面的说明书中,参考可以在实施方式之间变化的各个特定细节描述了本发明的实施例。因而,本发明的唯一和排他的且本发明的申请人所指的指示是源于以该申请的权利要求发布的特定形式的权利要求集,包括任意后续校正。此处针对包含在这种权利要求中的术语明确提出的任何限定将支配权利要求中使用的这种术语的意义。因此,在权利要求中没有明确陈述的限制、元件、性质、特征、优点或属性将不以任意方式限制这种权利要求的范围。说明书和附图因此被认为是说明性而非限制性的。
Claims (31)
1.一种存储器设备,包含:
存储器控制器;以及
多个存储器芯片;
该存储器控制器被配置成从计算设备接收对数据的请求,所述数据存储在跨越所述多个存储器芯片而被条带化的一个或多个数据块中,其中每个数据块存储一组行;
所述存储器控制器被配置成确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的;并且
所述存储器控制器被配置成针对所述一个或多个数据块中的每个数据块,执行:
针对所述每个数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑;
基于所述映射逻辑,选择所述多个存储器芯片中的存储所述一个或多个列所映射到的所述一个或多个条带化部分的一个或多个存储器芯片;
从所述一个或多个存储器芯片检索所述一个或多个条带化部分,而不从多个存储器芯片中的一个或多个其他存储器芯片检索所述数据块的一个或多个其他条带化部分,其中所述数据块的一个或多个其他条带化部分是由一个或多个其他列映射的;以及
从所述数据块的所述一个或多个条带化部分向所述计算设备返回所述列数据。
2.根据权利要求1所述的存储器设备,其中所述映射逻辑包含默认映射和校正映射,其中所述默认映射将所述一个或多个列中的特定列映射到所述一个或多个条带化部分中的第一条带化部分,且其中所述一个或多个存储器芯片中的第一存储器芯片存储该第一条带化部分,该存储器控制器还被配置成执行:
从校正映射确定所述一个或多个列溢出到所述一个或多个条带化部分中的第二条带化部分上;以及
从存储第二条带化部分的第二存储器芯片检索第二条带化部分;
其中,所述数据块的所述一个或多个其他条带化部分是不同于第一条带化部分和第二条带化部分的条带化部分,其中所述一个或多个其他存储器芯片是不同于第一存储器芯片和第二存储器芯片的存储器芯片,并且其中所述一个或多个其他列是不同于所述特定列的列。
3.根据权利要求1所述的存储器设备,其中所述一个或多个条带化部分中的每个条带化部分被存储在所述多个存储器芯片中的所述一个或多个存储器芯片上的逻辑存储单元中。
4.根据权利要求3所述的存储器设备,其中每个逻辑存储单元具有基于所述多个存储器芯片和存储器控制器之间的最小传输单元MTU的大小。
5.根据权利要求1所述的存储器设备,其中所述映射逻辑包含存储器控制器上的默认逻辑,该默认逻辑将所述一个或多个列中的特定列映射到所述一个或多个条带化部分中的特定条带化部分。
6.根据权利要求1所述的存储器设备,其中所述映射逻辑包含默认映射和校正映射,且其中所述存储器控制器还被配置成从存储块头的特定存储器设备执行对所述校正映射的检索。
7.根据权利要求1所述的存储器设备,其中该映射逻辑包含存储器控制器上的默认映射,该默认映射将所述一个或多个列中的特定列映射到所述一个或多个条带化部分中的特定条带化部分,该存储器控制器还被配置成执行从存储块头的第一存储器芯片检索块头,并且其中该映射逻辑还包含块头中的校正映射,该校正映射指示所述一个或多个列装入所述特定条带化部分。
8.一种存储器设备,包含:
存储器控制器;
多个存储器芯片;
所述存储器控制器被配置成从计算设备接收对数据的请求,所述数据存储在跨越所述多个存储器芯片而被条带化的一个或多个数据块中,其中所述一个或多个数据块中的每个存储一组行;
所述存储器控制器被配置成确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的;并且
所述存储器控制器被配置成针对所述一个或多个数据块中的每个数据块,执行:
从所述多个存储器芯片中的每一个检索所述数据块的条带化部分,
针对所述数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑,
基于所述映射逻辑,从所述数据块的检索的条带化部分提取所述一个或多个条带化部分,以及
从所述数据块的一个或多个条带化部分向计算设备返回列数据,而不返回所述数据块的检索的条带化部分中的一个或多个其他条带化部分。
9.根据权利要求8所述的存储器设备,其中所述条带化部分中的每一个存储在所述多个存储器芯片中的一个存储器芯片上的逻辑存储单元中。
10.根据权利要求8所述的存储器设备,其中每个逻辑存储单元具有基于所述多个存储器芯片和存储器控制器之间的最小传输单元MTU的大小。
11.根据权利要求8所述的存储器设备,其中所述检索的条带化部分中的特定条带化部分包括块头,其中该映射逻辑包含存储在所述块头中的映射。
12.一种用于访问多个存储器设备中的条带化的行数据的方法,所述方法包含:
存储器控制器从计算设备接收对数据的请求,所述数据存储在跨越所述存储器设备而被条带化的一个或多个数据块中,其中每个数据块存储一组行;
确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的;并且
针对所述一个或多个数据块中的每个数据块:
针对所述每个数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑;
基于所述映射逻辑,选择所述多个存储器设备中的存储所述一个或多个列映射到的所述一个或多个条带化部分的一个或多个存储器设备;
从所述一个或多个存储器设备检索所述一个或多个条带化部分,而不从所述多个存储器设备中的一个或多个其他存储器设备检索所述数据块的一个或多个其他条带化部分,其中所述数据块的一个或多个其他条带化部分是由一个或多个其他列映射的;以及
从所述数据块的所述一个或多个条带化部分向所述计算设备返回所述列数据。
13.根据权利要求12所述的方法,其中所述映射逻辑包含默认映射和校正映射,其中所述默认映射将所述一个或多个列中的特定列映射到所述一个或多个条带化部分中的特定条带化部分,并且其中所述一个或多个存储器设备中的第一存储器设备存储第一条带化部分,所述方法还包含:
从校正映射确定所述一个或多个列溢出到所述一个或多个条带化部分中的第二条带化部分上;以及
从存储所述第二条带化部分的第二存储器设备检索所述第二条带化部分;
其中所述数据块的一个或多个其他条带化部分是不同于第一条带化部分和第二条带化部分的条带化部分,其中所述一个或多个其他存储器设备是不同于第一存储器设备和第二存储器设备的存储器设备,且其中所述一个或多个其他列是不同于所述特定列的列。
14.根据权利要求12所述的方法,其中所述一个或多个条带化部分中的每个条带化部分被存储在所述多个存储器设备中的所述一个或多个存储器设备上的逻辑存储单元中。
15.根据权利要求14所述的方法,其中每个逻辑存储单元具有基于所述一个或多个存储器设备和存储器控制器之间的最小传输单元MTU的大小。
16.根据权利要求12所述的方法,其中所述映射逻辑包含默认映射和校正映射,该方法还包含从存储块头的特定存储器设备检索校正映射。
17.根据权利要求12所述的方法,其中该映射逻辑包含存储器控制器上的默认映射,该默认映射将所述一个或多个列中的特定列映射到所述一个或多个条带化部分中的特定条带化部分,该方法还包含:从存储块头的第一存储器芯片检索块头,且其中所述映射逻辑还包含块头中的校正映射,所述校正映射指示所述一个或多个列装入所述特定条带化部分。
18.一种用于访问多个存储器设备中的条带化的行数据的方法,所述方法包含:
存储器控制器从计算设备接收对数据的请求,所述数据存储在跨越多个存储器设备而被条带化的一个或多个数据块中,其中所述一个或多个数据块中的每一个存储一组行;
确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的;以及
针对所述一个或多个数据块中的每个数据块:
从所述多个存储器设备中的每个检索所述数据块的条带化部分,
针对所述数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑,
基于所述映射逻辑,从所述数据块的检索的条带化部分提取所述一个或多个条带化部分,以及
从所述数据块的所述一个或多个条带化部分向所述计算设备返回列数据,而不返回所述数据块的检索的条带化部分中的一个或多个其他条带化部分。
19.根据权利要求18所述的方法,其中所述条带化部分中的每个条带化部分存储在所述多个存储器设备上的逻辑存储单元中,并且其中每个逻辑存储单元具有基于所述多个存储器设备和存储器控制器之间的最小传输单元MTU的大小。
20.根据权利要求18所述的方法,其中所述检索的条带化部分中的特定条带化部分包括块头,其中该映射逻辑包含存储在所述块头中的映射。
21.一种存储器控制器,包括:
用于从计算设备接收对数据的请求的装置,所述数据存储在跨越多个存储器芯片而被条带化的一个或多个数据块中,其中每个数据块存储一组行;
用于确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的装置;以及
用于针对所述一个或多个数据块中的每个数据块,执行以下操作的装置:
针对所述每个数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑;
基于所述映射逻辑,选择所述多个存储器芯片中的存储所述一个或多个列所映射到的所述一个或多个条带化部分的一个或多个存储器芯片;
从所述一个或多个存储器芯片检索所述一个或多个条带化部分,而不从所述多个存储器芯片中的一个或多个其他存储器芯片检索所述数据块的一个或多个其他条带化部分,其中所述数据块的一个或多个其他条带化部分是由一个或多个其他列映射的;以及
从所述数据块的所述一个或多个条带化部分向所述计算设备返回所述列数据。
22.根据权利要求21所述的存储器控制器,其中所述映射逻辑包含默认映射和校正映射,其中所述默认映射将所述一个或多个列中的特定列映射到所述一个或多个条带化部分中的第一条带化部分,且其中所述一个或多个存储器芯片中的第一存储器芯片存储该第一条带化部分,该存储器控制器还包括:
用于从校正映射确定所述一个或多个列溢出到所述一个或多个条带化部分中的第二条带化部分上的装置;以及
用于从存储第二条带化部分的第二存储器芯片检索第二条带化部分的装置;
其中,所述数据块的所述一个或多个其他条带化部分是不同于第一条带化部分和第二条带化部分的条带化部分,其中所述一个或多个其他存储器芯片是不同于第一存储器芯片和第二存储器芯片的存储器芯片,并且其中所述一个或多个其他列是不同于所述特定列的列。
23.根据权利要求21所述的存储器控制器,其中所述一个或多个条带化部分中的每个条带化部分被存储在所述多个存储器芯片中的一个或多个存储器芯片上的逻辑存储单元中。
24.根据权利要求23所述的存储器控制器,其中每个逻辑存储单元具有基于所述多个存储器芯片和存储器控制器之间的最小传输单元MTU的大小。
25.根据权利要求21所述的存储器控制器,其中所述映射逻辑包含存储器控制器上的默认逻辑,该默认逻辑将所述一个或多个列中的特定列映射到所述一个或多个条带化部分中的特定条带化部分。
26.根据权利要求21所述的存储器控制器,其中所述映射逻辑包含默认映射和校正映射,且其中所述存储器控制器还被配置成从存储块头的特定存储器设备执行对所述校正映射的检索。
27.根据权利要求21所述的存储器控制器,其中该映射逻辑包含存储器控制器上的默认映射,该默认映射将所述一个或多个列中的特定列映射到所述一个或多个条带化部分中的特定条带化部分,该存储器控制器还被配置成执行从存储块头的第一存储器芯片检索块头,并且其中该映射逻辑还包含块头中的校正映射,该校正映射指示所述一个或多个列装入所述特定条带化部分。
28.一种存储器控制器,包含:
用于从计算设备接收对数据的请求的装置,所述数据存储在跨越多个存储器芯片而被条带化的一个或多个数据块中,其中所述一个或多个数据块中的每个存储一组行;
用于确定所述请求是针对所述组行中的存储在一个或多个列中的列数据的装置;以及
用于针对所述一个或多个数据块中的每个数据块执行以下操作的装置:
从所述多个存储器芯片中的每一个检索所述数据块的条带化部分,
针对所述数据块,使用将所述一个或多个列中的每个列映射到所述数据块的一个或多个条带化部分的映射逻辑,
基于所述映射逻辑,从所述数据块的检索的条带化部分提取所述一个或多个条带化部分,以及
从所述数据块的一个或多个条带化部分向计算设备返回列数据,而不返回所述数据块的检索的条带化部分中的一个或多个其他条带化部分。
29.根据权利要求28所述的存储器控制器,其中所述条带化部分中的每一个存储在所述多个存储器芯片中的一个存储器芯片上的逻辑存储单元中。
30.根据权利要求28所述的存储器控制器,其中每个逻辑存储单元具有基于所述多个存储器芯片和存储器控制器之间的最小传输单元MTU的大小。
31.根据权利要求28所述的存储器控制器,其中所述检索的条带化部分中的特定条带化部分包括块头,其中该映射逻辑包含存储在所述块头中的映射。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23532509P | 2009-08-19 | 2009-08-19 | |
US61/235,325 | 2009-08-19 | ||
US12/859,184 US8296517B2 (en) | 2009-08-19 | 2010-08-18 | Database operation-aware striping technique |
US12/859,184 | 2010-08-18 | ||
PCT/US2010/046002 WO2011022543A2 (en) | 2009-08-19 | 2010-08-19 | Database operation-aware striping technique |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102301349A CN102301349A (zh) | 2011-12-28 |
CN102301349B true CN102301349B (zh) | 2015-02-25 |
Family
ID=43606209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080005858.7A Active CN102301349B (zh) | 2009-08-19 | 2010-08-19 | 访问存储控制器控制的存储芯片中根据列条带化的行数据 |
Country Status (5)
Country | Link |
---|---|
US (3) | US8296517B2 (zh) |
EP (1) | EP2384473B1 (zh) |
JP (1) | JP5698238B2 (zh) |
CN (1) | CN102301349B (zh) |
WO (1) | WO2011022543A2 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8356060B2 (en) * | 2009-04-30 | 2013-01-15 | Oracle International Corporation | Compression analyzer |
US8935223B2 (en) * | 2009-04-30 | 2015-01-13 | Oracle International Corporation | Structure of hierarchical compressed data structure for tabular data |
US8645337B2 (en) * | 2009-04-30 | 2014-02-04 | Oracle International Corporation | Storing compression units in relational tables |
US9667269B2 (en) | 2009-04-30 | 2017-05-30 | Oracle International Corporation | Technique for compressing XML indexes |
US8583692B2 (en) * | 2009-04-30 | 2013-11-12 | Oracle International Corporation | DDL and DML support for hybrid columnar compressed tables |
US8296517B2 (en) | 2009-08-19 | 2012-10-23 | Oracle International Corporation | Database operation-aware striping technique |
US8213243B2 (en) * | 2009-12-15 | 2012-07-03 | Sandisk 3D Llc | Program cycle skip |
JP2013222273A (ja) * | 2012-04-13 | 2013-10-28 | Lapis Semiconductor Co Ltd | 半導体装置、機密データ管理システム、及び機密データ管理方法 |
US20140173173A1 (en) * | 2012-12-13 | 2014-06-19 | Elpida Memory, Inc. | Method, device, and system including configurable bit-per-cell capability |
TWI498812B (zh) * | 2013-01-07 | 2015-09-01 | Mstar Semiconductor Inc | 資料存取方法以及使用此資料存取方法的電子裝置 |
US8947944B2 (en) | 2013-03-15 | 2015-02-03 | Sandisk 3D Llc | Program cycle skip evaluation before write operations in non-volatile memory |
US8947972B2 (en) | 2013-03-15 | 2015-02-03 | Sandisk 3D Llc | Dynamic address grouping for parallel programming in non-volatile memory |
US10664474B1 (en) | 2013-03-15 | 2020-05-26 | Progress Software Corporation | Query system |
US9411817B2 (en) * | 2013-09-23 | 2016-08-09 | Google Inc. | Programmatically choosing preferred storage parameters for files in large-scale distributed storage systems based on desired file reliability or availability |
US10311154B2 (en) * | 2013-09-21 | 2019-06-04 | Oracle International Corporation | Combined row and columnar storage for in-memory databases for OLTP and analytics workloads |
US9711225B2 (en) | 2013-10-16 | 2017-07-18 | Sandisk Technologies Llc | Regrouping and skipping cycles in non-volatile memory |
US9336196B2 (en) * | 2013-12-06 | 2016-05-10 | Sap Se | Methods, systems, and apparatus for optimization using statistical estimation |
KR102295769B1 (ko) * | 2014-05-20 | 2021-08-30 | 삼성전자주식회사 | 스토리지 컨트롤러 및 상기 스토리지 컨트롤러의 동작 방법 |
CN104967638B (zh) * | 2014-07-28 | 2016-08-24 | 浙江大华技术股份有限公司 | 一种数据节点的分配方法及系统 |
JP6467636B2 (ja) * | 2014-08-28 | 2019-02-13 | パナソニックIpマネジメント株式会社 | メモリカード |
US9564215B2 (en) | 2015-02-11 | 2017-02-07 | Sandisk Technologies Llc | Independent sense amplifier addressing and quota sharing in non-volatile memory |
SG10201504703QA (en) * | 2015-06-15 | 2017-01-27 | Mastercard Asia Pacific Pte Ltd | Method and system for determining a preference index |
US9990308B2 (en) | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
US10803039B2 (en) | 2017-05-26 | 2020-10-13 | Oracle International Corporation | Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index |
US10719446B2 (en) | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
US10956335B2 (en) | 2017-09-29 | 2021-03-23 | Oracle International Corporation | Non-volatile cache access using RDMA |
US10802766B2 (en) | 2017-09-29 | 2020-10-13 | Oracle International Corporation | Database with NVDIMM as persistent storage |
US10732836B2 (en) | 2017-09-29 | 2020-08-04 | Oracle International Corporation | Remote one-sided persistent writes |
US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
US10684915B2 (en) * | 2018-07-25 | 2020-06-16 | EMC IP Holding Company LLC | Efficient packing of compressed data in storage system implementing data striping |
US11170002B2 (en) | 2018-10-19 | 2021-11-09 | Oracle International Corporation | Integrating Kafka data-in-motion with data-at-rest tables |
KR20200069889A (ko) * | 2018-12-07 | 2020-06-17 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
Family Cites Families (79)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5263145A (en) | 1990-05-24 | 1993-11-16 | International Business Machines Corporation | Method and means for accessing DASD arrays with tuned data transfer rate and concurrency |
US5303244A (en) * | 1991-03-01 | 1994-04-12 | Teradata | Fault tolerant disk drive matrix |
US5506979A (en) | 1991-04-02 | 1996-04-09 | International Business Machines Corporation | Method and means for execution of commands accessing variable length records stored on fixed block formatted DASDS of an N+2 DASD synchronous array |
US5333291A (en) | 1991-06-14 | 1994-07-26 | International Business Machines Corporation | Stride enhancer for high speed memory accesses with line fetching mode and normal mode employing boundary crossing determination |
EP0630506A4 (en) | 1992-03-17 | 1995-01-04 | Zoran Corporation | Image compression coder having improved bit rate control and block allocation. |
US5379393A (en) * | 1992-05-14 | 1995-01-03 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Cache memory system for vector processing |
US5404510A (en) | 1992-05-21 | 1995-04-04 | Oracle Corporation | Database index design based upon request importance and the reuse and modification of similar existing indexes |
JP3290462B2 (ja) * | 1992-05-29 | 2002-06-10 | 沖電気工業株式会社 | データベース管理システム |
US5581778A (en) | 1992-08-05 | 1996-12-03 | David Sarnoff Researach Center | Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock |
US5794229A (en) | 1993-04-16 | 1998-08-11 | Sybase, Inc. | Database system with methodology for storing a database table by vertically partitioning all columns of the table |
US5546575A (en) | 1994-05-23 | 1996-08-13 | Basil E. Potter & Associates, Inc. | Encoding method for compressing a tabular database by selecting effective compression routines for each field and structure of partitions of equal sized records |
US5680573A (en) | 1994-07-12 | 1997-10-21 | Sybase, Inc. | Method of buffering data objects in a database |
US7190284B1 (en) | 1994-11-16 | 2007-03-13 | Dye Thomas A | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent |
US5809224A (en) * | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | On-line disk array reconfiguration |
US5710909A (en) | 1996-01-23 | 1998-01-20 | International Business Machines Corporation | Data compression utilization method and apparatus for computer main store |
US5995080A (en) | 1996-06-21 | 1999-11-30 | Digital Equipment Corporation | Method and apparatus for interleaving and de-interleaving YUV pixel data |
US9197599B1 (en) | 1997-09-26 | 2015-11-24 | Verizon Patent And Licensing Inc. | Integrated business system for web based telecommunications management |
US7225249B1 (en) | 1997-09-26 | 2007-05-29 | Mci, Llc | Integrated systems for providing communications network management services and interactive generating invoice documents |
US6011871A (en) | 1997-10-09 | 2000-01-04 | Bmc Software, Inc. | Method and apparatus for compressing digital data |
US6360213B1 (en) | 1997-10-14 | 2002-03-19 | International Business Machines Corporation | System and method for continuously adaptive indexes |
US6216125B1 (en) | 1998-07-02 | 2001-04-10 | At&T Corp. | Coarse indexes for a data warehouse |
US6959300B1 (en) | 1998-12-10 | 2005-10-25 | At&T Corp. | Data compression method and apparatus |
US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US7129860B2 (en) | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6721727B2 (en) | 1999-12-02 | 2004-04-13 | International Business Machines Corporation | XML documents stored as column data |
US6675318B1 (en) * | 2000-07-25 | 2004-01-06 | Sun Microsystems, Inc. | Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension |
CA2326805A1 (en) | 2000-11-24 | 2002-05-24 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for deleting data in a database |
US20020194428A1 (en) * | 2001-03-30 | 2002-12-19 | Intransa, Inc., A Delaware Corporation | Method and apparatus for distributing raid processing over a network link |
US7024414B2 (en) * | 2001-08-06 | 2006-04-04 | Sensage, Inc. | Storage of row-column data |
US7076108B2 (en) | 2001-12-11 | 2006-07-11 | Gen Dow Huang | Apparatus and method for image/video compression using discrete wavelet transform |
SG105533A1 (en) * | 2002-01-31 | 2004-08-27 | St Microelectronics Asia | Memory transfer controller and method of transfer control of video line data and macroblock data |
US7103608B1 (en) | 2002-05-10 | 2006-09-05 | Oracle International Corporation | Method and mechanism for storing and accessing data |
US20050027729A1 (en) | 2002-05-22 | 2005-02-03 | Allan Kuchinsky | System and methods for visualizing and manipulating multiple data values with graphical views of biological relationships |
AU2002309091A1 (en) | 2002-06-07 | 2003-12-22 | Nokia Corporation | Supporting in a communication system a request for information on a mobile device |
AU2003300950A1 (en) | 2002-12-16 | 2004-07-22 | Questerra Corporation | Real-time insurance policy underwriting and risk management |
US7079056B2 (en) | 2003-01-15 | 2006-07-18 | Delphi Technologies, Inc. | Method of encoding and storing in a machine control computer a compressed data lookup table |
US7149847B2 (en) * | 2003-06-26 | 2006-12-12 | Adaptec, Inc. | RAID 6 disk array architectures |
CN100547583C (zh) | 2003-08-14 | 2009-10-07 | 甲骨文国际公司 | 数据库的自动和动态提供的方法 |
US7469266B2 (en) | 2003-09-29 | 2008-12-23 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using register block data format routines |
US7302520B2 (en) * | 2003-12-02 | 2007-11-27 | Spinnaker Networks, Llc | Method and apparatus for data storage using striping |
US7693325B2 (en) | 2004-01-14 | 2010-04-06 | Hexagon Metrology, Inc. | Transprojection of geometry data |
US20050210054A1 (en) | 2004-03-22 | 2005-09-22 | Michael Harris | Information management system |
US7496586B1 (en) | 2004-05-26 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for compressing data in a file system |
US7565346B2 (en) | 2004-05-31 | 2009-07-21 | International Business Machines Corporation | System and method for sequence-based subspace pattern clustering |
US7707194B2 (en) | 2004-06-08 | 2010-04-27 | Sap Ag | Interface to lock a database row through a logical locking interface |
US20060075157A1 (en) * | 2004-09-28 | 2006-04-06 | Paul Marchal | Programmable memory interfacing device for use in active memory management |
US8131926B2 (en) * | 2004-10-20 | 2012-03-06 | Seagate Technology, Llc | Generic storage container for allocating multiple data formats |
WO2006096939A1 (en) | 2005-03-18 | 2006-09-21 | Kwok Kay Wong | Remote access of heterogeneous data |
US7496589B1 (en) | 2005-07-09 | 2009-02-24 | Google Inc. | Highly compressed randomly accessed storage of large tables with arbitrary columns |
US7447839B2 (en) * | 2005-09-13 | 2008-11-04 | Yahoo! Inc. | System for a distributed column chunk data store |
US7558290B1 (en) | 2005-12-16 | 2009-07-07 | Narus, Inc. | Method and apparatus of data compression for computer networks |
US20070143248A1 (en) | 2005-12-19 | 2007-06-21 | Yahoo! Inc. | Method using query processing servers for query processing of column chunks in a distributed column chunk data store |
JP4813924B2 (ja) | 2006-02-28 | 2011-11-09 | 株式会社日立製作所 | データベース管理システム、ストレージ装置、ディザスタリカバリシステム及びデータベースのバックアップ方法 |
US7877373B2 (en) | 2006-06-30 | 2011-01-25 | Oracle International Corporation | Executing alternative plans for a SQL statement |
US7961959B2 (en) | 2006-08-24 | 2011-06-14 | Dell Products L.P. | Methods and apparatus for reducing storage size |
CN101523732A (zh) | 2006-09-01 | 2009-09-02 | 帕克比特软件股份有限公司 | 用于通过数据网络传输数据文件的方法和系统 |
US8266147B2 (en) | 2006-09-18 | 2012-09-11 | Infobright, Inc. | Methods and systems for database organization |
WO2008034213A1 (en) | 2006-09-18 | 2008-03-27 | Infobright Inc. | A method and system for data compression in a relational database |
US7552130B2 (en) | 2006-10-17 | 2009-06-23 | International Business Machines Corporation | Optimal data storage and access for clustered data in a relational database |
US7634512B2 (en) | 2006-10-20 | 2009-12-15 | Oracle International Corporation | Migrating temporary data of a session |
US8386444B2 (en) | 2006-12-29 | 2013-02-26 | Teradata Us, Inc. | Techniques for selective compression of database information |
US8032499B2 (en) | 2007-05-21 | 2011-10-04 | Sap Ag | Compression of tables based on occurrence of values |
US7769729B2 (en) | 2007-05-21 | 2010-08-03 | Sap Ag | Block compression of tables with repeated values |
CN100547566C (zh) * | 2007-06-28 | 2009-10-07 | 忆正存储技术(深圳)有限公司 | 基于多通道闪存设备逻辑条带的控制方法 |
US20090006399A1 (en) | 2007-06-29 | 2009-01-01 | International Business Machines Corporation | Compression method for relational tables based on combined column and row coding |
US8392382B2 (en) | 2007-10-19 | 2013-03-05 | Oracle International Corporation | On-line transaction processing (OLTP) compression and re-compression of database data |
US20090287737A1 (en) | 2007-10-31 | 2009-11-19 | Wayne Hammerly | Architecture for enabling rapid database and application development |
US8688621B2 (en) | 2008-05-20 | 2014-04-01 | NetCee Systems, Inc. | Systems and methods for information compression |
US8108361B2 (en) | 2008-07-31 | 2012-01-31 | Microsoft Corporation | Efficient column based data encoding for large-scale data storage |
US8099440B2 (en) | 2008-08-15 | 2012-01-17 | International Business Machines Corporation | Method for laying out fields in a database in a hybrid of row-wise and column-wise ordering |
US9507811B2 (en) | 2008-12-22 | 2016-11-29 | Oracle International Corporation | Compressed data page with uncompressed data fields |
CN101504623B (zh) * | 2009-03-20 | 2010-10-13 | 杭州华三通信技术有限公司 | 独立磁盘冗余阵列构建方法及装置 |
US8356060B2 (en) | 2009-04-30 | 2013-01-15 | Oracle International Corporation | Compression analyzer |
US8645337B2 (en) | 2009-04-30 | 2014-02-04 | Oracle International Corporation | Storing compression units in relational tables |
US9667269B2 (en) | 2009-04-30 | 2017-05-30 | Oracle International Corporation | Technique for compressing XML indexes |
US8935223B2 (en) | 2009-04-30 | 2015-01-13 | Oracle International Corporation | Structure of hierarchical compressed data structure for tabular data |
US8583692B2 (en) | 2009-04-30 | 2013-11-12 | Oracle International Corporation | DDL and DML support for hybrid columnar compressed tables |
US8296517B2 (en) | 2009-08-19 | 2012-10-23 | Oracle International Corporation | Database operation-aware striping technique |
US8832142B2 (en) | 2010-08-30 | 2014-09-09 | Oracle International Corporation | Query and exadata support for hybrid columnar compressed data |
-
2010
- 2010-08-18 US US12/859,184 patent/US8296517B2/en active Active
- 2010-08-19 EP EP10810593.3A patent/EP2384473B1/en active Active
- 2010-08-19 CN CN201080005858.7A patent/CN102301349B/zh active Active
- 2010-08-19 WO PCT/US2010/046002 patent/WO2011022543A2/en active Application Filing
- 2010-08-19 JP JP2012525684A patent/JP5698238B2/ja active Active
-
2012
- 2012-10-01 US US13/633,091 patent/US8627006B2/en active Active
-
2013
- 2013-12-09 US US14/101,306 patent/US8838894B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2013502658A (ja) | 2013-01-24 |
CN102301349A (zh) | 2011-12-28 |
EP2384473B1 (en) | 2016-07-13 |
US8296517B2 (en) | 2012-10-23 |
US8627006B2 (en) | 2014-01-07 |
US20130024612A1 (en) | 2013-01-24 |
US8838894B2 (en) | 2014-09-16 |
US20110047330A1 (en) | 2011-02-24 |
EP2384473A2 (en) | 2011-11-09 |
JP5698238B2 (ja) | 2015-04-08 |
US20140164696A1 (en) | 2014-06-12 |
WO2011022543A2 (en) | 2011-02-24 |
WO2011022543A3 (en) | 2011-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102301349B (zh) | 访问存储控制器控制的存储芯片中根据列条带化的行数据 | |
US8762627B2 (en) | Memory logical defragmentation during garbage collection | |
CN101907978B (zh) | 基于固态硬盘和磁性硬盘的混合存储系统及存储方法 | |
RU2463648C2 (ru) | Выборочное использование множества различающихся ячеек твердотельного запоминающего устройства | |
US7937522B2 (en) | Method for flash memory data management | |
CN103092782A (zh) | 用于闪存器件的闪存控制器硬件架构 | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
CN103608782A (zh) | Lsb页面和msb页面中的选择性数据存储 | |
CN102426586B (zh) | 一种嵌入式系统中的fat文件存储方法 | |
CN102915340A (zh) | 一种扩展的基于b+树对象文件系统 | |
CN101876956B (zh) | Sd卡的文件存取方法及装置 | |
CN102169460A (zh) | 变长数据管理方法及装置 | |
CN108052541A (zh) | 基于多级页表目录结构的文件系统的实现、访问方法、终端 | |
CN100410945C (zh) | 一种实现论坛的方法及系统 | |
CN102541755A (zh) | 闪存存储器及其接收数据的方法 | |
CN201397674Y (zh) | 一种存储设备 | |
CN206178765U (zh) | Ssd单元及ssd设备 | |
US10331385B2 (en) | Cooperative write-back cache flushing for storage devices | |
CN101373473B (zh) | 减少嵌入式系统闪存中文件数量的方法及系统 | |
CN110968577B (zh) | 一种写入、读取资源的方法和系统以及时序存储系统 | |
CN107193947A (zh) | 一种文件系统缓存增量刷新方法及系统 | |
CN101859232A (zh) | 一种可变长度数据存储接口 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
CN116149540A (zh) | 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置 | |
CN201765841U (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 |