用于关系数据库系统中高效数据存取的动态散列表.pdf

上传人:e2 文档编号:970931 上传时间:2018-03-22 格式:PDF 页数:18 大小:578.40KB
返回 下载 相关 举报
摘要
申请专利号:

CN201080013748.5

申请日:

2010.03.24

公开号:

CN102362273A

公开日:

2012.02.22

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 17/00申请公布日:20120222|||实质审查的生效IPC(主分类):G06F 17/00申请日:20100324|||公开

IPC分类号:

G06F17/00; G06F17/30

主分类号:

G06F17/00

申请人:

赛贝斯股份有限公司

发明人:

周潘峰; 寺田胜利; 艳红·王

地址:

美国加利福尼亚州

优先权:

2009.04.01 US 12/416,527

专利代理机构:

北京路浩知识产权代理有限公司 11002

代理人:

瞿卫军

PDF下载: PDF下载
内容摘要

本发明提供了用于获得关系数据库管理系统中数据元素的高效数据存取的各个方面。在计算机实现的方法方面,高效数据存取通过如下方式发生:在所分配的存储的预定连续空间中为数据库的数据元素创建散列表,并在数据库查询操作过程中通过线性散列优化散列表的利用,其中散列表的扩展自动发生以增加散列表中页面的数目,而没有明显中断数据元素的数据存取。

权利要求书

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 所述的系统, 其中优化进一步包括在所述散列表中保留每个页面 2 的预定部分以防冲突。
15: 根据权利要求 12 所述的系统, 其中所述数据库管理装置进一步基于页面标识符在 所述散列表中映射数据元素。
16: 根据权利要求 12 所述的系统, 其中所述数据库管理进一步根据需要在所述所分配 的存储之外的数据区中为所述散列表的溢出分配页面。
17: 根据权利要求 12 所述的系统, 其中所述数据库管理装置进一步基于单个命令语句 来创建所述散列表。
18: 一种包括计算机可用介质的计算机程序产品, 所述计算机可用介质上记录有使处 理器能够获得关系数据库管理系统中数据元素的高效数据存取的计算机程序逻辑, 所述计 算机程序逻辑包括 : 数据库管理装置, 用于使处理器能够在具有极大规模的所分配的存储的预定连续空间 中为数据库的数据元素创建散列表, 并在数据库查询操作过程中通过线性散列优化所述散 列表的利用, 其中所述散列表的扩展自动发生以增加所述散列表中页面的数目, 而不中断 所述数据元素的数据存取。
19: 根据权利要求 18 所述的计算机程序产品, 其中所述散列表的创建进一步包括由单 个命令语句创建无索引的散列表。
20: 根据权利要求 18 所述的计算机程序产品, 其中所述散列表的利用进一步包括通过 数据列的散列将数据元素映射到精确页面。

说明书


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

    【技术领域】
     本发明一般涉及数据库, 并且更具体地涉及获得关系数据库系统中的高效数据存取。 背景技术 计算机是用于存储和提供对大量信息的存取的强大工具。 关系数据库是用于将信 息存储在计算机系统上同时为用户提供便利存取的常用机制。 典型的关系数据库是被存储 为具有信息 “字段” 的 “记录” 的有关信息的有组织集合。举一个例子, 雇员数据库可以具 有针对每个雇员的记录, 其中每个记录包含指定关于雇员详情, 诸如名字、 家庭地址、 薪水 等等的字段。
     在实际的物理数据库本身 ( 即, 实际存储在存储装置上的数据 ) 和系统的用户之 间, 关系数据库管理系统或 RDBMS 被典型提供为软件缓冲器 (software cushion) 或层。本 质上, RDBMS 使数据库用户不知道或甚至不关心底层的硬件细节。典型地, 来自用户存取数 据的所有请求是由 RDBMS 处理的。例如, 信息可以被添加到数据文件或从数据文件中移除,
     从此类文件中检索或更新信息等等, 所有这些不需要用户知道底层的系统实现。 以此方式, RDBMS 给用户提供了脱离硬件等级的数据库的概念视图。数据库管理系统的一般结构和操 作在本领域是众所周知的。 例如, 参见 Data, C., “An Introduction to Database Systems, Seventh edition” , Part I( 数据库系统介绍, 第七版, 第 I 部分 ( 特别是 1-4 章 )), Addison Wesley, 2000。
     高效数据存取是由数据库管理系统提供的性质之一。 获得此目的的最常用的机制 是将索引与二级存储上的大的随机存取数据文件关联。实质上, 索引提供辅助数据结构以 便帮助加快记录检索。索引通常实现为多级树结构, 典型保存为 B- 树数据结构。
     关系数据库系统面临的关键挑战是不断增长的数据库大小。 由于数据库大小已经 由吉字节增加到 1000 吉字节, 到万兆字节, B- 树包含更多的元数据页面 ( 即索引页面 )。 数据集可增加得如此大, 使得对于 B- 树存取方法, 元数据开始控制存储器 / 高速缓存。如 果出现这种情况, B- 树可被迫在二级存储上针对每个数据请求进行 I/O( 输入 / 输出 ) 操 作, 原因是任何具体的数据页面已经在高速缓存中的可能性十分小。二级存储存取比本地 存储器 / 高速缓存存取要慢很多, 因此对于快速数据检索是不利的。
     因此, 存在对于在日益增大的数据库系统中高效数据检索的数据库存取方法的需 要。本发明满足这种需求。 发明内容 本发明的实施例包括用于获得关系数据库管理系统中数据元素的高效数据存取 的各个方面。 在计算机实现的方法方面, 高效数据存取通过如下方式发生 : 在所分配的存储 的预定连续空间中为数据库的数据元素创建散列表, 并在数据库查询操作处理中通过线性 散列 (linear hashing) 来优化散列表的利用, 其中散列表的扩展自动发生以增加散列表中
     页面的数目, 而不明显中断数据元素的数据存取。
     通过本发明的动态散列表, 获得改进的数据存取性能, 特别是对于主要用于相等 查询 ( 即点查询 ) 的那些表, 这是由于动态散列表不需要索引页。借助点查询性能的改进, 基于点查询的所有其它查询得以改进。此外, 通过在动态散列表的每个原始数据页面保留 一定大小的空间, 提供更好的冲突避免以优化表利用。而且, 线性散列适于提供在线 ( 即连 续 ) 服务, 而没有周期性维护中断。本发明的其它特征和优点以及本发明的各个实施例的 结构和操作将在下文参照附图详细描述。 注意, 本发明不局限于本文描述的特定的实施例。 本文中出现的这些实施例只是用于说明目的。基于本文包含的教导, 附加实施例将对相关 领域 ( 多个 ) 的技术人员是显然的。 附图说明
     结合在本文中并构成说明书的一部分的附图说明本发明的实施例, 并与本描述一 起进一步用来解释本发明的原理, 使得相关领域的技术人员能够构造并使用本发明。
     图 1 说明可以实现本发明的软件实现的处理的计算机系统的大致框图。
     图 2 说明用于实现本发明的客户机 / 服务器数据库系统的大致结构。
     图 3 说明根据本发明的实施例, 用于利用动态散列表获得数据库系统中的高效数 据存取的处理的方框流程图。
     图 4 说明根据本发明的实施例的动态散列表的存储布局。
     图 5a、 5b、 5c 和 5d 说明根据本发明的实施例动态扩展散列表的线性散列的一个例 子。
     现在将参照附图描述本发明。图中, 通常相似的附图标记表示相同或功能相似的 元件。另外, 通常, 附图标记的最左边的数字标识首次出现该附图标记的图。 具体实施方式
     本发明的下列详细描述参照说明与此发明一致的示例性实施例的附图。 其它实施 例是可行的, 在本发明的精神和范围内可以对实施例进行修改。 因此, 详细描述不意在限制 本发明。而是, 本发明的范围是由所附权利要求限定的。
     本领域技术人员将明了, 根据下文的描述可以用软件、 硬件、 固件和 / 或图中说明 的实体的许多不同实施例来实现本发明。 具有实现本发明的专门硬件控制的任何实际代码 不是限定本发明。因此, 考虑到本文给出的详细程度, 将描述本发明的操作行为, 而应当理 解这些实施例的修改和变化是可行的。
     参照附图, 现在描述本发明的示例性实施例。下面的描述将集中在目前优选的本 发明的实施例, 其被在诸如微软操作系统的操作系统下运行的联网环境中工作的桌面和 / 或服务器软件 ( 例如驱动器、 应用程序等等 ) 中实现。但是本发明并不局限于任何一个具 体应用或任何具体环境。实际上, 本领域技术人员会发现本发明的系统和方法可以有利地 实现于各种不同平台, 包括 Linux, Solaris, UNIX, IBM AIX 等等上。因此, 下面的示例性实 施例的描述用于说明而不是限制目的。示例性实施例主要是参照框图或流程图描述的。至 于流程图, 流程图中的每个框表示方法行为和用于执行该方法行为的设备元件。根据实现 方式, 相应的设备元件可以用硬件、 软件、 固件或其组合来配置。本发明可以在传统或通用计算机系统, 诸如 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 中。
     CPU 101 包括用于实现本发明的任何适当的处理器, 如因特尔奔腾系列微处理器 的处理器。 CPU 101 与系统的其它组件通过双向系统总线 ( 包括任何必需的输入 / 输出 (I/ O) 控制器电路和其它 “粘接 (glue)” 逻辑 ) 通信。包括用于寻址系统存储器的地址线的总 线提供各个组件之间的数据传递, 这在本领域是众所周知的。 随机存取存储器 102 用作 CPU 101 的工作存储器。在一个典型配置中, 使用若干兆字节或吉字节的 RAM。在不偏离本发明 的范围下, 可以使用更多或更少的存储器。只读存储器 (ROM)1-3 包含基本输入 / 输出系统 代码 (BIOS)- 应用程序和操作系统可以用来与硬件交互, 包括从键盘读取字符, 将字符输 出到打印机等等的 ROM 中的低级例程的集合。 大容量存储装置 115, 116 提供在固定和可移动介质, 如磁、 光或磁 - 光存储系统, 闪存或其它任何适当的大容量存储技术上的永久存储。大容量存储可以被共享于网络上, 或者它可以是专用大容量存储。如图 1 所示, 固定存储 116 存储用于引导包括操作系统、 用 户应用程序、 驱动程序和其它支持文件, 以及所有分类的其它数据文件的计算机系统的操 作的程序和数据的主体。典型地, 固定存储 116 用作系统的主硬盘。
     在基本操作中, 程序逻辑 ( 包括实现下文描述的本发明的方法 ) 从可移动存储 115 或固定存储 116 加载到主 (RAM) 存储器 102, 用于由 CPU 101 执行。在程序逻辑的操作处理 中, 系统 100 接收来自键盘 106 和指针装置 108 以及来自语音识别系统 ( 未显示 ) 的基于 语音的输入的用户输入。键盘 106 允许选择应用程序, 基于键盘的输入或数据的输入, 和选 择并操纵屏幕或显示装置 105 上显示的各个数据对象。 同样, 指针装置 108, 诸如鼠标、 跟踪 球, 笔装置等等允许选择和操作显示装置上的对象。 以此方式, 这些输入装置支持系统上运 行的任何处理的手工用户输入。
     计算机系统 100 在显示装置 105 上显示文本和 / 或图形图像和其它数据。视频适 配器 104 被置于显示器 105 和系统的总线之间, 驱动显示装置 105。视频适配器 104 包括可 访问 CPU 101 的视频存储器, 提供将存储在视频存储器中的像素数据转换成适于以阴极射 线管 (CRT) 光栅或液晶显示器 (LCD) 监视器的光栅信号的电路。系统 100 内的显示信息或 其它信息的硬拷贝可以从打印机 107 或其它输出装置获得。打印机 107 可包括例如用于创 建系统输出的硬拷贝图像的 HP Laserjet 打印机 ( 可从 Hewlett Packard of Palo Alto, Calif. 获得 )。
     系统本身与其它装置 ( 例如, 其它计算机 ) 通过连接到网络 ( 例如, 以太网、 蓝牙 无线网络等等 ) 的网络接口卡 (NIC)111, 和 / 或调制解调器 112( 例如, 56K 调制解调器传 输数据的速率, ISDN, DSL 或线缆调制解调器 ), 其例子可从 3Com of Santa Clara, Calif 获
     得。系统 100 还可与本地偶尔连接的装置 ( 例如, 串行电缆链接装置 ) 通过通信 (COMM) 接 口 110 通信, 其可包括 RS-232 串行口, 通用串行总线 (USB) 接口等。通常本地连接到接口 110 的装置包括膝上型计算机, 手持管理器, 数字照相机等等。
     IBM 兼容个人计算机和服务器计算机可从各个厂商获得。代表性的厂商包括戴尔 计算机 (Dell computer of Round Rock, Tex.), Hewlett-Packard of Palo Alto, Calif., 和 IBM of Armonk, N.Y.。其它适用的计算机包括可从 Apple Computer of Cupertino, Calif 获得的苹果兼容计算机 ( 例如 Macintosh) 和可从 Sun Microsystems of Mountain View, Calif 获得的 Sun Solaris 工作站。
     典型地提供软件系统以控制计算机系统 100 的操作。软件系统通常保存在系统存 储器 (RAM)102 中和固定存储 ( 例如硬盘 )116 中, 包括内核或操作系统 (OS), 其管理计算 机操作的低级方面, 包括管理处理的执行, 存储器分配, 文件输入和输出 (I/O), 和装置 I/ O。OS 可由传统的操作系统 Microsoft Windows NT, Microsoft Windows 2000, Microsoft Windows XP 或 Microsoft Windows Vista(Microsoft Corporation of Redmond, 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 Windows 95/98, Windows 2000, 或 Windows XP)。
     数 据 库 服 务 器 系 统 240 在 一 个 示 例 性 实 施 例 中 包 括 Sybase Adaptive Server Enterprise(ASE)( 可从 Sybase, Inc.of Dublin, Calif. 获得 ), 通常作为独立 处理 ( 即, 独立于客户机 ) 操作, 运行在服务器操作系统, 诸如 Microsoft Windows NT, Windows 2000, 或 Windows XP( 全部来自 Microsoft Corporation of Redmond, Wash), UNIX(Novell), Solaris(Sun) 或 Linux(Red Hat)。网络 220 可以是许多传统网络系统, 包 括局域网 (LAN) 或广域网 (WAN) 中的任何一个, 这是本领域已知的 ( 例如, 使用以太网, IBM 令牌环网等等 )。网络 220 包括用于以众所周知的结构化查询语言 (SQL) 将客户机呼叫连 同任何参数信息一起打包成适于传送到数据库服务器系统 240 的格式 ( 一个或多个包 ) 的功能。 所描述的计算机硬件和软件是出于说明可用来实现本发明的基本的基础桌面和服务 器计算机组件的目的呈现的。为讨论目的, 下面的描述将呈现假设在群集中存在与一个或 多个 “客户机” ( 例如个人计算机或移动装置 ) 交互的多个服务器实例 ( 例如数据库服务器 节点 )。但是, 本发明并不局限于任何具体的环境或装置配置。而是, 本发明可以用能够支 持下面详细提出的本发明的方法的任何类型的系统架构或处理环境实现。
     客户机 / 服务器环境、 数据库服务器和网络在技术、 贸易和专利文献中有充分记 载。在操作中, 客户机 210 在一个或多个数据库表 250 中存储数据, 或从一个或多个数据库 表 250 中检索数据, 如图 2 所示。关系数据库中的数据被存储为一系列表, 也称为关系。通 常驻存在服务器 230 上的每个表本身包括一个或多个 “行” 或 “记录” ( 元组 )( 例如, 图2 中所示的行 255)。典型的数据库包含许多表, 每个表存储关于特定类型的实体的信息。典 型的关系数据库中的表可包含从几行到上百万行的任何数目。行被划分成字段或列, 每个 字段表示给定行的一个具体属性。例如, 对应于雇员记录的行可包括关于雇员的 ID 号、 名 字和首字母、 位置、 雇用日期、 社会保障号 (SSN) 和薪水的信息。这些类别中的每一个又表 示一个数据库字段。 例如, 在前面的雇员表中, 位置是一个字段, 雇用日期是另一字段, 以此 类推。采用这种格式, 表易于用户理解和使用。而且, 表的灵活性允许用户根据需要定义数 据的各个项目之间的关系。因此, 典型的记录包括关于个人、 地方或事情的几类信息。表中 的每一行是由记录 ID(RID) 唯一标识的, 其可用作给定行的指针。 多数关系数据库实现结构化查询语言 (SQL) 的变体, SQL 是一种允许用户和管理 员创建、 操作和存取存储在数据库中的数据的语言。SQL 的语法有充分记载, 例如参见上述 的 “An Introduction to Database Systems( 数据库系统介绍 )” 。SQL 语句可划分成两 类: 用来读、 写数据的数据操作语言 (DML) ; 和用来描述数据并维持数据库的数据定义语言 (DDL)。DML 语句也称作查询。在操作中, 例如, 客户机 210 发出一个或多个 SQL 命令到服务 器 230。SQL 命令可指定例如用于从数据库表 250 中检索具体数据 ( 即, 满足查询条件的数 据记录 ) 的查询。除了从数据库服务器表 250 中检索数据之外, 客户机 210 还具有发出命 令以将新的数据记录行插入到表中, 或更新和 / 或删除表中的现有记录的能力。
     SQL 语句或简单的 “查询” 必须被解析以确定存取计划 ( 也被称为 “执行计划” 或 “查询计划” ), 从而满足给定查询。在操作中, 从客户机 210( 通过网络 220) 接收的 SQL 语 句被数据库服务器系统 240 的引擎 260 处理。引擎 260 本身包括解析器 261、 规范器 263、 编译器 265、 执行单元 269 和存取方法 270。具体地, SQL 语句被传送到解析器 261, 解析器 261 使用传统的解析方法 ( 例如递归下降分析 )。被解析的查询然后被规范器 263 规范化。 规范化包括例如冗余数据的去除。另外, 规范器 263 执行错误校验, 诸如确认出现在查询中 的表名字和列名字是有效的 ( 例如, 可用并且匹配 (belong together))。最后, 规范器 263 还可以查询存在的任何参照完整性约束, 并将其加入到查询中。
     在规范化之后, 查询被传送到编译器 265, 编译器 265 包括优化器 266 和代码生成 器 267。优化器 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, 通过类似于目前针对划分子句使用的的散列群集子句扩展已知 的创建表语句导致该创建。例如 :
     create table[database.[owner].]table_name…… [hash_cluster_clause]
     Hash_cluster_clause:: = [[CONSTRAINT constraint_name]
     {UNIQUE|PRIMARY KEY}]
     HASH CLUSTERED(column_name[{, column_name}… ])
     WITH HASHVALUES = number of hash values
     [, SIZE = bytes_per_row][, RESERVERATE = percentage_of_reserve_space] 其中 CONSTRAINT 引入唯一或主关键字约束的名字, 它被在 DHT 中定义在散列关键字列上。 constranit_name 是 DHT 中散列关键字列上的唯一或主关键字约束的名字。
     UNIQUE 约束指定列中的值, 使得没有两行具有相同值。 此约束不创建任何索引, 并 且是 DHT 中的散列关键字强制要求的。
     PRIMARYKEY 约束指定列中的值, 使得没有两个行具有相同值, 并且使得值不可能 是 NULL。此约束不会创建任何索引, 是由 DHT 中的散列关键字强制要求的。
     HASH CLUSTERED 表示该表是 DHT。
     column_name 在散列群集子句中使用时, 指定散列关键字列。 用户可以通过列的集 合执行散列, 这些列可以是任何数据类型。复制的散列关键值是被允许的, 但它会阻碍 DHT 的性能。
     HASHVALUES = number_of_hash_values 规定当创建散列表时散列表中不同散列 值的数目。
     SIZE = bytes_per_row 规定每个数据行将占据的字节的数目 ( 例如, 数据行的中 值大小 )。如果用户不规定它, 则使用数据行的最大大小 ( 例如, varchar(100) 将计算为 100 字节 )。
     RESERVERATE = percentage_of_reserve_space 规定每个数据页面中保留的以防 冲突的空间的百分数, 下文将进一步描述。如果用户不规定它, 则 0%空间会保留以用于潜 在的冲突数据项目。
     例如,
     Create table order_line(id int, age int, name varchar(100),
     Hash clustered(id, age)
     With Hashvalues = 10000,
     Size = 30,
     Reserverate = 20)
     会创建以 id 和年龄 ( 都是 integer(int) 类型 ) 散列化的表。预期的行大小是 30 字节 ( 如果 “大小” 没有规定, 则实际会使用 108 字节 (4+4+100)), 10000 个散列值被保留。 每个页面中 20%的空间被保留用于冲突数据项目。如果页面大小是 2K, 则 53 个槽会通过 散列函数映射到每个数据页面。
     散列表的性能很大程度上取决于如何处理冲突。ASE DHT 使用下面两种方法来避 免可能由冲突引起的额外 I/O。
     首先, 在优选实施例中, 数据记录被映射到特定页面而不是页面中的槽。因此, 只 要原始页面仍然能保存所有数据项目, 则不需要分配溢出页面, 从而每个页面可以吸收一 些冲突, 而不使用溢出页面, 这还可能使得额外的 I/O 以用于以后的检索。例如, 假设散列 列值是 “Tony” 的第一数据项目被保存在页面中的第一数据槽, 散列列值是 “Terada” 的第 二数据项目具有相同的散列值。如果每个数据项目被映射到特定页面中的特定槽, 则第二 数据项目会映射到与 “Tony” 相同的槽。由于第一槽已经被占据, 会需要溢出页面 P’ , 之后 的所有检索需要存取溢出页面 (P’ )。但是, 在本发明中, 第二数据项目的插入不会引起溢
     出页面 P’ 的创建, 这是由于它将被保存在该页面的第二数据槽中。
     第二, 每个原始页面中的某些空间会被保留以存储可能由冲突引入的额外数据项 目, 用户可以在创建 DHT 时规定该参数。例如, 如果每个原始页面可存储 50 个数据项目, 保 留率是 20( 即 reserverate = 20), 则只有 40 个数据项目会映射到一个原始页面。每个原 始页面可存储 10 个可能由冲突引入的另外的数据项目。因此, 不太可能创建溢出页面, 较 少的额外 I/O 会被用于数据检索。
     在创建 DHT 时, 提供具有极大规模 ( 例如 GB, 吉字节 ) 的所分配的存储的预定连续 空间。在本发明的示例性实施例中, 通过扩展 Sybase ASE 内的 alter database 命令中的 页面分配机制使用, 得到极大规模分配 (ELSA), 以便避免锁定整个数据库, 并保证快速分配 极大的连续空间。应该认识到尽管此描述涉及 ASE 的功能, 但其含义是说明性的而不是限 制性的。因此, 适当时可以采用适于提供所描述的 ELSA 的技术。更多细节在下文说明。
     在 ASE 中, 系统表 “sysdevices” 包含用于每个带转储装置、 硬盘转储装置、 用于数 据库的硬盘、 用用于数据库的硬盘分区的一行, 系统表 “sysusages” 包含用于为数据库分配 的每个硬盘分配段的一行。ELSA 会打开这两个表, 找到硬盘装置上为数据库分配的空闲的 连续硬盘空间。然后 ELSA 将该空间标记为被 DHT 占用。 ELSA 可以比常规页面分配快很多的原因主要有两个 :
     1. 由于页面被连续分配, 它使用大的 I/O 子系统。 在现代计算机系统中, 到连续硬 盘空间的顺序 I/O 可以粗略地比对随机硬盘空间的 I/O 快 10-30 倍。
     2. 它减少了登录活动。常规页面分配对于每个页面分配需要一个登录记录。在 ELSA 中, 不管分配多少页面 ( 例如, 上千, 上百万等 ), 只有一个登录记录是需要用于页面分 配的。可以消除构建登录记录并将它们刷新到硬盘中的大量时间。
     图 4 说明根据优选实施例在分配空间中 DHT 的存储布局 400 的框图表示。页面 P0 到 Pn 包括预分配散列区, 溢出数据页面 Pi, Pj 包括在常规数据区中分配的通常理解为遵循 常规数据页面分配代码路径的页面。应该认识到 DHT 的存储布局允许与其它对象共享存储 区段, 不要求排它的区段。
     在操作中, 存储 DHT 400 的利用继续进行数据库查询操作 ( 图 3, 块 302)。利用 DHT, 不需要对于 DML( 数据操作语言 ) 的语法变化, 使得用户可以在 DHT 上使用与常规表相 同的 DML。 优化器 ( 图 2, 266) 选择是否使用散列函数, 这是本领域技术人员很容易理解的。
     通过例子, 在一个示例性实施例中, 在 UPDATE 查询操作中, 如果在所有的散列关 键字列上定义 EQUI SARGS( 相等搜索自变量 ), 则目标页面可基于散列函数直接计算。否 则, 非群集索引 ( 如果存在 ) 会用来定位目标页面。如果没有非群集索引, 则使用表扫描。 对于表扫描, 表扫描优选从预分配区中的第一页面开始, 所有溢出页面也要访问。而且, UPDATE 可能引起原始页面溢出, 并且创建溢出页面。如果 UPDATE 涉及散列关键字列变化, 优选数据项目会从原始槽从删除, 并基于其新散列值插入到另一槽中。
     对于 DHT 中的 DELETE, 如果 EQUI SARGS 是在所有关键字列上定义的, 则目标页 面会基于散列函数直接计算。原始页面和其溢出页面 ( 如果存在 ) 会被搜索, 相应记录会 被删除。即使在删除之后数据页面中没有页面项目, 常规区中的溢出数据页面会被去分配 (de-allocate), 而散列区中的原始数据页面不会被去分配。否则, 非群集索引会用来定位 页面。如果没有非群集索引, 则会使用表扫描。
     对于精确匹配或点查询操作, 如果 EQUI SARGS 是在所有关键字列上定义的, 则目 标页面会基于散列函数直接计算。原始页面和其溢出页面 ( 如果存在 ) 会被搜索, 相应记 录如果存在则会被获取。否则, 非群集索引会用来定位页面。如果没有非群集索引, 则会使 用表扫描。
     对于 DHT 中的 INSERT, 目标页面会基于散列函数直接计算。如果存在溢出, 则溢 出数据页面会在常规数据页面区中分配。而且, 如果 DHT 加载因子达到预定阈值 ( 图 3 的 块 304 是肯定的 ), INSERT 可能会导致需要扩展 DHT。 “加载因子” 作为应用到在一个数据 库实例中创建的所有 DHT 的系统配置变量, 并反映已经插入在 DHT 中的数据项目的数目除 以可存储在 DHT 中的总数数据项目 ( 不包括每个页面的保留空间和用于冲突的溢出页面 ) 的阈值。当阈值满足时, 需要扩展触发 ELSA 用于分配适当的存储空间, 以及线性散列函数 来增加散列表中页面的数目, 而不中断数据元素的数据存取 ( 块 306)。
     优选地, 插入和 ELSA 作为两个单独的事务处理被提供, ELSA 被作为系统事务处理 调度, 以便避免如果作为子事务处理则可能会出现的用户不可接受的延迟, 这是由于分配 空间会随着 DHT 的增长而花费更多时间。优化通过线性散列得到, 其中散列表的扩展是自 动发生的。 现在参照图 5a-5d, 呈现如何可以使用线性散列函数来增大表的一个例子。 如已知 的, 线性散列函数的通常形式由 Hj(K) = g(K)mod(N*2) 给出, 这里 g(K) 是标准散列函数, N 是散列区中的初始页面数目, 且 j = 0, 1, 2,…, 并记录散列函数的等级。例如, H0(K) = g(K)mod N, H1(K) = g(K)mod 2N。 如图 5a 的例子所示, 一开始为散列表分配 5 个页面 P0-P4, 散列函数是 H0(K) = K mod 5, 其中 K 是使用的散列关键字, 每个页面可以存储 10 个记录。 考虑 0.8( 表示插入元素的数目与被分配槽的数目的比率 ) 的预定加载因子, 当散列表中有 40 个数据项目时会分配另 5 个页面, P5-P9( 图 5b)。为了分开一个页面, 引入新函数 H1 = K mod 10。以此方式, 对于被 H0 散列化的散列表中的 P0 中的每一个, 大约一半的数据项目 会保持在 P0 中, 一半会在由 H1 散列化的表的 P5 中 ( 图 5c)。当前的分裂指针 (CP) 被初始 化为 0, 用来记录下一分裂页面。在 DHT 使其空间加倍之后, 每个随后插入会触发一个页面 分裂, 直到原始散列表中所有页面已经分裂, CP 增加 1, 如图 5d 所示。通过根据 PageNo = H0(K), 如果 PageNo < CP, 否则 PageNo = H1(K) 确定页面数目 (PageNo), 发生定位每个散列 关键字。一开始, 由于 CP = 0, 只使用 H0(K)。在页面分开处理中, 使用 H0(K) 和 H1(K) 两者。 在所有页面分开之后, H0(K) 会被 H1(K) 取代, CP 被重置为 0, 这是本领域技术人员能很好理 解的。
     通过使用线性散列为扩展 DHT, DHT 提供不中断的服务 ( 即不需要周期性的表重新 组织 ) 用于连续数据库操作 ( 图 3 的块 302)。这避免了已知的用户必须创建新散列表然 后从原始散列表中拷贝数据的那些散列表方法的问题, 如果散列表的大小变得比其原始估 计大小大, 则在该时间中, 散列表中的数据暂时是不可存取的, 降低了数据服务器的在线时 间。但是, 在本发明中, 线性散列适于提供在线服务而不明显中断数据存取。实验证据表明 本发明的动态散列表方法具有比已知的用于精确匹配 / 点查询操作的 B- 树存取方法显著 更好的性能 ( 快 3 倍之多 )。而且, 因为本发明的 DHT 没有元数据页面, 所以高速缓存在存 在大的数据集时提供具体数据页面的更大可能性。
     尽管上文已经描述了本发明的各个实施例, 但是应该理解它们只是作为例子而不
     是限制呈现的。 相关领域技术人员应该理解在不偏离如所附权利要求中限定的本发明的范 围下可以对其进行各种形式和细节上的改变。应该理解, 本发明不局限于这些例子。本发 明可应用于如本文中描述操作的任何元件。因此, 本发明的宽度和范围不应该由上述的示 例性实施例中的任何一个限制, 而只根据所附权利要求书和其等同物来定义。

用于关系数据库系统中高效数据存取的动态散列表.pdf_第1页
第1页 / 共18页
用于关系数据库系统中高效数据存取的动态散列表.pdf_第2页
第2页 / 共18页
用于关系数据库系统中高效数据存取的动态散列表.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《用于关系数据库系统中高效数据存取的动态散列表.pdf》由会员分享,可在线阅读,更多相关《用于关系数据库系统中高效数据存取的动态散列表.pdf(18页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102362273A43申请公布日20120222CN102362273ACN102362273A21申请号201080013748522申请日2010032412/416,52720090401USG06F17/00200601G06F17/3020060171申请人赛贝斯股份有限公司地址美国加利福尼亚州72发明人周潘峰寺田胜利艳红王74专利代理机构北京路浩知识产权代理有限公司11002代理人瞿卫军54发明名称用于关系数据库系统中高效数据存取的动态散列表57摘要本发明提供了用于获得关系数据库管理系统中数据元素的高效数据存取的各个方面。在计算机实现的方法方面,高效数据存取通过。

2、如下方式发生在所分配的存储的预定连续空间中为数据库的数据元素创建散列表,并在数据库查询操作过程中通过线性散列优化散列表的利用,其中散列表的扩展自动发生以增加散列表中页面的数目,而没有明显中断数据元素的数据存取。30优先权数据85PCT申请进入国家阶段日2011092386PCT申请的申请数据PCT/US2010/0284622010032487PCT申请的公布数据WO2010/120457EN2010102151INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书10页附图5页CN102362290A1/2页21一种获得关系数据库管理系统中的数据元素的高效数据存取的计。

3、算机实现的方法,所述方法包括A、在所分配的存储的预定连续空间中为数据库的数据元素建立散列表;和B、在数据库查询操作过程中通过线性散列优化所述散列表的利用,其中所述散列表的扩展自动发生以增加所述散列表中的页面数目,而没有明显中断所述数据元素的数据存取。2根据权利要求1所述的计算机实现的方法,其中优化进一步包括监控预定加载因子以识别何时自动增加所述散列表中的页面数目。3根据权利要求1所述的计算机实现的方法,其中优化进一步包括在所述散列表中保留每个页面的预定部分以防冲突。4根据权利要求1所述的计算机实现的方法,进一步包括基于页面标识符在所述散列表中映射数据元素。5根据权利要求1所述的计算机实现的方法。

4、,进一步包括根据需要在所述所分配的存储之外的数据区中为所述散列表的溢出分配页面。6根据权利要求1所述的计算机实现的方法,其中建立进一步包括利用单个命令语句来创建所述散列表。7一种获得关系数据库管理系统中的数据元素的高效数据存取的计算机实现的方法,所述方法包括A、以单个命令语句在保留的连续存储空间的预定分配中创建无索引散列表;B、在数据库操作过程中根据需要基于加载因子在所述无索引散列表中增加条目;和C、在所述无索引散列表中通过数据列的散列将数据元素映射到精确页面。8根据权利要求7所述的计算机实现的方法,其中增加条目进一步包括线性散列。9根据权利要求7所述的计算机实现的方法,其中单个命令语句进一步。

5、包括具有散列群集子句的创建表语句。10根据权利要求7所述的计算机实现的方法,进一步包括在所述无索引散列表中保留每个页面的预定部分以防冲突。11根据权利要求7所述的计算机实现的方法,进一步包括根据需要在保留的连续存储空间的预定分配之外的数据区中为所述无索引散列表的溢出分配页面。12一种获得关系数据库管理系统中的数据元素的高效数据存取的系统,所述系统包括A、存储装置;B、耦连到所述存储装置的处理装置;和C、耦连到所述存储装置并由所述处理装置控制的数据库管理装置,所述数据库管理装置在具有极大规模的所分配的存储的预定连续空间中为数据库的数据元素创建散列表,并在数据库查询操作中通过线性散列优化所述散列表。

6、的利用,其中所述散列表的扩展自动发生以增加所述散列表中页面的数目,而不中断所述数据元素的数据存取。13根据权利要求12所述的系统,其中优化进一步包括监控预定加载因子以识别何时自动增加所述散列表中的页面数目。14根据权利要求12所述的系统,其中优化进一步包括在所述散列表中保留每个页面权利要求书CN102362273ACN102362290A2/2页3的预定部分以防冲突。15根据权利要求12所述的系统,其中所述数据库管理装置进一步基于页面标识符在所述散列表中映射数据元素。16根据权利要求12所述的系统,其中所述数据库管理进一步根据需要在所述所分配的存储之外的数据区中为所述散列表的溢出分配页面。17。

7、根据权利要求12所述的系统,其中所述数据库管理装置进一步基于单个命令语句来创建所述散列表。18一种包括计算机可用介质的计算机程序产品,所述计算机可用介质上记录有使处理器能够获得关系数据库管理系统中数据元素的高效数据存取的计算机程序逻辑,所述计算机程序逻辑包括数据库管理装置,用于使处理器能够在具有极大规模的所分配的存储的预定连续空间中为数据库的数据元素创建散列表,并在数据库查询操作过程中通过线性散列优化所述散列表的利用,其中所述散列表的扩展自动发生以增加所述散列表中页面的数目,而不中断所述数据元素的数据存取。19根据权利要求18所述的计算机程序产品,其中所述散列表的创建进一步包括由单个命令语句创。

8、建无索引的散列表。20根据权利要求18所述的计算机程序产品,其中所述散列表的利用进一步包括通过数据列的散列将数据元素映射到精确页面。权利要求书CN102362273ACN102362290A1/10页4用于关系数据库系统中高效数据存取的动态散列表技术领域0001本发明一般涉及数据库,并且更具体地涉及获得关系数据库系统中的高效数据存取。背景技术0002计算机是用于存储和提供对大量信息的存取的强大工具。关系数据库是用于将信息存储在计算机系统上同时为用户提供便利存取的常用机制。典型的关系数据库是被存储为具有信息“字段”的“记录”的有关信息的有组织集合。举一个例子,雇员数据库可以具有针对每个雇员的记录。

9、,其中每个记录包含指定关于雇员详情,诸如名字、家庭地址、薪水等等的字段。0003在实际的物理数据库本身即,实际存储在存储装置上的数据和系统的用户之间,关系数据库管理系统或RDBMS被典型提供为软件缓冲器SOFTWARECUSHION或层。本质上,RDBMS使数据库用户不知道或甚至不关心底层的硬件细节。典型地,来自用户存取数据的所有请求是由RDBMS处理的。例如,信息可以被添加到数据文件或从数据文件中移除,从此类文件中检索或更新信息等等,所有这些不需要用户知道底层的系统实现。以此方式,RDBMS给用户提供了脱离硬件等级的数据库的概念视图。数据库管理系统的一般结构和操作在本领域是众所周知的。例如,。

10、参见DATA,C,“ANINTRODUCTIONTODATABASESYSTEMS,SEVENTHEDITION”,PARTI数据库系统介绍,第七版,第I部分特别是14章,ADDISONWESLEY,2000。0004高效数据存取是由数据库管理系统提供的性质之一。获得此目的的最常用的机制是将索引与二级存储上的大的随机存取数据文件关联。实质上,索引提供辅助数据结构以便帮助加快记录检索。索引通常实现为多级树结构,典型保存为B树数据结构。0005关系数据库系统面临的关键挑战是不断增长的数据库大小。由于数据库大小已经由吉字节增加到1000吉字节,到万兆字节,B树包含更多的元数据页面即索引页面。数据集可。

11、增加得如此大,使得对于B树存取方法,元数据开始控制存储器/高速缓存。如果出现这种情况,B树可被迫在二级存储上针对每个数据请求进行I/O输入/输出操作,原因是任何具体的数据页面已经在高速缓存中的可能性十分小。二级存储存取比本地存储器/高速缓存存取要慢很多,因此对于快速数据检索是不利的。0006因此,存在对于在日益增大的数据库系统中高效数据检索的数据库存取方法的需要。本发明满足这种需求。发明内容0007本发明的实施例包括用于获得关系数据库管理系统中数据元素的高效数据存取的各个方面。在计算机实现的方法方面,高效数据存取通过如下方式发生在所分配的存储的预定连续空间中为数据库的数据元素创建散列表,并在数。

12、据库查询操作处理中通过线性散列LINEARHASHING来优化散列表的利用,其中散列表的扩展自动发生以增加散列表中说明书CN102362273ACN102362290A2/10页5页面的数目,而不明显中断数据元素的数据存取。0008通过本发明的动态散列表,获得改进的数据存取性能,特别是对于主要用于相等查询即点查询的那些表,这是由于动态散列表不需要索引页。借助点查询性能的改进,基于点查询的所有其它查询得以改进。此外,通过在动态散列表的每个原始数据页面保留一定大小的空间,提供更好的冲突避免以优化表利用。而且,线性散列适于提供在线即连续服务,而没有周期性维护中断。本发明的其它特征和优点以及本发明的各。

13、个实施例的结构和操作将在下文参照附图详细描述。注意,本发明不局限于本文描述的特定的实施例。本文中出现的这些实施例只是用于说明目的。基于本文包含的教导,附加实施例将对相关领域多个的技术人员是显然的。附图说明0009结合在本文中并构成说明书的一部分的附图说明本发明的实施例,并与本描述一起进一步用来解释本发明的原理,使得相关领域的技术人员能够构造并使用本发明。0010图1说明可以实现本发明的软件实现的处理的计算机系统的大致框图。0011图2说明用于实现本发明的客户机/服务器数据库系统的大致结构。0012图3说明根据本发明的实施例,用于利用动态散列表获得数据库系统中的高效数据存取的处理的方框流程图。0。

14、013图4说明根据本发明的实施例的动态散列表的存储布局。0014图5A、5B、5C和5D说明根据本发明的实施例动态扩展散列表的线性散列的一个例子。0015现在将参照附图描述本发明。图中,通常相似的附图标记表示相同或功能相似的元件。另外,通常,附图标记的最左边的数字标识首次出现该附图标记的图。具体实施方式0016本发明的下列详细描述参照说明与此发明一致的示例性实施例的附图。其它实施例是可行的,在本发明的精神和范围内可以对实施例进行修改。因此,详细描述不意在限制本发明。而是,本发明的范围是由所附权利要求限定的。0017本领域技术人员将明了,根据下文的描述可以用软件、硬件、固件和/或图中说明的实体的。

15、许多不同实施例来实现本发明。具有实现本发明的专门硬件控制的任何实际代码不是限定本发明。因此,考虑到本文给出的详细程度,将描述本发明的操作行为,而应当理解这些实施例的修改和变化是可行的。0018参照附图,现在描述本发明的示例性实施例。下面的描述将集中在目前优选的本发明的实施例,其被在诸如微软操作系统的操作系统下运行的联网环境中工作的桌面和/或服务器软件例如驱动器、应用程序等等中实现。但是本发明并不局限于任何一个具体应用或任何具体环境。实际上,本领域技术人员会发现本发明的系统和方法可以有利地实现于各种不同平台,包括LINUX,SOLARIS,UNIX,IBMAIX等等上。因此,下面的示例性实施例的。

16、描述用于说明而不是限制目的。示例性实施例主要是参照框图或流程图描述的。至于流程图,流程图中的每个框表示方法行为和用于执行该方法行为的设备元件。根据实现方式,相应的设备元件可以用硬件、软件、固件或其组合来配置。说明书CN102362273ACN102362290A3/10页60019本发明可以在传统或通用计算机系统,诸如IBM兼容个人计算机PC或服务器计算机上实现。图1说明计算机系统例如IBM兼容系统的大致框图,其中可以实现本发明的软件实现的处理。如所示的,系统100包括耦连到随机存取存储器RAM102的一个或多个中央处理单元CPU或一个或多个处理器101、只读存储器ROM103、键盘106、打。

17、印机107、指针装置108、显示器或连接到显示装置105的视频适配器104、可移动大容量存储装置115例如软盘、CDROM、CDR、CDRW、DVD等等、固定大容量存储装置116例如硬盘、一个或多个通信COMM端口或接口110、调制解调器112和网络接口卡NIC或控制器111例如以太网。尽管没有独立显示,实时系统时钟以传统方式包括于系统100中。0020CPU101包括用于实现本发明的任何适当的处理器,如因特尔奔腾系列微处理器的处理器。CPU101与系统的其它组件通过双向系统总线包括任何必需的输入/输出I/O控制器电路和其它“粘接GLUE”逻辑通信。包括用于寻址系统存储器的地址线的总线提供各个。

18、组件之间的数据传递,这在本领域是众所周知的。随机存取存储器102用作CPU101的工作存储器。在一个典型配置中,使用若干兆字节或吉字节的RAM。在不偏离本发明的范围下,可以使用更多或更少的存储器。只读存储器ROM13包含基本输入/输出系统代码BIOS应用程序和操作系统可以用来与硬件交互,包括从键盘读取字符,将字符输出到打印机等等的ROM中的低级例程的集合。0021大容量存储装置115,116提供在固定和可移动介质,如磁、光或磁光存储系统,闪存或其它任何适当的大容量存储技术上的永久存储。大容量存储可以被共享于网络上,或者它可以是专用大容量存储。如图1所示,固定存储116存储用于引导包括操作系统、。

19、用户应用程序、驱动程序和其它支持文件,以及所有分类的其它数据文件的计算机系统的操作的程序和数据的主体。典型地,固定存储116用作系统的主硬盘。0022在基本操作中,程序逻辑包括实现下文描述的本发明的方法从可移动存储115或固定存储116加载到主RAM存储器102,用于由CPU101执行。在程序逻辑的操作处理中,系统100接收来自键盘106和指针装置108以及来自语音识别系统未显示的基于语音的输入的用户输入。键盘106允许选择应用程序,基于键盘的输入或数据的输入,和选择并操纵屏幕或显示装置105上显示的各个数据对象。同样,指针装置108,诸如鼠标、跟踪球,笔装置等等允许选择和操作显示装置上的对象。

20、。以此方式,这些输入装置支持系统上运行的任何处理的手工用户输入。0023计算机系统100在显示装置105上显示文本和/或图形图像和其它数据。视频适配器104被置于显示器105和系统的总线之间,驱动显示装置105。视频适配器104包括可访问CPU101的视频存储器,提供将存储在视频存储器中的像素数据转换成适于以阴极射线管CRT光栅或液晶显示器LCD监视器的光栅信号的电路。系统100内的显示信息或其它信息的硬拷贝可以从打印机107或其它输出装置获得。打印机107可包括例如用于创建系统输出的硬拷贝图像的HPLASERJET打印机可从HEWLETTPACKARDOFPALOALTO,CALIF获得。0。

21、024系统本身与其它装置例如,其它计算机通过连接到网络例如,以太网、蓝牙无线网络等等的网络接口卡NIC111,和/或调制解调器112例如,56K调制解调器传输数据的速率,ISDN,DSL或线缆调制解调器,其例子可从3COMOFSANTACLARA,CALIF获说明书CN102362273ACN102362290A4/10页7得。系统100还可与本地偶尔连接的装置例如,串行电缆链接装置通过通信COMM接口110通信,其可包括RS232串行口,通用串行总线USB接口等。通常本地连接到接口110的装置包括膝上型计算机,手持管理器,数字照相机等等。0025IBM兼容个人计算机和服务器计算机可从各个厂商。

22、获得。代表性的厂商包括戴尔计算机DELLCOMPUTEROFROUNDROCK,TEX,HEWLETTPACKARDOFPALOALTO,CALIF,和IBMOFARMONK,NY。其它适用的计算机包括可从APPLECOMPUTEROFCUPERTINO,CALIF获得的苹果兼容计算机例如MACINTOSH和可从SUNMICROSYSTEMSOFMOUNTAINVIEW,CALIF获得的SUNSOLARIS工作站。0026典型地提供软件系统以控制计算机系统100的操作。软件系统通常保存在系统存储器RAM102中和固定存储例如硬盘116中,包括内核或操作系统OS,其管理计算机操作的低级方面,包括。

23、管理处理的执行,存储器分配,文件输入和输出I/O,和装置I/O。OS可由传统的操作系统MICROSOFTWINDOWSNT,MICROSOFTWINDOWS2000,MICROSOFTWINDOWSXP或MICROSOFTWINDOWSVISTAMICROSOFTCORPORATIONOFREDMOND,WASH或诸如之前提到的操作系统的可替代操作系统提供。典型地,OS与装置驱动器例如,“WINSOCK”驱动器WINDOW的TCP/IP堆栈实现和系统BIOS微代码即基于ROM的微代码结合操作,特别是当与外围装置交互时。还可以提供诸如客户应用软件或“程序”即处理器可执行指令的集合的一个或多个应用。

24、以由计算机系统100执行。旨在用于计算机系统上的一个或多个应用或其它软件可从固定存储116被“加载”到存储器102中,或可以从互联网位置例如网络服务器下载。图形用户界面GUI通常被提供以用图形方式例如“点击”接收用户命令和数据。这些输入又可以由计算机系统根据来自OS和/或一个或多个应用来施加作用。图形用户界面还用来显示OS和一个或多个应用的结果。0027尽管本发明可在单个独立的计算机例如图1的系统100中操作,本发明优选实现于多用户计算机系统中,诸如客户机/服务器系统。图2说明用于实现本发明的客户机/服务器数据库系统200的大致结构。在下文的后面部分描述用于实现本发明的方法的系统200的特定修。

25、改。如图所示,系统200包括通过网络220连接到服务器230的一个或多个客户机210。特别地,客户机210包括使用传统网络连接到数据库服务器系统240的一个或多个独立终端211。在一个示例性实施例中,终端211本身可包括多个独立工作站,哑终端等等,或包括诸如上述的系统100的个人计算机PC。典型地,此类单元可工作在客户机操作系统下,诸如MICROSOFTWINDOWS客户机操作系统例如MICROSOFTWINDOWS95/98,WINDOWS2000,或WINDOWSXP。0028数据库服务器系统240在一个示例性实施例中包括SYBASEADAPTIVESERVERENTERPRISEASE可。

26、从SYBASE,INCOFDUBLIN,CALIF获得,通常作为独立处理即,独立于客户机操作,运行在服务器操作系统,诸如MICROSOFTWINDOWSNT,WINDOWS2000,或WINDOWSXP全部来自MICROSOFTCORPORATIONOFREDMOND,WASH,UNIXNOVELL,SOLARISSUN或LINUXREDHAT。网络220可以是许多传统网络系统,包括局域网LAN或广域网WAN中的任何一个,这是本领域已知的例如,使用以太网,IBM令牌环网等等。网络220包括用于以众所周知的结构化查询语言SQL将客户机呼叫连同任何参数信息一起打包成适于传送到数据库服务器系统240。

27、的格式一个或多个包的说明书CN102362273ACN102362290A5/10页8功能。所描述的计算机硬件和软件是出于说明可用来实现本发明的基本的基础桌面和服务器计算机组件的目的呈现的。为讨论目的,下面的描述将呈现假设在群集中存在与一个或多个“客户机”例如个人计算机或移动装置交互的多个服务器实例例如数据库服务器节点。但是,本发明并不局限于任何具体的环境或装置配置。而是,本发明可以用能够支持下面详细提出的本发明的方法的任何类型的系统架构或处理环境实现。0029客户机/服务器环境、数据库服务器和网络在技术、贸易和专利文献中有充分记载。在操作中,客户机210在一个或多个数据库表250中存储数据,。

28、或从一个或多个数据库表250中检索数据,如图2所示。关系数据库中的数据被存储为一系列表,也称为关系。通常驻存在服务器230上的每个表本身包括一个或多个“行”或“记录”元组例如,图2中所示的行255。典型的数据库包含许多表,每个表存储关于特定类型的实体的信息。典型的关系数据库中的表可包含从几行到上百万行的任何数目。行被划分成字段或列,每个字段表示给定行的一个具体属性。例如,对应于雇员记录的行可包括关于雇员的ID号、名字和首字母、位置、雇用日期、社会保障号SSN和薪水的信息。这些类别中的每一个又表示一个数据库字段。例如,在前面的雇员表中,位置是一个字段,雇用日期是另一字段,以此类推。采用这种格式,。

29、表易于用户理解和使用。而且,表的灵活性允许用户根据需要定义数据的各个项目之间的关系。因此,典型的记录包括关于个人、地方或事情的几类信息。表中的每一行是由记录IDRID唯一标识的,其可用作给定行的指针。0030多数关系数据库实现结构化查询语言SQL的变体,SQL是一种允许用户和管理员创建、操作和存取存储在数据库中的数据的语言。SQL的语法有充分记载,例如参见上述的“ANINTRODUCTIONTODATABASESYSTEMS数据库系统介绍”。SQL语句可划分成两类用来读、写数据的数据操作语言DML;和用来描述数据并维持数据库的数据定义语言DDL。DML语句也称作查询。在操作中,例如,客户机21。

30、0发出一个或多个SQL命令到服务器230。SQL命令可指定例如用于从数据库表250中检索具体数据即,满足查询条件的数据记录的查询。除了从数据库服务器表250中检索数据之外,客户机210还具有发出命令以将新的数据记录行插入到表中,或更新和/或删除表中的现有记录的能力。0031SQL语句或简单的“查询”必须被解析以确定存取计划也被称为“执行计划”或“查询计划”,从而满足给定查询。在操作中,从客户机210通过网络220接收的SQL语句被数据库服务器系统240的引擎260处理。引擎260本身包括解析器261、规范器263、编译器265、执行单元269和存取方法270。具体地,SQL语句被传送到解析器2。

31、61,解析器261使用传统的解析方法例如递归下降分析。被解析的查询然后被规范器263规范化。规范化包括例如冗余数据的去除。另外,规范器263执行错误校验,诸如确认出现在查询中的表名字和列名字是有效的例如,可用并且匹配BELONGTOGETHER。最后,规范器263还可以查询存在的任何参照完整性约束,并将其加入到查询中。0032在规范化之后,查询被传送到编译器265,编译器265包括优化器266和代码生成器267。优化器266执行基于成本的分析,以制定出合理接近最优计划的查询执行计划。代码生成器267将由查询优化器266选择的查询执行计划翻译成可执行形式以由执行单元269使用存取方法270执行。。

32、0033在典型的关系数据库系统中的所有数据被存储在通常是硬盘的二级存储装置上的页面中。典型地,这些页面的大小范围从1KB到32KB,最常用的页面大小是2KB和4KB。说明书CN102362273ACN102362290A6/10页9相对二级存储的所有输入/输出操作I/O是在页面大小的单元中进行的,即,整个页面被一次读/写。每次页面还会被分配用于一个目的数据库页面可以用来存储表数据或用于虚拟存储器,但不会用作此两者。已经从硬盘读取的页面存在于其中的存储器被称作高速缓存或缓冲池。0034往来于硬盘的I/O往往是执行查询时最费时的操作。这是由于,与主存储器例如RAM的相对低的等待时间相比,与物理介质。

33、关联的等待时间。因此可以通过降低必须完成的I/O操作的数目来提高查询性能。这可以通过使用最大化已知驻存在高速缓存中的页面的使用的数据结构和算法来完成。可替代地,其可被首先通过哪些页面被加载到高速缓存中的更大的选择性来完成。关于I/O另一个的考虑是它是顺序的还是随机的。由于硬盘的结构,顺序I/O比随机存取I/O更快。鼓励使用顺序I/O的数据结构和算法可实现更好性能。0035本发明通过利用动态散列表DHT数据结构的存取方法,为更高效的查询处理特别是点查询精确匹配处理提高I/O性能。下面的术语是出于说明目的而不是限制目的提供的,以便帮助理解接下来的讨论。0036散列函数指任何定义好的过程或算术函数,。

34、它将大的大小可能变化的数据转换成通常是可用作数组索引的单个整数的小数据。0037散列关键字指其值可用作用于查询例如SSN,名字的散列函数的输入。0038散列关键值指散列关键字列的值。0039散列值指由散列函数为给定散列关键字例如与SSN关联的名字返回的值。0040冲突指超过一个散列关键字的值具有相同散列值。0041散列表指包含页面集合的表,页面集合进一步包含通过散列函数可直接存取的项目。散列表不包含任何索引页面。0042动态散列表DHT指大小可随着数据集大小的增加而扩展的散列表。0043散列区指分配给包含散列数据列的散列表的数据页面的集合。散列函数在散列区上均匀地分配数据行。散列区是预分配的。。

35、散列区中的数据页面必须是连续的以简化将散列值映射到散列区中的页面号,这也是为了映射的性能。0044原始页面指通过散列函数可直接存取的散列表中的数据页面。它们是预分配的。散列区中的所有数据页面是原始页面。0045溢出页面指被创建成保存溢出数据并在原始页面不能保存该数据时与原始页面链接的页面。溢出页面不一定是预分配的。0046参照图3的框图,根据本发明的实施例,高效查询处理开始于动态散列表DHT的创建块300。根据DDL,通过类似于目前针对划分子句使用的的散列群集子句扩展已知的创建表语句导致该创建。例如0047CREATETABLEDATABASEOWNERTABLE_NAMEHASH_CLUST。

36、ER_CLAUSE0048HASH_CLUSTER_CLAUSECONSTRAINTCONSTRAINT_NAME0049UNIQUE|PRIMARYKEY0050HASHCLUSTEREDCOLUMN_NAME,COLUMN_NAME0051WITHHASHVALUESNUMBEROFHASHVALUES0052,SIZEBYTES_PER_ROW说明书CN102362273ACN102362290A7/10页100053,RESERVERATEPERCENTAGE_OF_RESERVE_SPACE0054其中CONSTRAINT引入唯一或主关键字约束的名字,它被在DHT中定义在散列关键字列。

37、上。0055CONSTRANIT_NAME是DHT中散列关键字列上的唯一或主关键字约束的名字。0056UNIQUE约束指定列中的值,使得没有两行具有相同值。此约束不创建任何索引,并且是DHT中的散列关键字强制要求的。0057PRIMARYKEY约束指定列中的值,使得没有两个行具有相同值,并且使得值不可能是NULL。此约束不会创建任何索引,是由DHT中的散列关键字强制要求的。0058HASHCLUSTERED表示该表是DHT。0059COLUMN_NAME在散列群集子句中使用时,指定散列关键字列。用户可以通过列的集合执行散列,这些列可以是任何数据类型。复制的散列关键值是被允许的,但它会阻碍DHT。

38、的性能。0060HASHVALUESNUMBER_OF_HASH_VALUES规定当创建散列表时散列表中不同散列值的数目。0061SIZEBYTES_PER_ROW规定每个数据行将占据的字节的数目例如,数据行的中值大小。如果用户不规定它,则使用数据行的最大大小例如,VARCHAR100将计算为100字节。0062RESERVERATEPERCENTAGE_OF_RESERVE_SPACE规定每个数据页面中保留的以防冲突的空间的百分数,下文将进一步描述。如果用户不规定它,则0空间会保留以用于潜在的冲突数据项目。0063例如,0064CREATETABLEORDER_LINEIDINT,AGEIN。

39、T,NAMEVARCHAR100,0065HASHCLUSTEREDID,AGE0066WITHHASHVALUES10000,0067SIZE30,0068RESERVERATE200069会创建以ID和年龄都是INTEGERINT类型散列化的表。预期的行大小是30字节如果“大小”没有规定,则实际会使用108字节44100,10000个散列值被保留。每个页面中20的空间被保留用于冲突数据项目。如果页面大小是2K,则53个槽会通过散列函数映射到每个数据页面。0070散列表的性能很大程度上取决于如何处理冲突。ASEDHT使用下面两种方法来避免可能由冲突引起的额外I/O。0071首先,在优选实施例。

40、中,数据记录被映射到特定页面而不是页面中的槽。因此,只要原始页面仍然能保存所有数据项目,则不需要分配溢出页面,从而每个页面可以吸收一些冲突,而不使用溢出页面,这还可能使得额外的I/O以用于以后的检索。例如,假设散列列值是“TONY”的第一数据项目被保存在页面中的第一数据槽,散列列值是“TERADA”的第二数据项目具有相同的散列值。如果每个数据项目被映射到特定页面中的特定槽,则第二数据项目会映射到与“TONY”相同的槽。由于第一槽已经被占据,会需要溢出页面P,之后的所有检索需要存取溢出页面P。但是,在本发明中,第二数据项目的插入不会引起溢说明书CN102362273ACN102362290A8/。

41、10页11出页面P的创建,这是由于它将被保存在该页面的第二数据槽中。0072第二,每个原始页面中的某些空间会被保留以存储可能由冲突引入的额外数据项目,用户可以在创建DHT时规定该参数。例如,如果每个原始页面可存储50个数据项目,保留率是20即RESERVERATE20,则只有40个数据项目会映射到一个原始页面。每个原始页面可存储10个可能由冲突引入的另外的数据项目。因此,不太可能创建溢出页面,较少的额外I/O会被用于数据检索。0073在创建DHT时,提供具有极大规模例如GB,吉字节的所分配的存储的预定连续空间。在本发明的示例性实施例中,通过扩展SYBASEASE内的ALTERDATABASE命。

42、令中的页面分配机制使用,得到极大规模分配ELSA,以便避免锁定整个数据库,并保证快速分配极大的连续空间。应该认识到尽管此描述涉及ASE的功能,但其含义是说明性的而不是限制性的。因此,适当时可以采用适于提供所描述的ELSA的技术。更多细节在下文说明。0074在ASE中,系统表“SYSDEVICES”包含用于每个带转储装置、硬盘转储装置、用于数据库的硬盘、用用于数据库的硬盘分区的一行,系统表“SYSUSAGES”包含用于为数据库分配的每个硬盘分配段的一行。ELSA会打开这两个表,找到硬盘装置上为数据库分配的空闲的连续硬盘空间。然后ELSA将该空间标记为被DHT占用。0075ELSA可以比常规页面分。

43、配快很多的原因主要有两个00761由于页面被连续分配,它使用大的I/O子系统。在现代计算机系统中,到连续硬盘空间的顺序I/O可以粗略地比对随机硬盘空间的I/O快1030倍。00772它减少了登录活动。常规页面分配对于每个页面分配需要一个登录记录。在ELSA中,不管分配多少页面例如,上千,上百万等,只有一个登录记录是需要用于页面分配的。可以消除构建登录记录并将它们刷新到硬盘中的大量时间。0078图4说明根据优选实施例在分配空间中DHT的存储布局400的框图表示。页面P0到PN包括预分配散列区,溢出数据页面PI,PJ包括在常规数据区中分配的通常理解为遵循常规数据页面分配代码路径的页面。应该认识到D。

44、HT的存储布局允许与其它对象共享存储区段,不要求排它的区段。0079在操作中,存储DHT400的利用继续进行数据库查询操作图3,块302。利用DHT,不需要对于DML数据操作语言的语法变化,使得用户可以在DHT上使用与常规表相同的DML。优化器图2,266选择是否使用散列函数,这是本领域技术人员很容易理解的。0080通过例子,在一个示例性实施例中,在UPDATE查询操作中,如果在所有的散列关键字列上定义EQUISARGS相等搜索自变量,则目标页面可基于散列函数直接计算。否则,非群集索引如果存在会用来定位目标页面。如果没有非群集索引,则使用表扫描。对于表扫描,表扫描优选从预分配区中的第一页面开始。

45、,所有溢出页面也要访问。而且,UPDATE可能引起原始页面溢出,并且创建溢出页面。如果UPDATE涉及散列关键字列变化,优选数据项目会从原始槽从删除,并基于其新散列值插入到另一槽中。0081对于DHT中的DELETE,如果EQUISARGS是在所有关键字列上定义的,则目标页面会基于散列函数直接计算。原始页面和其溢出页面如果存在会被搜索,相应记录会被删除。即使在删除之后数据页面中没有页面项目,常规区中的溢出数据页面会被去分配DEALLOCATE,而散列区中的原始数据页面不会被去分配。否则,非群集索引会用来定位页面。如果没有非群集索引,则会使用表扫描。说明书CN102362273ACN102362。

46、290A9/10页120082对于精确匹配或点查询操作,如果EQUISARGS是在所有关键字列上定义的,则目标页面会基于散列函数直接计算。原始页面和其溢出页面如果存在会被搜索,相应记录如果存在则会被获取。否则,非群集索引会用来定位页面。如果没有非群集索引,则会使用表扫描。0083对于DHT中的INSERT,目标页面会基于散列函数直接计算。如果存在溢出,则溢出数据页面会在常规数据页面区中分配。而且,如果DHT加载因子达到预定阈值图3的块304是肯定的,INSERT可能会导致需要扩展DHT。“加载因子”作为应用到在一个数据库实例中创建的所有DHT的系统配置变量,并反映已经插入在DHT中的数据项目的。

47、数目除以可存储在DHT中的总数数据项目不包括每个页面的保留空间和用于冲突的溢出页面的阈值。当阈值满足时,需要扩展触发ELSA用于分配适当的存储空间,以及线性散列函数来增加散列表中页面的数目,而不中断数据元素的数据存取块306。0084优选地,插入和ELSA作为两个单独的事务处理被提供,ELSA被作为系统事务处理调度,以便避免如果作为子事务处理则可能会出现的用户不可接受的延迟,这是由于分配空间会随着DHT的增长而花费更多时间。优化通过线性散列得到,其中散列表的扩展是自动发生的。0085现在参照图5A5D,呈现如何可以使用线性散列函数来增大表的一个例子。如已知的,线性散列函数的通常形式由HJKGK。

48、MODN2给出,这里GK是标准散列函数,N是散列区中的初始页面数目,且J0,1,2,并记录散列函数的等级。例如,H0KGKMODN,H1KGKMOD2N。如图5A的例子所示,一开始为散列表分配5个页面P0P4,散列函数是H0KKMOD5,其中K是使用的散列关键字,每个页面可以存储10个记录。考虑08表示插入元素的数目与被分配槽的数目的比率的预定加载因子,当散列表中有40个数据项目时会分配另5个页面,P5P9图5B。为了分开一个页面,引入新函数H1KMOD10。以此方式,对于被H0散列化的散列表中的P0中的每一个,大约一半的数据项目会保持在P0中,一半会在由H1散列化的表的P5中图5C。当前的分。

49、裂指针CP被初始化为0,用来记录下一分裂页面。在DHT使其空间加倍之后,每个随后插入会触发一个页面分裂,直到原始散列表中所有页面已经分裂,CP增加1,如图5D所示。通过根据PAGENOH0K,如果PAGENOCP,否则PAGENOH1K确定页面数目PAGENO,发生定位每个散列关键字。一开始,由于CP0,只使用H0K。在页面分开处理中,使用H0K和H1K两者。在所有页面分开之后,H0K会被H1K取代,CP被重置为0,这是本领域技术人员能很好理解的。0086通过使用线性散列为扩展DHT,DHT提供不中断的服务即不需要周期性的表重新组织用于连续数据库操作图3的块302。这避免了已知的用户必须创建新散列表然后从原始散列表中拷贝数据的那些散列表方法的问题,如果散列表的大小变得比其原始估计大小大,则在该时间中,散列表中的数据暂时是不可存取的,降低了数据服务器的在线时间。但是,在本发明中,线性散列适于提供在线服务而不明显中断数据存取。实验证据表明本发明的动态散列表方法具有比已知的用于精确匹配/点查询操作的B树存取方法显著更好的性能快3倍之多。而且,因为本发明的DHT没有元数据页面,所以高速缓存在存在大的数据集时提供具体数据页面的更大可能性。0087尽管上文已经描述了本发明的各个实施例,但是应该理解它们只是作为例子而不说明书CN102。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1