CN100449545C - 访问扇区数据的方法和*** - Google Patents
访问扇区数据的方法和*** Download PDFInfo
- Publication number
- CN100449545C CN100449545C CNB2006101058503A CN200610105850A CN100449545C CN 100449545 C CN100449545 C CN 100449545C CN B2006101058503 A CNB2006101058503 A CN B2006101058503A CN 200610105850 A CN200610105850 A CN 200610105850A CN 100449545 C CN100449545 C CN 100449545C
- Authority
- CN
- China
- Prior art keywords
- sector
- record
- index
- data
- logic
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000003860 storage Methods 0.000 claims abstract description 126
- 238000013523 data management Methods 0.000 claims abstract description 49
- 230000004044 response Effects 0.000 claims abstract description 7
- 238000013500 data storage Methods 0.000 claims description 67
- 239000013598 vector Substances 0.000 claims description 52
- 239000003550 marker Substances 0.000 claims description 34
- 238000007726 management method Methods 0.000 claims description 20
- 238000013507 mapping Methods 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims description 4
- 230000009977 dual effect Effects 0.000 claims 2
- 230000006870 function Effects 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 29
- 238000012545 processing Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000009825 accumulation Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
- G11B27/19—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
- G11B27/28—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
- G11B27/32—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
- G11B27/327—Table of contents
- G11B27/329—Table of contents on a disc [VTOC]
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供访问扇区数据的技术。接收嵌入式存储子例程。响应收到嵌入式存储子例程,产生一个或多个数据管理子例程。调用所述一个或多个数据管理子例程,以从扇区表取回扇区数据。
Description
技术领域
本发明的实施例涉及利用数据存储***实现存储管理功能。
背景技术
存储子***可被描述成包括一个或多个主计算机和一个或多个存储服务器。存储服务器提供对存储器,比如磁盘的主计算机访问。磁盘可被分成磁道,磁道被分成扇区。
现代存储子***用户需要高级功能,比如即时恢复,连续双向复制,加密等。较早的存储子***支持数据压缩(用户喜欢的一种特征,但是在一些最新的存储子***中不被支持)。另外,越来越多地在通用计算机之上建立存储子***,从而还需要硬件和软件故障的可缩放性、可靠性和可恢复性。开发新的特征并把新特征集成到存储子***中需要大量的时间。
存储控制器是存储子***的一部分,包括一个存储虚拟化引擎,存储虚拟化引擎从多个物理磁盘获得扇区,并使它们可供主计算机的一个或多个主处理器用作多个“虚拟”磁盘的扇区,所述“虚拟”磁盘类似于多处理主计算机的逻辑存储器。存储虚拟化引擎保持和管理扇区从物理磁盘到逻辑磁盘的映射。对逻辑磁盘扇区进行输入/输出(I/O)命令,并将其发送给存储引擎化引擎。存储虚拟化引擎把I/O命令重定向到物理磁盘上的适当扇区。在一些实现中,由存储虚拟化引擎管理的硬件高速缓存是物理磁盘的前端,可从高速缓存服务I/O命令。在IBM公司的Application Development Guide:Programming ClientApplications.IBM Redbooks,2002中描述了存储虚拟化引擎,该文献在此整体引为参考。
关系数据库管理***(RDBMS)使用关系技术保存和检索关系数据库中的数据。关系数据库是计算机化的信息存储和检索***,该***被组织成由记录和数据栏组成的表格。记录可被称为元组或记录。数据库一般具有许多表格,每个表格一般具有多个记录和多栏。客户计算机一般向包括RDBMS的服务器发出请求。RDBMS向客户计算机提供对存储器(例如关系数据库)的访问。
RDBMS软件可使用结构化查询语言(SQL)接口。SQL接口已发展成RDBMS软件用标准语言,并且已被美国国家标准协会(ANSI)和国际标准组织(ISO)采用为RDBMS软件用标准语言。
在一些***中,关系数据库引擎由下述软件组件组成:(i)网络通信管理器组件,(ii)查询管理组件,(iii)记录管理组件,和(iv)页面缓冲器管理组件。
在常规***中,性能开销的来源存在于客户计算机-服务器处理中,客户计算机-服务器处理由网络通信管理器组件和查询管理组件处理。特别地,客户计算机和服务器可存在于许多操作***和/或处理器平台上。在不同的平台上,基本数据类型(例如整数)的表征可不同。RDBMS能够同时服务来自在各种平台上运行的客户计算机的请求。从而,网络通信管理组件具有丰富的一组转换能力,从而掩蔽平台之间的变化对客户计算机或服务器进行的数据库操作的结果的影响。
查询(例如以SQL语句的形式)由查询管理组件处理。在被发送给RDBMS之前,查询可被解析和记号化(tokenize)。记号被取回并被变换成用于驱动查询处理的数据结构元件。当SQL查询到达RDBMS服务器时,SQL查询被分析,确定执行SQL查询的最佳方式。随后,构成驱动RDBMS记录管理组件所需的运行时间结构。利用这些初始化的数据结构驱动记录管理组件。查询分析、查询优化和运行时间数据结构的建立消耗CPU开销。
2004年10月5日提交的美国专利申请No.10/958954,“Apparatus,System,and Method for Supporting Storage FunctionsUsing an Embedded Database Management System”(代理人档案号TUC920040046US1)(下面称为′954申请)在此整体引为参考。′954申请描述一种表模块,第一字段包含存储标识符,第二字段具有数据内容。该表模块被配置成模仿虚拟存储装置,并保持多条记录。
存在于逻辑磁盘(即由逻辑单元号(LUN)识别),以及存在于物理磁盘上的数据可被表示成扇区向量。扇区向量可被描述成一组连续的扇区。扇区向量可被保存在表格中。另外,压缩和加密把定长扇区变成可变大小的压缩或加密扇区。当扇区被保存在表的记录中时,压缩和加密导致保存在表中的变长记录。解决变长记录的问题的两种技术包括日志结构数组方法和基于DBMS的方法。日志结构数组方法把每个更新的或者新创建的扇区附到扇区向量的尾部,同时收回空洞留下的空间(M.Rosenblum和J.K.Ousterhout,“The Design andImplementation of a Log-Structured File System”,ACM Transactionon Computer Systems,V10,No.1,第26-52页,1992,该文献在此整体引为参考)。基于DBMS的方法为一组变长扇区引入一些额外的空间,以适应扇区大小的变化。和日志结构化数组相比,这更好地保持了记录的顺序性。对于已知具有高度顺序的I/O参考模式的商业和科学研究来说,该特征是重要的(国际商用机器公司,MVS/DFP V3R3System Programming Reference IBM Redbooks,1996;M.Poess和D.Potapov,Data Compression in Oracle,In International Conferenceon Very Large Data Bases,第937-947页,2003年;该文献在此整体引为参考),通过保持顺序性,更好地维持这些应用的预期。
由于压缩的扇区具有可变长度,并且扇区的位置可随着时间而变化,因此可利用间接性定位压缩的扇区。于是,利用页内间接寻址(即,数据页中的正向地址用作访问技术),基于扇区号(即,对应于逻辑存储器中的扇区的逻辑扇区号)建立索引。正向地址允许记录在页中来回移动,而不改变索引。于是,SQL操作的执行挑选通过所述索引的访问路径来访问数据。通过以B树的形式构成索引,导航B树的CPU开销可能较大。当I/O大小不大时会发生这种情况,于是和通过叶页链接的索引页访问相比,B树遍历成本高得多;或者当虚拟扇区向量的大小变化(称为LUN重定大小)时会发生这种情况。LUN大小的变化可能相当大。LUN大小的变化可能导致表记录的大量***和删除。从而,在LUN重定大小期间会观察到大量的B树非叶节点拆分和合并。出于上面的顾虑,减小索引操作成本变得重要。
从而,本领域中需要在数据储存***,比如RDBMS中实现存储管理功能。
发明内容
提供一种访问扇区数据的方法,制造产品和***。接收嵌入式存储子例程(function)。响应收到嵌入式存储子例程,产生一个或多个数据管理子例程。所述一个或多个数据管理子例程被调用,以从扇区表取回扇区数据。
附图说明
现在参见附图,其中相同的附图标记表示对应的部分:
图1图解说明其中可实现一些实施例的计算机体系结构的细节。
图2根据一些实施例,图解说明嵌入式数据管理器的更多细节。
图3根据一些实施例,图解说明把存储命令组件***嵌入式数据存储管理器的逻辑。
图4根据一些实施例,图解说明iSCSI实现。
图5根据一些实施例,图解说明扇区表。
图6根据一些实施例,图解说明把逻辑扇区映射成物理扇区的逻辑。
图7根据一些实施例,图解说明访问具有定长记录的扇区表的逻辑。
图8根据一些实施例,图解说明扇区表的范围群集索引。
图9根据一些实施例,图解说明利用索引访问具有定长记录的扇区表的逻辑。
图10图解说明根据一些实施例可使用的计算机***的体系结构。
具体实施方式
在下面的说明中,参考了附图,附图构成所述说明的一部分,并且图解说明几个实施例。显然可以利用其它实施例,并且在不脱离本发明的实施例的范围的情况下,可做出结构和操作变化。
图1图解说明其中可实现一些实施例的计算机体系结构的细节。存储子***100a包括存储客户机110a和存储服务器120a。存储客户机110a与存储服务器120a耦接。存储客户机110a包括***存储器114a,它可用易失性和/或非易失性装置实现。一个或多个客户机应用(client application)116a(即计算机程序)被保存在***存储器114a中,以便由处理器(例如中央处理器(CPU))(未示出)执行。存储客户机110a还包括一个或多个设备驱动程序(driver)118a。
存储服务器120a包括***存储器124a,它可用易失性和/或非易失性装置实现。一个或多个服务器应用128a(即计算机程序)被保存在***存储器124a中,以便由处理器(例如中央处理器(CPU))(未示出)执行。
存储服务器120a与嵌入式数据存储服务器130a耦接。嵌入式数据存储服务器130a包括***存储器134a,它可用易失性和/或非易失性装置实现。嵌入式数据存储管理器138a(即计算机程序)被保存在***存储器134a中,以便由处理器(例如中央处理器(CPU))(未示出)执行。
数据存储管理器130a与本地物理I/O子***140a耦接。本地物理I/O子***140a可被描述成存储器。
存储子***100b包括存储客户机110b和存储服务器120b。存储客户机110b与存储服务器120b耦接。存储客户机110b包括***存储器114b,它可用易失性和/或非易失性装置实现。一个或多个客户机应用116b(即计算机程序)被保存在***存储器114b中,以便由处理器(例如中央处理器(CPU))(未示出)执行。存储客户机110b还包括一个或多个设备驱动程序118b。
设备驱动程序118a、118b代表存储客户机110a、110b发出逻辑I/O命令。
存储服务器120b包括***存储器124b,它可用易失性和/或非易失性装置实现。一个或多个服务器应用128b(即计算机程序)被保存在***存储器124b中,以便由处理器(例如中央处理器(CPU))(未示出)执行。
存储服务器120b与嵌入式数据存储服务器130b耦接。嵌入式数据存储服务器130b包括***存储器134b,它可用易失性和/或非易失性装置实现。嵌入式数据存储管理器138b(即计算机程序)被保存在***存储器134b中,以便由处理器(例如中央处理器(CPU))(未示出)执行。
数据存储管理器130b与远程物理I/O子***140b耦接。远程物理I/O子***140b可被描述成存储器。
网络190连接嵌入式数据存储服务器130a和嵌入式数据存储服务器130b。网络190可包括任何类型的网络,例如存储区域网(SAN),局域网(LAN),广域网(WAN),因特网,企业内部网等。
在备选实施例中,计算机程序可被实现成硬件、软件,或者硬件和软件的组合。
存储客户机110a、110b,存储服务器120a、120b和嵌入式数据存储服务器130a、130b可包括本领域中已知的任何计算装置,例如服务器、大型机、工作站、个人计算机、手持式计算机、膝上型电话装置,网络设备等。
存储服务器120a、120b也可被称为存储控制器。
本地物理I/O子***140a和远程物理I/O子***140b均包括一系列的存储装置,比如直接存取存储装置(DASD),简单磁盘捆绑(JBOD),独立磁盘冗余阵列(RAID),虚拟化装置等。注意术语“本地”和“远程”指的是子***的相对位置。例如,远程物理I/O子***140b远离本地物理I/O子***140a,但是可能并不远离嵌入式数据存储服务器130b。
在一些实施例中,嵌入式数据存储管理器138a、138b是RDBMS。
在一些实施例中,存储客户机(例如110a)向对应的存储服务器(例如120a)发出逻辑I/O命令。存储服务器调用嵌入式数据存储管理器(例如130a)来处理逻辑I/O命令。嵌入式数据存储管理器把逻辑I/O命令转换成物理I/O命令。如果I/O命令目标在于本地存储器,那么嵌入式数据存储管理器把物理I/O命令路由给本地物理I/O子***(例如140a)以便处理该物理I/O命令。如果I/O命令目标在于远程存储器,那么嵌入式数据存储管理器把物理I/O命令路由给远程嵌入式数据存储管理器(例如130b),该远程嵌入式数据存储管理器把I/O命令路由给远程物理I/O子***(例如140b)以便处理该物理I/O命令。
虽然存储子***100a、100b被表示成均包括一个存储客户机和存储服务器,不过每个存储子***100a、100b可包括一个或多个客户计算机和一个或多个存储服务器。
图2根据一些实施例,图解说明嵌入式数据存储管理器200的更多细节。嵌入式数据存储管理器138a、138b可实现嵌入式数据存储管理器200的体系结构。嵌入式数据存储管理器200包括网络通信管理器组件210,查询管理组件220,存储命令组件230,数据管理组件240和缓冲器管理组件250。存储命令组件230接收嵌入式存储子例程,产生一个或多个数据管理子例程,并把所述一个或多个数据管理子例程转发给数据管理组件240。数据管理组件240产生一个或多个物理I/O命令,并把物理I/O命令转发给缓冲器管理组件250。缓冲器管理组件250直接与物理存储器交换作用,并执行所述一个或多个物理I/O命令。
实际上,数据管理组件240和缓冲器管理组件250把文件存储虚拟为表格记录的存储。当在“原始的”存储器(即,不包含文件***数据的存储器)上定义表格时,嵌入式数据存储管理器200类似于存储子***中的存储虚拟化引擎动作。
把存储命令组件嵌入数据存储管理器
嵌入式数据存储管理器200实现所需的存储管理特征。嵌入式数据存储管理器200可被认为“被嵌入”在存储子***接口之后。特别地,实施例把存储命令组件230***嵌入式数据存储管理器138a、138b之内。从而,发送给存储服务器120a、120b的存储客户机110a、110b逻辑I/O命令由存储服务器120a、120b映射成由存储命令组件230、数据管理组件240和缓冲器管理组件250处理的嵌入式存储子例程调用,从而开发和导出一些数据存储管理器子例程和特征,作为存储子***子例程和特征。嵌入式存储子例程由本发明的实施例提供。
图3根据一些实施例,图解说明把存储命令组件230***嵌入式数据存储管理器138a、138b的逻辑。I/O命令读取或写入一个或一组顺序寻址的扇区。一个扇区由二进制未解释数据(即未被文件***或应用解释的二进制格式的数据)组成。不同于其它数据类型(例如整数),对于这种二进制数据不需要任何转换。在所有存储客户机处理器上,二进制数据被同样地解释。
在图3中,控制始于方框300,数据管理组件240把嵌入式存储子例程导出(export)给存储服务器120a、120b。当存储客户机110a、110b产生的逻辑I/O命令到达存储服务器120a、120b时,存储服务器120a、120b把逻辑I/O命令映射成嵌入式存储子例程,并把嵌入式存储子例程调用发给嵌入式数据存储管理器138a、138b内的存储命令组件230。
继续图3,在方框302中,存储命令组件230从存储服务器120a、120b接收嵌入式存储子例程调用。存储命令组件230知道如何应答这样的调用。对于读取I/O子例程调用,存储命令组件230从数据存储(例如数据库)抽取所需的记录。对于写入I/O子例程调用,存储命令组件230获得子例程调用中的数据,并更新数据存储(例如数据库)中的相关记录。由于嵌入式存储子例程调用目标在于存储命令组件230,因此实施例避免调用网络通信管理器组件210和查询管理组件220,这降低了开销。这样,通过使用嵌入式数据存储管理器138a、138b支持存储虚拟化,降低了开销。
在方框303,存储命令组件230把嵌入式存储子例程调用转换成一个或多个数据管理子例程。例如,对I/O读取命令的嵌入式存储子例程调用被转换成一个或多个访问正确的记录,并从记录把扇区返回给调用者的数据管理子例程。作为另一例子,对I/O写入命令的嵌入式存储子例程调用被转换成用来自发出I/O写入命令的调用者的输入数据更新对应记录的一个或多个数据管理子例程。
在方框304,所述一个或多个数据管理子例程从存储命令组件230被转发给数据管理组件240。在方框306,数据管理组件240产生一个或多个物理I/O命令。在方框308,数据管理组件240把所述一个或多个物理I/O命令转发给缓冲器管理组件250。在方框310,缓冲器管理组件250把响应(例如,物理读取I/O命令的数据或物理写入I/O命令的状态)转发给数据管理组件240。在方框312,数据管理组件240把响应转发给存储命令组件230。在方框314,存储命令组件把响应返回给存储服务器120a、120b。
从而,I/O命令被转换成一个或多个嵌入式数据存储管理器138a、138b内部子例程调用,并从逻辑存储子***传送给嵌入式数据存储管理器138a、138b。嵌入式数据存储管理器138a、138b还访问物理存储器,处理数据,并答复存储服务器120a、120b(即I/O发起者)。来自存储客户机110a、110b的设备驱动程序的I/O命令由一组特殊的命令(例如在一些实施例中,它们是SCSI命令)发起。在一些实施例中,遵循在小型计算机***接口(SCSI)标准中描述的I/O命令格式,SCSII/O命令被映射成一组嵌入式存储子例程调用。只是为了促进理解,这里将描述读取和写入子例程调用,不过实施例适用于其它子例程调用。
在一些实施例中,存储命令组件230实现因特网小型计算机***接口(iSCSI)协议。这是利用嵌入式数据存储服务器130a、130b来提供存储功能的思想的一个实例。在一些实施例中,嵌入式数据服务器130a、130b与iSCSI目标耦接,所述iSCSI目标充当存储服务器120a、120b。
图4根据一些实施例,图解说明iSCSI实现。如图4中所示,iSCSI目标被紧密结合到嵌入式数据存储服务器中,iSCSI目标和嵌入式数据存储服务器被图解表示成具有iSCSI目标410的嵌入式数据存储服务器。iSCSI目标被描述成存储服务器。iSCSI发起者400可被描述成与具有iSCSI目标410的嵌入式数据存储服务器耦接的存储客户机。具有iSCSI目标410的嵌入式数据存储服务器包括两个代理:iSCSI和数据存储服务器***(listener)过程代理420,和iSCSI和数据存储服务器工作器(worker)过程代理430。
在方框450中,当第一数据存储服务器代理(例如420)被激活时,iSCSI目标被初始化,数据存储服务器***过程在一个端口上等待将要到来的会话请求。iSCSI发起者400向***过程420的iSCSI部分发送会话请求。当收到新的会话请求时,从工作器过程的池中分派工作器过程(方框452),会话句柄(即套接字描述符)通过特殊的套接字消息被引向新的数据存储服务器代理(方框454)。在收到会话的套接字描述符之后,嵌入数据存储服务器代理的iSCSI工作器负责iSCSI发起者和工作器过程的iSCSI部分之间的通信(方框456),而数据存储服务器代理的工作器过程的数据存储服务器部分从在图5中描述的扇区表中取回数据/对所述扇区表更新数据(方框458)。下面的伪代码提供iSCSI协议实现的一个例子:
1)初始化iSCSI目标***过程
Initialize_memory();
Dispatch_DB_process(...,“iscsi_target_listener”...);//调用具有iSCSI目标***的新的数据存储服务器进程
Destruct_memory();//在新的数据存储服务器过程中,启动新的iSCSI目标***,在等待连接的端口上监听。
2)分派iSCSI/数据存储服务器工作器过程
iscsi_sock_accept(...)
Initialize_memory();
Dispatch_DB_process(...,“iscsi_target_worker”,...)//调用具有iSCSI目标工作器的新的数据存储服务器进程
Destruct_memory();
在数据存储服务器工作器过程中,iSCSI目标工作器接管套接字句柄,并处理来自iSCSI发起者的I/O。
套接字描述符从***过程420的iSCSI部分被传送给工作器过程(来自工作器过程430的池)的iSCSI部分。***过程420的iSCSI部分利用send_connection调用,发送套接字描述符,工作器过程的iSCSI部分利用receive_fd调用,等待套接字描述符。send_connection子例程把会话套接字句柄作为输入,构成包含套接字id的特殊消息,并把该消息传送给在***过程420的iSCSI部分和工作器过程的iSCSI部分之间的套接字。receive_fd子例程在***过程420的iSCSI部分和工作器过程的iSCSI部分之间的套接字上等待,直到该例程收到消息为止。receive_fd子例程打开(unwrap)该消息,并返回会话套接字句柄。下面的伪代码提供一个例证实现:
static int send_connection(int fd)
{
struct msghdr msg;
char ccmsg[CMSG_SPACE(sizeof(fd))];
struct cmsghdr*cmsg;
struct iovec vec;
char*str=″x″;
int rv;
msg.msg_name=(struct sockaddr*)&unix_socket_name;
msg.msg_namelen=sizeof(unix_socket_name);
vec.iov_base=str;
vec.iov_len=1;
msg.msg_iov=&vec;
msg.msg_iovlen=1;
msg.msg_control=ccmsg;
msg.msg_controllen=sizeof(ccmsg);
cmsg=CMSG_FIRSTHDR(&msg);
cmsg->cmsg_level=SOL_SOCKET;
cmsg->cmsg_type=SCM_RIGHTS;
cmsg->cmsg_len=CMSG_LEN(sizeof(fd));
*(int*)CMSG_DATA(cmsg)=fd;
msg.msg_controllen=cmsg->cmsg_len;
msg.msg_flags=0;
rv=(sendmsg(unix_socket_fd,&msg,0)!=-1);
if(rv){
if(close(fd)!=0){
}
}
return rv;
}
static int receive_fd(int fd)
{
struct msghdr msg;
struct iovec iov;
char buf[1];
int rv;
int connfd=-1;
char ccmsg[CMSG_SPACE(sizeof(connfd))];
struct cmsghdr*cmsg;
iov.iov_base=buf;
iov.iov_len=1;
msg.msg_name=0;
msg.msg_namelen=0;
msg.msg_iov=&iov;
msg.msg_iovlen=1;
msg.msg_control=ccmsg;
msg.msg_controllen=sizeof(ccmsg);
rv=recvmsg(fd,&msg,0);
cmsg=CMSG_FIRSTHDR(&msg);
if(!cmsg->cmsg_type=SCM_RIGHTS){
fprintf(stderr,″got control message of unknown type%d\n″,
cmsg->cmsg_type);
return-1;
}
return*(int*)CMSG_DATA(cmsg);
}
利用到数据管理组件的接口访问数据
由于I/O命令实质上读取或写入一个或一组顺序寻址的扇区,因此通过回避网络通信管理器组件210和查询管理组件220,并使存储命令组件230代码直接对数据管理组件240发出调用,消除了一些开销。在一些实施例中,遵循在小型计算机***接口(SCSI)标准中描述的I/O命令格式,SCSI命令被映射成一个或多个嵌入式存储子例程调用。只是为了促进理解,这里将描述读取和写入子例程调用,但是实施例适用于其它子例程调用。
逻辑I/O命令由5个参数(T,i,s,n,C)描述。T描述访问类型是读取还是写入。第二个参数i是逻辑扇区向量号,逻辑扇区向量是一组连续的逻辑扇区。第三个参数s识别逻辑扇区向量i中将被访问的起始扇区。第四个参数n指示将被访问的连续扇区的数目。对于写入I/O命令,参数C包含将针对写访问被更新的扇区的内容。对于读取I/O命令,参数C是包含正被读取的扇区的返回参数。由于SCSI命令集包括一个SCSI读取命令和一个SCSI写入命令,因此访问类型参数不和这些SCSI命令一起使用。
SCSI读取命令由四个参数组成:byteoffset(起始字节);numofbytes(要取回的字节的总数);databuff(保存从磁盘读取的数据的缓冲器);和扇区表标识符。首先,byteoffset和numofbytes被用于计算扇区表中将被访问的第一条记录和最后一条记录。扇区表标识符被转换成表名称。在表可被访问之前,ScanOpen子例程被调用,以打开用于索引扫描的指针,接下来是一系列的RowFetch子例程调用。RowFetch子例程每次把一条记录取到数据缓冲器中。在到达最后一行之后,关闭表指针。
下面是把SCSI读取命令转换成数据管理子例程的伪代码:
Read(int byteoffset,int numofbytes,char*databuff,char*LUN)
{
int mystartkey=byteoffset/size_of_l_row;
int myendkey=(byteoffset+numofbytes-l)/size_of_l_row;
......
IndexStartkey=&mystartkey;
IndexEndkey=&myendkey;
......
//prepare to access table
TableOpen(......,
IndexInfo,//first scan information with index range information
Tablelnfo,//second scan information with table information
......);
for(int i=mystartkey;i<=myendkey;i++){
......
RowFetch(......,databuff,......);//retrieve one record into databuff
databuff+=size_of_l_row;
......
}
TableClose(......);//done with the table access and close cursor
}
当收到嵌入式存储子例程时,存储命令组件230调用读取命令,数据管理组件240执行读取子例程。
SCSI写入命令和数据管理组件调用之间的转换类似于参考SCSI读取命令讨论的转换,除了SCSI写入命令更新记录,和所述更新被提交之外。在表格可被访问之前,ScanOpen子例程被调用,以打开用于索引扫描的指针,接下来是一系列的RowFetch和RowUpdate子例程调用。RowFetch子例程每次把一条记录取到写入缓冲器中。新数据从数据缓冲器复制到写入缓冲器中。RowUpdate子例程被调用,以便用写入缓冲器中的新的记录数据更新记录。在到达最后一行之后,通过调用TableClose子例程,关闭表指针。最后更新被提交。下面是把SCSI写入命令转换成数据管理子例程调用的伪代码。
Write(int byteoffset,int numotbytes,char*databuff,char*tablename)
{
int mystartkey=byteoffset/size_of_l_row;
int myendkey=(byteoffset+numofbytes-l)/size_of_l_row;
......
IndexStartkey=&mystartkey;
IndexEndkey=&myendkey;
......
//prepare to access table
TableOpen(......,
IndexInfo,//first scan information with index range information
TableInfo,//second scan information withtable information
......);
for(int i=mystartkey;i<=myendkey;i++){
RowFetch(......,writebuff,......);//retrieve one record into writebuff
Copy(writebuff,databuff,size_of_l_row);//copy new data into write buffer
databuff+=size_of_l_row;
RowUpdate(......,writebuff,......);//update the record with new data
}
TableClose(......);//done with the table access and close cursor
Commit();//commit each update
}
当收到嵌入式存储子例程时,存储命令组件230调用读取命令,数据管理组件240执行读取子例程。
扇区累积
数据管理组件240招致每条记录的计算开销。特别地,读取和写入I/O的读取和写入子例程调用的数目正比于访问的记录的数目。如果I/O命令处理的记录的数目被减小,那么计算成本被降低。为了实现这点,实施例提供一种新的扇区表方案,其中多个连续的逻辑扇区被一起保存在单一记录内。这可被称为扇区累积。图5根据一些实施例图解说明扇区表500。该扇区表可位于物理I/O子***140a、140b中。扇区表500包括两栏,扇区标识符栏510和扇区数据栏512。扇区表的一条记录包含由多个连续逻辑扇区组成的扇区数据和第一个扇区的扇区标识符。利用扇区表500可实现空间效率,因为对多个扇区只保存一个扇区标识符。扇区表500被配置成模仿虚拟存储装置,并且保持多条记录。
在存储虚拟化***中,利用逻辑扇区的地址指定逻辑I/O命令。虚拟化引擎的任务是把这些逻辑扇区地址转换成实际的物理扇区地址。特别地,逻辑扇区常常被建模成三元组<LUN id,bnum,数据>,其中LUN id是逻辑磁盘ID 1,bnum表示逻辑磁盘中的扇区数目,数据是bnum涉及的扇区数据。
在一些实施例中,物理扇区向量由出自相同物理装置的一组512字节的连续物理扇区组成。整个物理存储器(它可由几个物理装置组成)可被建模成r个物理扇区向量。实施例利用嵌入式数据存储管理器对象定义r个物理扇区向量,n个逻辑扇区向量和它们的映射。
图6根据一些实施例,图解说明由数据管理组件240执行的把逻辑扇区映射成物理扇区的逻辑。具体地说,逻辑扇区被映射成扇区表中的一条记录,随后,数据管理组件240把扇区表中的该记录映射到表空间中的一个物理扇区。
控制始于方框600,数据管理组件240创建逻辑扇区向量的扇区表,并把逻辑扇区映射成扇区表中的记录。具体地说,对于每个逻辑扇区向量BVi,定义一个表扇区向量TBVi,其表方案为(扇区标识符,扇区数据)。扇区标识符字段是整数,它唯一地识别扇区向量中的第一扇区。扇区数据字段保存扇区的内容。当创建了扇区表时,逻辑扇区被映射到扇区表的记录。
在方框602,数据管理组件240为物理I/O子***存储器中的表空间中的物理扇区向量创建容器。具体地说,每个物理扇区向量PVj由一个容器CPVj表示。容器可存在于文件或原始装置上。部署容器以便允许嵌入式数据存储管理器138a、138b直接管理存储子***。在一些实施例中,容器由页面组成。每个页面包含多条记录,每条记录代表一个物理扇区。
在方框604中,数据管理组件240通过利用容器存在于其中的表空间,把与逻辑扇区向量相关的扇区表中的每条记录映射到一个物理扇区向量,建立逻辑扇区向量和物理扇区向量之间的关系。具体地说,表空间是跟踪逻辑扇区向量和物理扇区向量之间的映射的嵌入式数据存储管理器对象。表空间由一组容器组成,每个表空间专用于一个TBV表。在一些实施例中,表空间可以是磁盘或磁盘分区。
在方框606中,数据管理组件240使用表空间图来跟踪逻辑扇区向量和物理扇区向量之间的映射。即,在通过表空间建立了逻辑扇区向量和物理扇区向量之间的关系之后,利用表空间图保持从逻辑扇区到物理扇区的映射。当逻辑扇区向量改变其驻留(residential)物理扇区向量时,表空间图被更新以反映新的布局。
在块608中,表空间图用于在逻辑扇区向量和物理扇区向量之间进行转换。
借助扇区累积,通过组合<j,bi j>,<j+1,bi j+1>,...,<j+k-1,bij+k-1>,TBVi中的三元组变成<j,bi j bi j+1...bi j+k-1>。同样,TBV表包含两个字段,识别一行中的第一个扇区的扇区标识符,和由k个连续的逻辑扇区组成的扇区数据。实施例确定k的最佳值。
数据存储管理器138a、138b以数据页为单位读取或写入记录,数据页的大小通常是4KB的倍数。数据页由页面报头(page header),页中的记录的指针和数据记录(每行一条数据记录)组成。前两个数据结构构成页元数据。在一些实施例中,假定记录不能跨页,为了使数据页利用率最大化,尽可能多的扇区被置于一页中,并被合并成一行。于是,k的值由等式(1)给出:
k=(页面大小-页元数据大小)/扇区大小 (1)
例如,如果页面大小为8K字节,页元数据为400字节,扇区大小为512字节,那么k等于15。注意由于表中关键字(key)的数目减少,扇区累积还节省索引空间成本和数据页中的记录报头的数量。注意对于对一页中的许多记录的数据访问来说,I/O成本是一页。于是,在一些实施例中(例如在不考虑数据登录(logging)的实施例中,扇区累积并不引入额外的I/O成本。另外,在一些实施例中,由于嵌入式数据存储管理器I/O访问基于页(例如4KB,8KB,16KB或32KB),并且一条记录不能跨页,因此累积的扇区的数目是能够放入一页的数目(即512字节二进制值)。
对扇区数据的访问
可使用不同的技术来保存数据。在一种技术中,数据被保存在表的记录中。对于定长记录,通过使用扇区标识符来查找扇区表中记录的位置,对记录定位。
图7根据一些实施例,图解说明访问具有定长记录的扇区表的逻辑。控制始于方框700,接收对提供扇区标识符的扇区向量的请求。在方框702,通过比较接收的扇区标识符和扇区标识符栏中的值,确定扇区表中的记录的位置。在方框704,所识别的记录的一个或多个逻辑扇区的扇区数据被用于映射到一个或多个物理扇区。在方框706,访问一个或多个物理扇区。所述映射使用参考图6说明的表空间图。
对于变长扇区(即,已被压缩或加密的扇区向量的那些扇区),实施例利用索引。对于扇区表,可在扇区标识符栏建立索引,通过遍历索引来查找所需的扇区,可访问扇区。实施例利用保存在逻辑磁盘表格中的记录的标识性质(即,关键字)来提供特殊的优化。首先,扇区编号字段被赋予一个整数的固定大小。其次,更新并不移动索引记录,因为扇区标识符保持不变。即,当一个扇区被更新时,扇区表的扇区数据字段被修改,扇区标识符字段(它是索引中的关键字)不被修改。根据这两个性质,以这样的方式布置索引记录,以致通过利用等式(2)和(3)可计算它们的地址:
利用等式3和4直接定位每个索引记录。已知索引记录的关键字的值,r(即,这里关键字是扇区表的扇区标识符),那么利用等式(2)和(3)计算索引页的页码(page number),PageNum(r),和索引页中的偏移量Offset(r):
PageNum(r)=r/l+metapage; (2)
Offset(r)=(r mod l)×sizeof(record)+header;(3)
在等式(2)和(3)中,l是索引页中的索引记录的数目,metapage代表用于保存索引的元数据的页的数目,header是由索引页的报头消耗的空间。
从而,通过利用扇区表的扇区标识符作为关键字,创建索引。随后,通过把关键字除以索引页中的索引记录的数目,产生第一结果,并把用于保存索引的元数据的页的数目和第一结果相加,确定特定关键字的索引的页码。随后,通过把关键字以索引页中的索引记录的数目为模,产生第二结果,把第二结果乘以记录的大小,从而产生第三结果,把索引页的报头消耗的空间和第三结果相加,确定关键字的偏移量。一旦索引记录被识别,那么索引记录中的信息就被用于访问扇区表。
图8根据本发明的实施例,图解说明了扇区表810的范围群集索引800。通过构成单级索引布局,消除了B树。分析建立在扇区标识符上的索引中的记录结果,发现叶级的索引记录由两个字段组成:关键字扇区标识符,和指向数据页及与对应记录(例如814)链接的槽(例如812)的行标识符(RID)(例如802)。在叶级上,关键字扇区标识符和RID具有定长的唯一值,并且提出介于关键字的最大值和最小值之间的值。依据等式(2)和(3)可得到索引条目的访问,索引结构只是表格式的。于是,消除了二分搜索,所需的索引页和索引条目被直接访问。该索引结构可被称为范围群集索引(RCI),该访问技术可被称为索引直接访问(IDA)。借助这种方法,索引记录访问变得不太昂贵,因为可避免一般的B树遍历。
图9根据一些实施例,图解说明使用索引访问扇区表的逻辑。控制始于方框900,接收对提供扇区标识符的扇区向量的请求,扇区标识符是扇区表的索引的关键字。在方框902,利用等式PageNum(r)=r/l+metapage和Offset(r)=(r mod l)×sizeof(record)+header识别索引中的索引记录。在方框904,索引记录被用于访问扇区表。在方框906,一个或多个逻辑扇区的扇区数据用于映射到一个或多个物理扇区。在方框908,访问一个或多个物理扇区。所述映射使用参考图6描述的表空间图。
对于范围群集索引,假定索引高度为h。和B树中的O(h)相比,因SQL执行的第一个RID读取操作涉及RCI中的O(l)索引页访问。O(x)可被描述成提供“O”级的复杂性,这里括号中的计算“x”描述复杂性。LUN调整大小操作既包括LUN大小的增大,又包括LUN大小的降低。对这两种情况,B树索引逐一***或删除记录,这是非常昂贵的。虽然在自底向上法中存在建立索引记录的批量装入实用程序,于是和单独***相比,整个过程要廉价得多,不过仍然要构成中间节点。对于RCI,新的索引记录被附到当前的索引结构上,或者从索引结构的尾部除去删除的索引记录。如果表大小的变化为x%,那么LUN调整大小的索引操作成本仅为O(x%×c)。
与某些商业虚拟化软件相比,依据追踪驱动测试的测量,实施例把商业虚拟化软件的CPU路径长度的总量降低了90%。
另外的实施例细节
通过利用标准的编程和/或工程技术来产生软件、固件、硬件或者它们的任意组合,所描述的操作可被实现成一种方法、设备或制造产品。这里使用的术语“制造产品”指的是在介质中实现的代码或逻辑,这里这种介质可包括硬件逻辑(例如集成电路芯片,可编程门阵列(PGA),专用集成电路(ASIC)等)或者计算机可读介质,比如磁性存储介质(例如硬盘驱动器、软盘、磁带等),光学存储器(CD-ROM、光盘等),易失性和非易失性内存(memory)装置(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程逻辑等)。计算机可读介质中的代码由处理器访问和执行。其中代码或逻辑被编码的介质还可包含通过空间或传输介质,比如光纤、铜导线等传播的传输信号。其中代码或逻辑被编码的传输信号还可包含无线信号、卫星传输、无线电波、红外信号、蓝牙等。其中代码或逻辑被编码的传输信号能够由发射站发射并由接收站接收,在传输信号中编码的代码或逻辑可被解码并保存在接收和发射站或设备的硬件或计算机可读介质中。另外,“制造产品”可包括其中包含、处理和执行所述代码的硬件和软件组件的组合。当然,本领域的技术人员会认识到可对这种构造进行许多修改,而不脱离本发明的范围,并且制造产品可包含本领域中已知的任何信息承载介质。
举例来说,术语逻辑可包括软件或硬件和/或软件和硬件的组合。
图3、6、7和9的逻辑描述了按照特定顺序发生的具体操作。在备选实施例中,一些逻辑操作可按照不同的顺序执行,被修改或除去。此外,可向上述逻辑增加步骤,并且仍然符合描述的实施例。此外,这里描述的操作可顺序发生,或者一些操作可并行处理,或者,描述成由单一进程执行的操作可由分布式进程执行。
图3、6、7和9的例证逻辑可用软件、硬件、可编程和不可编程门阵列逻辑实现,或者用硬件、软件或门阵列逻辑的某种组合来实现。
图10图解说明根据一些实施例可使用的计算机***的体系结构1000。存储客户机110a、110b、存储服务器120a、120b和/或嵌入式数据存储服务器130a、130b可实现体系结构1000。计算机体系结构1000可实现处理器1002(例如,微处理器),内存1004(例如,易失性内存装置),和存储器1010(例如,非易失性存储区,例如磁盘驱动器,光盘驱动器,磁带驱动器等)。操作***1005可在内存1004中执行。存储器1010可包含内部存储装置或附加的或网络可访问的存储器。存储器1010中的计算机程序1006可被装入内存1004中并由处理器1002按照本领域中已知的方式执行。该体系结构还包括使得能够与网络通信的网卡1008。输入装置1012被用于把用户输入提供给处理器1002,可包括键盘、鼠标、指示笔、麦克风、触敏显示屏、或者本领域中已知的任何其它激活或输入机构。输出装置1014能够再现来自处理器1002或者其它组件的信息,比如显示监视器、打印机、存储装置等。计算机***的计算机体系结构1000可包括比图解说明少的组件,这里未图解说明的其它组件,或者图解说明的组合和另外组件的一些组合。
计算机体系结构1000可包含本领域中已知的任何计算装置,比如大型机、服务器、个人计算机、工作站、膝上型计算机、手持式计算机、电话设备、网络设备、虚拟化装置、存储控制器等。可以使用本领域中已知的任何处理器1002和操作***1005。
出于举例说明的目的,给出了实施例的上述说明。上述说明并不是详尽的,也不打算把本发明局限于公开的具体形式。鉴于上述教导,许多修改和变化是可能的。本发明的范围不受该详细说明限制,而是由附加的权利要求限定。上述说明,例子和数据提供了本发明的组成物的制造和使用的完整描述。由于在不脱离本发明的精神和范围的情况下,可做出本发明的许多实施例,因此本发明由附加的权利要求或者任何后续提出的权利要求,以及它们的等同物限定。
Claims (18)
1、一种访问扇区数据的方法,包括:
在嵌入式数据存储管理器的存储命令组件的控制下:
接收嵌入式存储子例程;
响应收到嵌入式存储子例程,产生一个或多个数据管理子例程;和
调用一个或多个数据管理子例程,以从扇区表取回扇区数据,在所述扇区表中,多个连续的逻辑扇区被一起存储在单一记录内。
2、按照权利要求1所述的方法,其中扇区表包括保存多个连续的逻辑扇区的扇区数据栏,和保存相关的多个连续逻辑扇区中的第一扇区的扇区标识符的扇区标识符栏。
3、按照权利要求1所述的方法,还包括:
把一个或多个逻辑扇区向量中的每个映射成扇区表中的记录。
4、按照权利要求1所述的方法,其中嵌入式存储子例程识别一个逻辑扇区,其中所述一个或多个数据管理子例程识别对应的物理扇区。
5、按照权利要求1所述的方法,还包括:
创建一个或多个逻辑扇区向量的扇区表;
把每个逻辑扇区向量映射成扇区表中的记录;
为表空间中的一个或多个物理扇区向量创建一个或多个容器;
利用表空间,建立一个或多个逻辑扇区向量和一个或多个物理扇区向量之间的一个或多个关系;和
创建表空间图,以能够实现一个或多个逻辑扇区向量和一个或多个物理扇区向量之间的映射。
6、按照权利要求1所述的方法,其中扇区表包含定长记录,其中嵌入式存储子例程提供扇区标识符,还包括:
使用扇区标识符来定位扇区表中的记录。
7、按照权利要求1所述的方法,其中扇区表包含变长记录,还包括:
在扇区表的扇区标识符上创建索引;
接收对提供扇区标识符的扇区向量的请求,其中扇区标识符是进入索引中的关键字;
通过把关键字除以索引页中的索引记录的数目以产生第一结果并把用于保存索引元数据的页数和第一结果相加,确定在索引中的索引记录的关键字的页码;和
通过把关键字以索引页中的索引记录的数目为模以产生第二结果、把第二结果乘以记录的大小以产生第三结果并把索引页的报头消耗的空间和第三结果相加,确定关键字的偏移量;
使用所述偏移量来定位索引中的记录。
8、按照权利要求1所述的方法,还包括:
导出嵌入式存储子例程。
9、一种访问扇区数据的***,包括嵌入式数据存储管理器,所述嵌入式数据存储管理器包括存储命令组件,用于:
接收嵌入式存储子例程;
响应收到嵌入式存储子例程,产生一个或多个数据管理子例程;和
调用一个或多个数据管理子例程,以从扇区表取回扇区数据,在所述扇区表中,多个连续的逻辑扇区被一起存储在单一记录内。
10、按照权利要求9所述的***,其中扇区表包括保存多个连续的逻辑扇区的扇区数据栏,和保存相关的多个连续逻辑扇区中的第一扇区的扇区标识符的扇区标识符栏。
11、按照权利要求9所述的***,还包括:
数据管理组件,用于把一个或多个逻辑扇区向量中的每个映射成扇区表中的记录。
12、按照权利要求9所述的***,其中嵌入式存储子例程识别逻辑扇区,其中所述一个或多个数据管理子例程识别对应的物理扇区。
13、按照权利要求9所述的***,还包括数据管理组件,用于:
创建一个或多个逻辑扇区向量的扇区表;
把每个逻辑扇区向量映射成扇区表中的记录;
为表空间中的一个或多个物理扇区向量创建一个或多个容器;
利用表空间,建立一个或多个逻辑扇区向量和一个或多个物理扇区向量之间的一个或多个关系;和
创建表空间图,以能够实现一个或多个逻辑扇区向量和一个或多个物理扇区向量之间的映射。
14、按照权利要求9所述的***,其中扇区表包含定长记录,其中嵌入式存储子例程提供扇区标识符,所述***还包括数据管理组件,用于:
使用扇区标识符来定位扇区表中的记录。
15、按照权利要求9所述的***,其中扇区表包含变长记录,所述***还包括数据管理组件,用于:
在扇区表的扇区标识符上创建索引;
接收对提供扇区标识符的扇区向量的请求,其中扇区标识符是进入索引中的关键字;
通过把关键字除以索引页中的索引记录的数目以产生第一结果并把用于保存索引元数据的页数和第一结果相加,确定在索引中的索引记录的关键字的页码;和
通过把关键字以索引页中的索引记录的数目为模以产生第二结果、把第二结果乘以记录的大小以产生第三结果并把索引页的报头消耗的空间和第三结果相加,确定关键字的偏移量;
使用所述偏移量来定位索引中的记录。
16、按照权利要求9所述的***,所述***还包括数据管理组件,用于:
导出嵌入式存储子例程。
17、按照权利要求9所述的***,其中所述嵌入式数据存储管理器还包括数据管理组件和缓冲器管理组件。
18、按照权利要求17所述的***,其中数据管理组件执行数据管理子例程以从由缓冲器管理组件访问的扇区表中取回扇区数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/183,267 US8819088B2 (en) | 2005-07-14 | 2005-07-14 | Implementing storage management functions using a data store system |
US11/183,267 | 2005-07-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1900935A CN1900935A (zh) | 2007-01-24 |
CN100449545C true CN100449545C (zh) | 2009-01-07 |
Family
ID=37656822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101058503A Expired - Fee Related CN100449545C (zh) | 2005-07-14 | 2006-07-13 | 访问扇区数据的方法和*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US8819088B2 (zh) |
CN (1) | CN100449545C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100590614C (zh) * | 2006-08-23 | 2010-02-17 | 联想(北京)有限公司 | 一种虚拟技术下硬盘数据的保护方法和保护*** |
US8930371B1 (en) * | 2008-06-30 | 2015-01-06 | Amazon Technologies, Inc. | Systems and methods for efficiently storing index data on an electronic device |
US9805112B2 (en) * | 2011-11-18 | 2017-10-31 | Evado Holdings Pty Ltd | Method and structure for managing multiple electronic forms and their records using a static database |
US20150032720A1 (en) * | 2013-07-23 | 2015-01-29 | Yahoo! Inc. | Optimizing database queries |
US10574718B2 (en) * | 2016-08-25 | 2020-02-25 | Comcast Cable Communications, Llc | Packaging content for delivery |
JP6897248B2 (ja) * | 2017-04-06 | 2021-06-30 | 富士通株式会社 | 更新反映プログラム、更新反映方法及び更新反映装置 |
CN107105021A (zh) * | 2017-04-06 | 2017-08-29 | 南京三宝弘正视觉科技有限公司 | 一种数据读写方法和装置 |
CN107301351A (zh) * | 2017-06-22 | 2017-10-27 | 北京北信源软件股份有限公司 | 一种扫描与清除网络访问记录的方法与装置 |
US11409727B2 (en) * | 2019-09-18 | 2022-08-09 | International Business Machines Corporation | Concurrent execution of database operations |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4876646A (en) * | 1984-12-24 | 1989-10-24 | Hitachi, Ltd. | Data processor having multilevel address translation tables |
US5673383A (en) * | 1992-01-10 | 1997-09-30 | Kabushiki Kaisha Toshiba | Storage system with a flash memory module |
CN1332877A (zh) * | 1998-11-30 | 2002-01-23 | 联合想象计算机公司 | 关系数据库管理***中用于支持动态运行时间对象定义的方法和装置 |
CN1400533A (zh) * | 2001-08-03 | 2003-03-05 | 群鼎视讯科技股份有限公司 | 嵌入式存储器结构及其存取方法 |
US20030070036A1 (en) * | 2001-09-28 | 2003-04-10 | Gorobets Sergey Anatolievich | Memory system for data storage and retrieval |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4467421A (en) * | 1979-10-18 | 1984-08-21 | Storage Technology Corporation | Virtual storage system and method |
US5860136A (en) * | 1989-06-16 | 1999-01-12 | Fenner; Peter R. | Method and apparatus for use of associated memory with large key spaces |
JP2625609B2 (ja) * | 1991-07-10 | 1997-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ディスク記憶装置 |
US6347051B2 (en) * | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
JP2735784B2 (ja) * | 1993-12-17 | 1998-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 情報記録用ディスク及びディスクドライブシステム |
JPH10500520A (ja) * | 1994-03-03 | 1998-01-13 | シーラス ロジック, インコーポレイテッド | Idフィールドなしの自動トラック処理のための欠陥マネジメント |
US5987478A (en) * | 1995-10-31 | 1999-11-16 | Intel Corporation | Virtual small block file manager for flash memory array |
US5875477A (en) * | 1995-12-22 | 1999-02-23 | Intel Corporation | Method and apparatus for error management in a solid state disk drive using primary and secondary logical sector numbers |
US6389425B1 (en) * | 1998-07-09 | 2002-05-14 | International Business Machines Corporation | Embedded storage mechanism for structured data types |
US6449607B1 (en) * | 1998-09-11 | 2002-09-10 | Hitachi, Ltd. | Disk storage with modifiable data management function |
US6148414A (en) * | 1998-09-24 | 2000-11-14 | Seek Systems, Inc. | Methods and systems for implementing shared disk array management functions |
US7058788B2 (en) * | 2001-02-23 | 2006-06-06 | Falconstor Software, Inc. | Dynamic allocation of computer memory |
GB0123415D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
US6757778B1 (en) * | 2002-05-07 | 2004-06-29 | Veritas Operating Corporation | Storage management system |
US20040064449A1 (en) | 2002-07-18 | 2004-04-01 | Ripley John R. | Remote scoring and aggregating similarity search engine for use with relational databases |
US7180872B2 (en) * | 2002-08-26 | 2007-02-20 | Alcatel | DSLAM-hosted information storage functionality |
US20040243598A1 (en) | 2003-03-06 | 2004-12-02 | Sleeper Dean A. | Method and system for managing database SQL statements in web based and client/server applications |
US7366800B2 (en) * | 2003-10-09 | 2008-04-29 | International Business Machines Corporation | System and method for dynamically assigning I/O priority |
KR100608602B1 (ko) * | 2003-12-10 | 2006-08-03 | 삼성전자주식회사 | 플래시 메모리, 이를 위한 사상 제어 장치 및 방법 |
-
2005
- 2005-07-14 US US11/183,267 patent/US8819088B2/en not_active Expired - Fee Related
-
2006
- 2006-07-13 CN CNB2006101058503A patent/CN100449545C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4876646A (en) * | 1984-12-24 | 1989-10-24 | Hitachi, Ltd. | Data processor having multilevel address translation tables |
US5673383A (en) * | 1992-01-10 | 1997-09-30 | Kabushiki Kaisha Toshiba | Storage system with a flash memory module |
CN1332877A (zh) * | 1998-11-30 | 2002-01-23 | 联合想象计算机公司 | 关系数据库管理***中用于支持动态运行时间对象定义的方法和装置 |
CN1400533A (zh) * | 2001-08-03 | 2003-03-05 | 群鼎视讯科技股份有限公司 | 嵌入式存储器结构及其存取方法 |
US20030070036A1 (en) * | 2001-09-28 | 2003-04-10 | Gorobets Sergey Anatolievich | Memory system for data storage and retrieval |
Also Published As
Publication number | Publication date |
---|---|
CN1900935A (zh) | 2007-01-24 |
US8819088B2 (en) | 2014-08-26 |
US20070016548A1 (en) | 2007-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100449545C (zh) | 访问扇区数据的方法和*** | |
JP4322031B2 (ja) | 記憶装置 | |
CN1264107C (zh) | 集成具有不同块大小的表空间 | |
CN103827806B (zh) | 闪存阵列中的逻辑扇区映射 | |
CN105027122A (zh) | 压缩和重复数据删除分层驱动 | |
CN103377278B (zh) | 识别要压缩的数据块中的表边界检测的方法与*** | |
US10061834B1 (en) | Incremental out-of-place updates for datasets in data stores | |
CN107423422A (zh) | 基于网格的空间数据分布式存储及检索方法和*** | |
CN103902623A (zh) | 用于在存储***上存取文件的方法和*** | |
CN104813276A (zh) | 从备份***流式恢复数据库 | |
CN104395904A (zh) | 高效的数据对象存储和检索 | |
CN105339907A (zh) | 非易失性存储器***中的同步镜像 | |
CN100456264C (zh) | 一种磁盘空间管理方法及*** | |
CN102693286B (zh) | 一种对文件内容与元数据进行组织管理的方法 | |
US20130262535A1 (en) | Method of managing data of file system using database management system | |
CN102314506B (zh) | 基于动态索引的分布式缓冲区管理方法 | |
CN103026631A (zh) | 用于压缩xml文档的方法和*** | |
CN103714163A (zh) | 一种NoSQL数据库的模式管理方法及*** | |
CN104424219A (zh) | 一种数据文件的管理方法及装置 | |
US10095738B1 (en) | Dynamic assignment of logical partitions according to query predicate evaluations | |
JP4409521B2 (ja) | 記憶装置 | |
Whang et al. | The ubiquitous DBMS | |
KR102127785B1 (ko) | 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램 | |
CN107133334A (zh) | 基于高带宽存储***的数据同步方法 | |
CN102360370A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090107 Termination date: 20200713 |
|
CF01 | Termination of patent right due to non-payment of annual fee |