用于关系数据库系统中高效数据存取的动态散列表的制作方法

文档序号:6348725阅读:207来源:国知局

专利名称::用于关系数据库系统中高效数据存取的动态散列表的制作方法
技术领域
:本发明一般涉及数据库,并且更具体地涉及获得关系数据库系统中的高效数据存取。
背景技术
:计算机是用于存储和提供对大量信息的存取的强大工具。关系数据库是用于将信息存储在计算机系统上同时为用户提供便利存取的常用机制。典型的关系数据库是被存储为具有信息“字段”的“记录”的有关信息的有组织集合。举一个例子,雇员数据库可以具有针对每个雇员的记录,其中每个记录包含指定关于雇员详情,诸如名字、家庭地址、薪水等等的字段。在实际的物理数据库本身(即,实际存储在存储装置上的数据)和系统的用户之间,关系数据库管理系统或RDBMS被典型提供为软件缓冲器(softwarecushion)或层。本质上,RDBMS使数据库用户不知道或甚至不关心底层的硬件细节。典型地,来自用户存取数据的所有请求是由RDBMS处理的。例如,信息可以被添加到数据文件或从数据文件中移除,从此类文件中检索或更新信息等等,所有这些不需要用户知道底层的系统实现。以此方式,RDBMS给用户提供了脱离硬件等级的数据库的概念视图。数据库管理系统的一般结构和操作在本领域是众所周知的。例如,参见Data,C.,“AnIntroductiontoDatabaseSystems,Seventhedition",PartI(数据库系统介绍,第七版,第I部分(特别是1-4章)),AddisonWesley,2000ο高效数据存取是由数据库管理系统提供的性质之一。获得此目的的最常用的机制是将索引与二级存储上的大的随机存取数据文件关联。实质上,索引提供辅助数据结构以便帮助加快记录检索。索引通常实现为多级树结构,典型保存为B-树数据结构。关系数据库系统面临的关键挑战是不断增长的数据库大小。由于数据库大小已经由吉字节增加到1000吉字节,到万兆字节,B-树包含更多的元数据页面(即索引页面)。数据集可增加得如此大,使得对于B-树存取方法,元数据开始控制存储器/高速缓存。如果出现这种情况,B-树可被迫在二级存储上针对每个数据请求进行1/0(输入/输出)操作,原因是任何具体的数据页面已经在高速缓存中的可能性十分小。二级存储存取比本地存储器/高速缓存存取要慢很多,因此对于快速数据检索是不利的。因此,存在对于在日益增大的数据库系统中高效数据检索的数据库存取方法的需要。本发明满足这种需求。
发明内容本发明的实施例包括用于获得关系数据库管理系统中数据元素的高效数据存取的各个方面。在计算机实现的方法方面,高效数据存取通过如下方式发生在所分配的存储的预定连续空间中为数据库的数据元素创建散列表,并在数据库查询操作处理中通过线性散列(linearhashing)来优化散列表的利用,其中散列表的扩展自动发生以增加散列表中页面的数目,而不明显中断数据元素的数据存取。通过本发明的动态散列表,获得改进的数据存取性能,特别是对于主要用于相等查询(即点查询)的那些表,这是由于动态散列表不需要索引页。借助点查询性能的改进,基于点查询的所有其它查询得以改进。此外,通过在动态散列表的每个原始数据页面保留一定大小的空间,提供更好的冲突避免以优化表利用。而且,线性散列适于提供在线(即连续)服务,而没有周期性维护中断。本发明的其它特征和优点以及本发明的各个实施例的结构和操作将在下文参照附图详细描述。注意,本发明不局限于本文描述的特定的实施例。本文中出现的这些实施例只是用于说明目的。基于本文包含的教导,附加实施例将对相关领域(多个)的技术人员是显然的。结合在本文中并构成说明书的一部分的本发明的实施例,并与本描述一起进一步用来解释本发明的原理,使得相关领域的技术人员能够构造并使用本发明。图1说明可以实现本发明的软件实现的处理的计算机系统的大致框图。图2说明用于实现本发明的客户机/服务器数据库系统的大致结构。图3说明根据本发明的实施例,用于利用动态散列表获得数据库系统中的高效数据存取的处理的方框流程图。图4说明根据本发明的实施例的动态散列表的存储布局。图fe、5b、5c和5d说明根据本发明的实施例动态扩展散列表的线性散列的一个例子。现在将参照附图描述本发明。图中,通常相似的附图标记表示相同或功能相似的元件。另外,通常,附图标记的最左边的数字标识首次出现该附图标记的图。具体实施例方式本发明的下列详细描述参照说明与此发明一致的示例性实施例的附图。其它实施例是可行的,在本发明的精神和范围内可以对实施例进行修改。因此,详细描述不意在限制本发明。而是,本发明的范围是由所附权利要求限定的。本领域技术人员将明了,根据下文的描述可以用软件、硬件、固件和/或图中说明的实体的许多不同实施例来实现本发明。具有实现本发明的专门硬件控制的任何实际代码不是限定本发明。因此,考虑到本文给出的详细程度,将描述本发明的操作行为,而应当理解这些实施例的修改和变化是可行的。参照附图,现在描述本发明的示例性实施例。下面的描述将集中在目前优选的本发明的实施例,其被在诸如微软操作系统的操作系统下运行的联网环境中工作的桌面和/或服务器软件(例如驱动器、应用程序等等)中实现。但是本发明并不局限于任何一个具体应用或任何具体环境。实际上,本领域技术人员会发现本发明的系统和方法可以有利地实现于各种不同平台,包括Linux,Solaris,UNIX,IBMAIX等等上。因此,下面的示例性实施例的描述用于说明而不是限制目的。示例性实施例主要是参照框图或流程图描述的。至于流程图,流程图中的每个框表示方法行为和用于执行该方法行为的设备元件。根据实现方式,相应的设备元件可以用硬件、软件、固件或其组合来配置。本发明可以在传统或通用计算机系统,诸如IBM-兼容个人计算机(PC)或服务器计算机上实现。图1说明计算机系统(例如IBM兼容系统)的大致框图,其中可以实现本发明的软件实现的处理。如所示的,系统100包括耦连到随机存取存储器(RAM)102的(一个或多个)中央处理单元(CPU)或(一个或多个)处理器101、只读存储器(ROM)103、键盘106、打印机107、指针装置108、显示器或连接到显示装置105的视频适配器104、可移动(大容量)存储装置115(例如软盘、CD-ROM、CD-R、CD-RW、DVD等等)、固定(大容量)存储装置116(例如硬盘)、(一个或多个)通信(COMM)端口或接口110、调制解调器112和网络接口卡(NIC)或控制器111(例如以太网)。尽管没有独立显示,实时系统时钟以传统方式包括于系统100中。CPU101包括用于实现本发明的任何适当的处理器,如因特尔奔腾系列微处理器的处理器。CPU101与系统的其它组件通过双向系统总线(包括任何必需的输入/输出(I/0)控制器电路和其它“粘接(glue)”逻辑)通信。包括用于寻址系统存储器的地址线的总线提供各个组件之间的数据传递,这在本领域是众所周知的。随机存取存储器102用作CPU101的工作存储器。在一个典型配置中,使用若干兆字节或吉字节的RAM。在不偏离本发明的范围下,可以使用更多或更少的存储器。只读存储器(ROM)1-3包含基本输入/输出系统代码¢10-应用程序和操作系统可以用来与硬件交互,包括从键盘读取字符,将字符输出到打印机等等的ROM中的低级例程的集合。大容量存储装置115,116提供在固定和可移动介质,如磁、光或磁-光存储系统,闪存或其它任何适当的大容量存储技术上的永久存储。大容量存储可以被共享于网络上,或者它可以是专用大容量存储。如图1所示,固定存储116存储用于引导包括操作系统、用户应用程序、驱动程序和其它支持文件,以及所有分类的其它数据文件的计算机系统的操作的程序和数据的主体。典型地,固定存储116用作系统的主硬盘。在基本操作中,程序逻辑(包括实现下文描述的本发明的方法)从可移动存储115或固定存储116加载到主(RAM)存储器102,用于由CPU101执行。在程序逻辑的操作处理中,系统100接收来自键盘106和指针装置108以及来自语音识别系统(未显示)的基于语音的输入的用户输入。键盘106允许选择应用程序,基于键盘的输入或数据的输入,和选择并操纵屏幕或显示装置105上显示的各个数据对象。同样,指针装置108,诸如鼠标、跟踪球,笔装置等等允许选择和操作显示装置上的对象。以此方式,这些输入装置支持系统上运行的任何处理的手工用户输入。计算机系统100在显示装置105上显示文本和/或图形图像和其它数据。视频适配器104被置于显示器105和系统的总线之间,驱动显示装置105。视频适配器104包括可访问CPU101的视频存储器,提供将存储在视频存储器中的像素数据转换成适于以阴极射线管(CRT)光栅或液晶显示器(LCD)监视器的光栅信号的电路。系统100内的显示信息或其它信息的硬拷贝可以从打印机107或其它输出装置获得。打印机107可包括例如用于创建系统输出的硬拷贝图像的HPLaserjet打印机(可从HewlettPackardofPaloAlto,Calif.获得)。系统本身与其它装置(例如,其它计算机)通过连接到网络(例如,以太网、蓝牙无线网络等等)的网络接口卡(NIC)111,和/或调制解调器112(例如,56K调制解调器传输数据的速率,ISDN,DSL或线缆调制解调器),其例子可从3ComofSantaClara,Calif获得。系统100还可与本地偶尔连接的装置(例如,串行电缆链接装置)通过通信(COMM)接口110通信,其可包括RS-232串行口,通用串行总线(USB)接口等。通常本地连接到接口110的装置包括膝上型计算机,手持管理器,数字照相机等等。IBM兼容个人计算机和服务器计算机可从各个厂商获得。代表性的厂商包括戴尔计算机(DellcomputerofRoundRock,Tex.),Hewlett-PackardofPaloAlto,Calif.,和IBMofArmonk,N.Y.。其它适用的计算机包括可从AppleComputerofCupertino,Calif获得的苹果兼容计算机(例如Macintosh)和可从SunMicrosystemsofMountainView,Calif获得的SunSolaris工作站。典型地提供软件系统以控制计算机系统100的操作。软件系统通常保存在系统存储器(RAM)102中和固定存储(例如硬盘)116中,包括内核或操作系统(OS),其管理计算机操作的低级方面,包括管理处理的执行,存储器分配,文件输入和输出(1/0),和装置I/0。OS■白勺MicrosoftWindowsNT,MicrosoftWindows2000,MicrosoftWindowsXP或MicrosoftWindowsVista(MicrosoftCorporationofRedmond,Wash)或诸如之前提到的操作系统的可替代操作系统提供。典型地,OS与装置驱动器(例如,“Winsock”驱动器-Window的TCP/IP堆栈实现)和系统BIOS微代码(即基于ROM的微代码)结合操作,特别是当与外围装置交互时。还可以提供诸如客户应用软件或“程序”(即处理器可执行指令的集合)的一个或多个应用以由计算机系统100执行。旨在用于计算机系统上的(一个或多个)应用或其它软件可从固定存储116被“加载”到存储器102中,或可以从互联网位置(例如网络服务器)下载。图形用户界面(GUI)通常被提供以用图形方式(例如“点-击”)接收用户命令和数据。这些输入又可以由计算机系统根据来自OS和/或(一个或多个)应用来施加作用。图形用户界面还用来显示OS和(一个或多个)应用的结果。尽管本发明可在单个(独立的)计算机(例如图1的系统100)中操作,本发明优选实现于多用户计算机系统中,诸如客户机/服务器系统。图2说明用于实现本发明的客户机/服务器数据库系统200的大致结构。(在下文的后面部分描述用于实现本发明的方法的系统200的特定修改。)如图所示,系统200包括通过网络220连接到服务器230的一个或多个客户机210。特别地,客户机210包括使用传统网络连接到数据库服务器系统240的一个或多个独立终端211。在一个示例性实施例中,终端211本身可包括多个独立工作站,哑终端等等,或包括诸如上述的系统100的个人计算机(PC)。典型地,此类单元可工作在客户机操作系统下,诸如Microsoft扱Windows客户机操作系统(例如Microsoft扱Windows95/98,Windows2000,WindowsXP)。数据库服务器系统240在一个示例性实施例中包括Syl3aseBAdaptivekrver孩Enterprise(ASE)(可从Sybase,Inc.ofDublin,Calif.获得),通常作为独立处理(即,独立于客户机)操作,运行在服务器操作系统,诸如Microsoft扱WindowsNT,Windows2000,WindowsXP(gMicrosoftCorporationofRedmond,Wash),UNIX(Novell),Solaris(Sun)^Linux(RedHat)。网络220可以是许多传统网络系统,包括局域网(LAN)或广域网(WAN)中的任何一个,这是本领域已知的(例如,使用以太网,IBM令牌环网等等)。网络220包括用于以众所周知的结构化查询语言(SQL)将客户机呼叫连同任何参数信息一起打包成适于传送到数据库服务器系统240的格式(一个或多个包)的功能。所描述的计算机硬件和软件是出于说明可用来实现本发明的基本的基础桌面和服务器计算机组件的目的呈现的。为讨论目的,下面的描述将呈现假设在群集中存在与一个或多个“客户机”(例如个人计算机或移动装置)交互的多个服务器实例(例如数据库服务器节点)。但是,本发明并不局限于任何具体的环境或装置配置。而是,本发明可以用能够支持下面详细提出的本发明的方法的任何类型的系统架构或处理环境实现。客户机/服务器环境、数据库服务器和网络在技术、贸易和专利文献中有充分记载。在操作中,客户机210在一个或多个数据库表250中存储数据,或从一个或多个数据库表250中检索数据,如图2所示。关系数据库中的数据被存储为一系列表,也称为关系。通常驻存在服务器230上的每个表本身包括一个或多个“行”或“记录”(元组)(例如,图2中所示的行255)。典型的数据库包含许多表,每个表存储关于特定类型的实体的信息。典型的关系数据库中的表可包含从几行到上百万行的任何数目。行被划分成字段或列,每个字段表示给定行的一个具体属性。例如,对应于雇员记录的行可包括关于雇员的ID号、名字和首字母、位置、雇用日期、社会保障号(SSN)和薪水的信息。这些类别中的每一个又表示一个数据库字段。例如,在前面的雇员表中,位置是一个字段,雇用日期是另一字段,以此类推。采用这种格式,表易于用户理解和使用。而且,表的灵活性允许用户根据需要定义数据的各个项目之间的关系。因此,典型的记录包括关于个人、地方或事情的几类信息。表中的每一行是由记录ID(RID)唯一标识的,其可用作给定行的指针。多数关系数据库实现结构化查询语言(SQL)的变体,SQL是一种允许用户和管理员创建、操作和存取存储在数据库中的数据的语言。SQL的语法有充分记载,例如参见上述的“AnIntroductiontoDatabaseSystems(数据库系统介绍)”。SQL语句可划分成两类用来读、写数据的数据操作语言(DML);和用来描述数据并维持数据库的数据定义语言(DDL)。DML语句也称作查询。在操作中,例如,客户机210发出一个或多个SQL命令到服务器230。SQL命令可指定例如用于从数据库表250中检索具体数据(即,满足查询条件的数据记录)的查询。除了从数据库服务器表250中检索数据之外,客户机210还具有发出命令以将新的数据记录行插入到表中,或更新和/或删除表中的现有记录的能力。SQL语句或简单的“查询”必须被解析以确定存取计划(也被称为“执行计划”或“查询计划”),从而满足给定查询。在操作中,从客户机210(通过网络220)接收的SQL语句被数据库服务器系统MO的引擎260处理。引擎260本身包括解析器沈1、规范器沈3、编译器沈5、执行单元269和存取方法270。具体地,SQL语句被传送到解析器沈1,解析器261使用传统的解析方法(例如递归下降分析)。被解析的查询然后被规范器263规范化。规范化包括例如冗余数据的去除。另外,规范器263执行错误校验,诸如确认出现在查询中的表名字和列名字是有效的(例如,可用并且匹配(belongtogether))。最后,规范器沈3还可以查询存在的任何参照完整性约束,并将其加入到查询中。在规范化之后,查询被传送到编译器沈5,编译器265包括优化器266和代码生成器沈7。优化器266执行基于成本的分析,以制定出合理接近最优计划的查询执行计划。代码生成器267将由查询优化器266选择的查询执行计划翻译成可执行形式以由执行单元269使用存取方法270执行。在典型的关系数据库系统中的所有数据被存储在通常是硬盘的二级存储装置上的页面中。典型地,这些页面的大小范围从1Kb到32Kb,最常用的页面大小是2Kb和4Kb。相对二级存储的所有输入/输出操作(I/O)是在页面大小的单元中进行的,即,整个页面被一次读/写。每次页面还会被分配用于一个目的数据库页面可以用来存储表数据或用于虚拟存储器,但不会用作此两者。已经从硬盘读取的页面存在于其中的存储器被称作高速缓存或缓冲池。往来于硬盘的I/O往往是执行查询时最费时的操作。这是由于,与主存储器(例如RAM)的相对低的等待时间相比,与物理介质关联的等待时间。因此可以通过降低必须完成的I/O操作的数目来提高查询性能。这可以通过使用最大化已知驻存在高速缓存中的页面的使用的数据结构和算法来完成。可替代地,其可被首先通过哪些页面被加载到高速缓存中的更大的选择性来完成。关于I/O另一个的考虑是它是顺序的还是随机的。由于硬盘的结构,顺序I/O比随机存取I/O更快。鼓励使用顺序I/O的数据结构和算法可实现更好性能。本发明通过利用动态散列表(DHT)数据结构的存取方法,为更高效的查询处理特别是点查询(精确匹配)处理提高I/O性能。下面的术语是出于说明目的而不是限制目的提供的,以便帮助理解接下来的讨论。散列函数指任何定义好的过程或算术函数,它将大的大小可能变化的数据转换成通常是可用作数组索引的单个整数的小数据。散列关键字指其值可用作用于查询(例如SSN,名字)的散列函数的输入。散列关键值指散列关键字(列)的值。散列值指由散列函数为给定散列关键字(例如与SSN关联的名字)返回的值。冲突指超过一个散列关键字的值具有相同散列值。散列表指包含页面集合的表,页面集合进一步包含通过散列函数可直接存取的项目。散列表不包含任何索引页面。动态散列表(DHT)指大小可随着数据集大小的增加而扩展的散列表。散列区指分配给包含散列数据列的散列表的数据页面的集合。散列函数在散列区上均勻地分配数据行。散列区是预分配的。散列区中的数据页面必须是连续的以简化将散列值映射到散列区中的页面号,这也是为了映射的性能。原始页面指通过散列函数可直接存取的散列表中的数据页面。它们是预分配的。散列区中的所有数据页面是原始页面。溢出页面指被创建成保存溢出数据并在原始页面不能保存该数据时与原始页面链接的页面。溢出页面不一定是预分配的。参照图3的框图,根据本发明的实施例,高效查询处理开始于动态散列表(DHT)的创建(块300)。根据DDL,通过类似于目前针对划分子句使用的的散列群集子句扩展已知的创建表语句导致该创建。例如createtable[database,[owner]·]table_name......[hash_cluster_clause]Hash_cluster_clause::=[[CONSTRAINTconstraint_name]{UNIQUEIPRIMARYKEY}]HASHCLUSTERED(column_name[{,column_name}···])WITHHASHVALUES=numberofhashvalues[,SIZE=bytes_per_row][,RESERVERATE=percentage_of_reserve_space]其中CONSTRAINT引入唯一或主关键字约束的名字,它被在DHT中定义在散列关键字列上。constranit_name是DHT中散列关键字列上的唯一或主关键字约束的名字。UNIQUE约束指定列中的值,使得没有两行具有相同值。此约束不创建任何索引,并且是DHT中的散列关键字强制要求的。PRIMARYKEY约束指定列中的值,使得没有两个行具有相同值,并且使得值不可能是NULL。此约束不会创建任何索引,是由DHT中的散列关键字强制要求的。HASHCLUSTERED表示该表是DHT。columruname在散列群集子句中使用时,指定散列关键字列。用户可以通过列的集合执行散列,这些列可以是任何数据类型。复制的散列关键值是被允许的,但它会阻碍DHT的性能。HASHVALUES=number_of_hash_values规定当创建散列表时散列表中不同散列值的数目。SIZE=byteS_per_r0W规定每个数据行将占据的字节的数目(例如,数据行的中值大小)。如果用户不规定它,则使用数据行的最大大小(例如,varchar(lOO)将计算为100字节)。RESERVERATE=percentage^f_reserve_space规定每个数据页面中保留的以防冲突的空间的百分数,下文将进一步描述。如果用户不规定它,则0%空间会保留以用于潜在的冲突数据项目。例如,Createtableorder—line(idint,ageint,namevarchar(100),Hashclustered(id,age)WithHashvalues=10000,Size=30,Reserverate=20)会创建以id和年龄(都是integer(int)类型)散列化的表。预期的行大小是30字节(如果“大小”没有规定,则实际会使用108字节G+4+100)),10000个散列值被保留。每个页面中20%的空间被保留用于冲突数据项目。如果页面大小是2K,则53个槽会通过散列函数映射到每个数据页面。散列表的性能很大程度上取决于如何处理冲突。ASEDHT使用下面两种方法来避免可能由冲突引起的额外1/0。首先,在优选实施例中,数据记录被映射到特定页面而不是页面中的槽。因此,只要原始页面仍然能保存所有数据项目,则不需要分配溢出页面,从而每个页面可以吸收一些冲突,而不使用溢出页面,这还可能使得额外的1/0以用于以后的检索。例如,假设散列列值是“Tony”的第一数据项目被保存在页面中的第一数据槽,散列列值是“Terada”的第二数据项目具有相同的散列值。如果每个数据项目被映射到特定页面中的特定槽,则第二数据项目会映射到与“Tony”相同的槽。由于第一槽已经被占据,会需要溢出页面P’,之后的所有检索需要存取溢出页面(P’)。但是,在本发明中,第二数据项目的插入不会引起溢出页面P’的创建,这是由于它将被保存在该页面的第二数据槽中。第二,每个原始页面中的某些空间会被保留以存储可能由冲突引入的额外数据项目,用户可以在创建DHT时规定该参数。例如,如果每个原始页面可存储50个数据项目,保留率是20(即reserverate=20),则只有40个数据项目会映射到一个原始页面。每个原始页面可存储10个可能由冲突引入的另外的数据项目。因此,不太可能创建溢出页面,较少的额外I/O会被用于数据检索。在创建DHT时,提供具有极大规模(例如GB,吉字节)的所分配的存储的预定连续空间。在本发明的示例性实施例中,通过扩展SykiseASE内的alterdatabase命令中的页面分配机制使用,得到极大规模分配(ELSA),以便避免锁定整个数据库,并保证快速分配极大的连续空间。应该认识到尽管此描述涉及ASE的功能,但其含义是说明性的而不是限制性的。因此,适当时可以采用适于提供所描述的ELSA的技术。更多细节在下文说明。在ASE中,系统表“sysdevices”包含用于每个带转储装置、硬盘转储装置、用于数据库的硬盘、用用于数据库的硬盘分区的一行,系统表“sysusages”包含用于为数据库分配的每个硬盘分配段的一行。ELSA会打开这两个表,找到硬盘装置上为数据库分配的空闲的连续硬盘空间。然后ELSA将该空间标记为被DHT占用。ELSA可以比常规页面分配快很多的原因主要有两个1.由于页面被连续分配,它使用大的I/O子系统。在现代计算机系统中,到连续硬盘空间的顺序I/O可以粗略地比对随机硬盘空间的I/O快10-30倍。2.它减少了登录活动。常规页面分配对于每个页面分配需要一个登录记录。在ELSA中,不管分配多少页面(例如,上千,上百万等),只有一个登录记录是需要用于页面分配的。可以消除构建登录记录并将它们刷新到硬盘中的大量时间。图4说明根据优选实施例在分配空间中DHT的存储布局400的框图表示。页面P。到Pn包括预分配散列区,溢出数据页面Pi,Pj包括在常规数据区中分配的通常理解为遵循常规数据页面分配代码路径的页面。应该认识到DHT的存储布局允许与其它对象共享存储区段,不要求排它的区段。在操作中,存储DHT400的利用继续进行数据库查询操作(图3,块302)。利用DHT,不需要对于DML(数据操作语言)的语法变化,使得用户可以在DHT上使用与常规表相同的DML。优化器(图2二66)选择是否使用散列函数,这是本领域技术人员很容易理解的。通过例子,在一个示例性实施例中,在UPDATE查询操作中,如果在所有的散列关键字列上定义EQUISARGS(相等搜索自变量),则目标页面可基于散列函数直接计算。否则,非群集索引(如果存在)会用来定位目标页面。如果没有非群集索引,则使用表扫描。对于表扫描,表扫描优选从预分配区中的第一页面开始,所有溢出页面也要访问。而且,UPDATE可能引起原始页面溢出,并且创建溢出页面。如果UPDATE涉及散列关键字列变化,优选数据项目会从原始槽从删除,并基于其新散列值插入到另一槽中。对于DHT中的DELETE,如果EQUISARGS是在所有关键字列上定义的,则目标页面会基于散列函数直接计算。原始页面和其溢出页面(如果存在)会被搜索,相应记录会被删除。即使在删除之后数据页面中没有页面项目,常规区中的溢出数据页面会被去分配(de-allocate),而散列区中的原始数据页面不会被去分配。否则,非群集索引会用来定位页面。如果没有非群集索引,则会使用表扫描。对于精确匹配或点查询操作,如果EQUISARGS是在所有关键字列上定义的,则目标页面会基于散列函数直接计算。原始页面和其溢出页面(如果存在)会被搜索,相应记录如果存在则会被获取。否则,非群集索引会用来定位页面。如果没有非群集索引,则会使用表扫描。对于DHT中的INSERT,目标页面会基于散列函数直接计算。如果存在溢出,则溢出数据页面会在常规数据页面区中分配。而且,如果DHT加载因子达到预定阈值(图3的块304是肯定的),INSERT可能会导致需要扩展DHT。“加载因子”作为应用到在一个数据库实例中创建的所有DHT的系统配置变量,并反映已经插入在DHT中的数据项目的数目除以可存储在DHT中的总数数据项目(不包括每个页面的保留空间和用于冲突的溢出页面)的阈值。当阈值满足时,需要扩展触发ELSA用于分配适当的存储空间,以及线性散列函数来增加散列表中页面的数目,而不中断数据元素的数据存取(块306)。优选地,插入和ELSA作为两个单独的事务处理被提供,ELSA被作为系统事务处理调度,以便避免如果作为子事务处理则可能会出现的用户不可接受的延迟,这是由于分配空间会随着DHT的增长而花费更多时间。优化通过线性散列得到,其中散列表的扩展是自动发生的。现在参照图fe_5d,呈现如何可以使用线性散列函数来增大表的一个例子。如已知的,线性散列函数的通常形式由Hj(K)=g(K)mod(N*2)给出,这里g(K)是标准散列函数,N是散列区中的初始页面数目,且j=0,l,2,…,并记录散列函数的等级。例如,氏⑷=g(K)modNjH1(K)=g(K)mod2N。如图fe的例子所示,一开始为散列表分配5个页面P0-P4,散列函数是Htl(K)=Kmod5,其中K是使用的散列关键字,每个页面可以存储10个记录。考虑0.8(表示插入元素的数目与被分配槽的数目的比率)的预定加载因子,当散列表中有40个数据项目时会分配另5个页面,P5-P9(图恥)。为了分开一个页面,引入新函数H1=Kmod10。以此方式,对于被Htl散列化的散列表中的PO中的每一个,大约一半的数据项目会保持在PO中,一半会在由&散列化的表的P5中(图5c)。当前的分裂指针(CP)被初始化为0,用来记录下一分裂页面。在DHT使其空间加倍之后,每个随后插入会触发一个页面分裂,直到原始散列表中所有页面已经分裂,CP增加1,如图5d所示。通过根据I^geNo=H0(K),如果I^ageNo<CP,否则I^ageNo=H1(K)确定页面数目(I^ageNo),发生定位每个散列关键字。一开始,由于CP=0,只使用Htl(K)15在页面分开处理中,使用Hci(K)和氏⑷两者。在所有页面分开之后,Htl(K)会被H1(K)取代,CP被重置为0,这是本领域技术人员能很好理解的。通过使用线性散列为扩展DHT,DHT提供不中断的服务(即不需要周期性的表重新组织)用于连续数据库操作(图3的块302)。这避免了已知的用户必须创建新散列表然后从原始散列表中拷贝数据的那些散列表方法的问题,如果散列表的大小变得比其原始估计大小大,则在该时间中,散列表中的数据暂时是不可存取的,降低了数据服务器的在线时间。但是,在本发明中,线性散列适于提供在线服务而不明显中断数据存取。实验证据表明本发明的动态散列表方法具有比已知的用于精确匹配/点查询操作的B-树存取方法显著更好的性能(快3倍之多)。而且,因为本发明的DHT没有元数据页面,所以高速缓存在存在大的数据集时提供具体数据页面的更大可能性。尽管上文已经描述了本发明的各个实施例,但是应该理解它们只是作为例子而不是限制呈现的。相关领域技术人员应该理解在不偏离如所附权利要求中限定的本发明的范围下可以对其进行各种形式和细节上的改变。应该理解,本发明不局限于这些例子。本发明可应用于如本文中描述操作的任何元件。因此,本发明的宽度和范围不应该由上述的示例性实施例中的任何一个限制,而只根据所附权利要求书和其等同物来定义。权利要求1.一种获得关系数据库管理系统中的数据元素的高效数据存取的计算机实现的方法,所述方法包括a、在所分配的存储的预定连续空间中为数据库的数据元素建立散列表;和b、在数据库查询操作过程中通过线性散列优化所述散列表的利用,其中所述散列表的扩展自动发生以增加所述散列表中的页面数目,而没有明显中断所述数据元素的数据存取。2.根据权利要求1所述的计算机实现的方法,其中优化进一步包括监控预定加载因子以识别何时自动增加所述散列表中的页面数目。3.根据权利要求1所述的计算机实现的方法,其中优化进一步包括在所述散列表中保留每个页面的预定部分以防冲突。4.根据权利要求1所述的计算机实现的方法,进一步包括基于页面标识符在所述散列表中映射数据元素。5.根据权利要求1所述的计算机实现的方法,进一步包括根据需要在所述所分配的存储之外的数据区中为所述散列表的溢出分配页面。6.根据权利要求1所述的计算机实现的方法,其中建立进一步包括利用单个命令语句来创建所述散列表。7.一种获得关系数据库管理系统中的数据元素的高效数据存取的计算机实现的方法,所述方法包括a、以单个命令语句在保留的连续存储空间的预定分配中创建无索引散列表;b、在数据库操作过程中根据需要基于加载因子在所述无索引散列表中增加条目;和C、在所述无索引散列表中通过数据列的散列将数据元素映射到精确页面。8.根据权利要求7所述的计算机实现的方法,其中增加条目进一步包括线性散列。9.根据权利要求7所述的计算机实现的方法,其中单个命令语句进一步包括具有散列群集子句的创建表语句。10.根据权利要求7所述的计算机实现的方法,进一步包括在所述无索引散列表中保留每个页面的预定部分以防冲突。11.根据权利要求7所述的计算机实现的方法,进一步包括根据需要在保留的连续存储空间的预定分配之外的数据区中为所述无索引散列表的溢出分配页面。12.—种获得关系数据库管理系统中的数据元素的高效数据存取的系统,所述系统包括a、存储装置;b、耦连到所述存储装置的处理装置;和C、耦连到所述存储装置并由所述处理装置控制的数据库管理装置,所述数据库管理装置在具有极大规模的所分配的存储的预定连续空间中为数据库的数据元素创建散列表,并在数据库查询操作中通过线性散列优化所述散列表的利用,其中所述散列表的扩展自动发生以增加所述散列表中页面的数目,而不中断所述数据元素的数据存取。13.根据权利要求12所述的系统,其中优化进一步包括监控预定加载因子以识别何时自动增加所述散列表中的页面数目。14.根据权利要求12所述的系统,其中优化进一步包括在所述散列表中保留每个页面的预定部分以防冲突。15.根据权利要求12所述的系统,其中所述数据库管理装置进一步基于页面标识符在所述散列表中映射数据元素。16.根据权利要求12所述的系统,其中所述数据库管理进一步根据需要在所述所分配的存储之外的数据区中为所述散列表的溢出分配页面。17.根据权利要求12所述的系统,其中所述数据库管理装置进一步基于单个命令语句来创建所述散列表。18.—种包括计算机可用介质的计算机程序产品,所述计算机可用介质上记录有使处理器能够获得关系数据库管理系统中数据元素的高效数据存取的计算机程序逻辑,所述计算机程序逻辑包括数据库管理装置,用于使处理器能够在具有极大规模的所分配的存储的预定连续空间中为数据库的数据元素创建散列表,并在数据库查询操作过程中通过线性散列优化所述散列表的利用,其中所述散列表的扩展自动发生以增加所述散列表中页面的数目,而不中断所述数据元素的数据存取。19.根据权利要求18所述的计算机程序产品,其中所述散列表的创建进一步包括由单个命令语句创建无索引的散列表。20.根据权利要求18所述的计算机程序产品,其中所述散列表的利用进一步包括通过数据列的散列将数据元素映射到精确页面。全文摘要本发明提供了用于获得关系数据库管理系统中数据元素的高效数据存取的各个方面。在计算机实现的方法方面,高效数据存取通过如下方式发生在所分配的存储的预定连续空间中为数据库的数据元素创建散列表,并在数据库查询操作过程中通过线性散列优化散列表的利用,其中散列表的扩展自动发生以增加散列表中页面的数目,而没有明显中断数据元素的数据存取。文档编号G06F17/00GK102362273SQ201080013748公开日2012年2月22日申请日期2010年3月24日优先权日2009年4月1日发明者周潘峰,寺田胜利,艳红·王申请人:赛贝斯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1