动态(dynamic)和静态哈希(static hashing)的区别

在数据结构中,哈希是一种使用称为哈希函数的特殊函数将大量数据项映射到较小表的技术,以实现更快的访问。有时数据结构非常庞大,几乎不可能通过所有级别搜索所有索引值来访问最终的数据块。这就是散列的用武之地。它所做的是直接计算数据记录在磁盘上的位置,而不使用索引结构。每个记录的地址是使用哈希算法确定的,该算法将主键值转换为记录地址。因此,有两类可用的索引使用哈希函数-动态哈希和静态哈希。...

在数据结构中,哈希是一种使用称为哈希函数的特殊函数将大量数据项映射到较小表的技术,以实现更快的访问。有时数据结构非常庞大,几乎不可能通过所有级别搜索所有索引值来访问最终的数据块。这就是散列的用武之地。它所做的是直接计算数据记录在磁盘上的位置,而不使用索引结构。每个记录的地址是使用哈希算法确定的,该算法将主键值转换为记录地址。因此,有两类可用的索引使用哈希函数-动态哈希和静态哈希。

什么是静态哈希(static hashing)?

静态哈希是一种哈希方法,其中为文件分配固定数量的bucket来存储记录。存储桶的数量是预先分配的,因此当提供搜索键值时,哈希函数总是计算相同的地址。一个文件的页面可以被看作是一个bucket集合,包含一个主页面和额外的溢出页面。对于静态哈希,定位机制是哈希函数,不涉及数据结构。在这里,索引项是随机的,每个bucket中的索引项的数量大致相同。然而,这项计划也有某些缺点。如果bucket的初始数目太小,文件会增长,那么性能会因为bucket溢出而下降。另一方面,如果规模过大,则会为预期增长分配大量空间,并浪费大量空间。

什么是动态哈希(dynamic hashing)?

另一方面,动态哈希是一种用于克服静态哈希(如桶溢出)限制的技术。与静态哈希不同,它允许桶的数量动态变化,以适应数据库文件的增长或收缩。它允许根据需要修改hash函数,这对于大小不断增长和缩小的数据库是很好的。在添加和删除行时,它会相应地更改bucket的数量,以最小化bucket的溢出。它将溢出记录的处理动态地嵌入到主地址空间中,以避免溢出存储桶的句柄管理。动态哈希的两种常用形式是线性哈希和可扩展哈希。可扩展哈希是一种流行的技术,它通过将一个bucket一分为二来处理bucket溢出,在新旧bucket之间分发记录。线性哈希是另一种流行的动态哈希形式,它允许哈希文件通过分配新的存储桶来动态地增长或收缩。

动态和静态散列的区别

技术

–静态哈希是一种哈希方法,其中为文件分配固定数量的存储桶以存储记录,这意味着文件使用的哈希函数中存储桶地址的数量是固定的。在这里,索引项是随机的,每个bucket中的索引项的数量大致相同。另一方面,动态哈希允许存储桶的数量动态变化,以适应数据库文件的增长或收缩。

演出

–如果bucket的初始数目太小并且文件增长,那么性能会因为bucket溢出而下降。另一方面,如果规模过大,则会为预期增长分配大量空间,并浪费大量空间。另一方面,动态散列允许动态修改散列函数,这有利于数据库大小的增长和收缩。在添加和删除行时,它会相应地更改bucket的数量,以最小化bucket的溢出。

实施

–静态哈希使用固定的哈希函数将所有可能的搜索键值集划分为子集,然后将每个子集映射到一个bucket。另一方面,动态哈希使用映射的第二阶段来确定与某个搜索键值相关联的bucket。可扩展散列和线性散列的映射方式非常不同。

动态与静态散列:比较图

总结

静态哈希中存储桶的数量是固定的,具有不同搜索关键字值的记录指向同一个存储桶,在这种情况下可能会发生冲突。如果需要在具有多个键的bucket中查找特定记录,则必须按顺序搜索整个bucket。有时候,一个bucket包含的记录比它能包含的要多。因此,在这种情况下,必须调用一些溢出处理技术。在这种情况下,将使用动态哈希,它使用一个动态更改的函数,该函数允许分配的bucket数随着行的添加和删除而在大小上增长和收缩。它通过将溢出记录动态嵌入主地址来显式处理bucket的溢出。

  • 发表于 2021-06-26 19:10
  • 阅读 ( 496 )
  • 分类:IT

你可能感兴趣的文章

静止的(static)和动态内存分配(dynamic memory allocation)的区别

关键区别–静态内存分配与动态内存分配 在编程中,有必要存储计算数据。这些数据存储在存储器中。在计算机程序设计中用来存储数据的存储器被称为变量。变量具有特定的数据类型。因此,分配内存来运行程序。内存可...

  • 发布于 2020-10-11 12:09
  • 阅读 ( 1015 )

静态绑定(static binding)和动态绑定(dynamic binding)的区别

关键区别–静态绑定与动态绑定 Java和C等编程语言支持面向对象编程(OOP)。它允许使用对象构建软件。软件系统或程序中有许多对象。这些对象具有属性和方法。属性描述特征。方法描述对象可以执行的操作。数据使用方...

  • 发布于 2020-10-19 17:49
  • 阅读 ( 425 )

静止的(static)和动态特性(dynamic characters)的区别

静态与动态特性 在文学领域,静态人物和动态人物是两个重要的话题,静态人物和动态人物之间存在着许多不同之处,使得它们易于识别。那些养成阅读习惯的人经常在小说、短篇小说等中遇到各种各样的人物,这些人物并...

  • 发布于 2020-10-24 16:55
  • 阅读 ( 796 )

静止的(static)和动态路由(dynamic routing)的区别

静态与动态路由 静态路由和动态路由的区别在于路由条目进入系统的方式。计算机网络中的路由是指在计算机网络中正确地转发数据包,使数据包最终到达正确的目的地的过程。路由主要有静态路由和动态路由两种类型。在...

  • 发布于 2020-10-29 09:42
  • 阅读 ( 442 )

动态(dynamic)和静态ip(static ip)的区别

动态IP是指每次连接到网络时都会发生变化的IP,而静态IP是指无论连接多少次或从网络断开多少次都保持不变的IP。您是否有静态或动态IP地址取决于所述网络的管理员。每次连接到网络时,动态IP都会发生变化;这是一种在连接...

  • 发布于 2021-06-22 11:51
  • 阅读 ( 393 )

静态恶意软件分析(static malware analysis)和动态恶意软件分析(dynamic malware analysis)的区别

...恶意软件检测和分析的方法有两种:静态恶意软件分析和动态恶意软件分析。静态分析涉及检查给定的恶意软件样本而不实际运行它,而动态分析是在受控环境中系统地进行的。我们对两者进行了公正的比较,以帮助您更好地理...

  • 发布于 2021-06-25 17:38
  • 阅读 ( 436 )

动态拉伸(dynamic stretching)和静态拉伸(static stretching)的区别

...拉伸是如此重要的一部分,它被分为两个不同的拉伸组。动态拉伸和静态拉伸。尽管这两个术语都是指伸展运动,但在体育项目的训练中,由于不同的原因,在不同的时间使用不同的术语。动态拉伸更具活力和身体吸引力。静态...

  • 发布于 2021-06-26 00:09
  • 阅读 ( 579 )

静止的(static)和动态平衡(dynamic equilibrium)的区别

主要差异静态(main difference static) vs. 动态平衡(dynamic equilibrium) 在化学中,“平衡”是指化学反应的一种状态,在这种状态下,从外部的角度看,反应物和产物混合物的成分不能发生进一步的变化。然而,分析混合物内部...

  • 发布于 2021-06-27 09:49
  • 阅读 ( 574 )

静止的(static)和动态网站(dynamic website)的区别

...发中使用的三种基本语言。网站可以是静态的,也可以是动态的。静态网站是没有自定义编码和数据库的基本网站,而***站显示不同的内容,它们更复杂,更具交互性。 覆盖的关键领域 1.什么是静态网站-定义,功能2.什么是***...

  • 发布于 2021-07-01 01:36
  • 阅读 ( 644 )

静止的(static)和动态ip(dynamic ip address)的区别

静态IP地址和动态IP地址的主要区别在于,静态IP地址是由网络管理员手动分配给设备的固定地址,而动态IP地址是由DHCP服务器自动分配给设备的地址。 计算机网络由各种设备组成,如台式机、笔记本电脑、服务器、路由器和交...

  • 发布于 2021-07-01 03:17
  • 阅读 ( 816 )
S35187235063
S35187235063

0 篇文章

相关推荐