DBMS 中的散列:静态和动态散列技术

DBMS 中的散列是什么?

在 DBMS 中,散列是一种无需使用索引结构即可直接在磁盘上搜索所需数据位置的技术。散列方法用于索引和检索数据库中的项目,因为使用较短的散列键搜索特定项目比使用其原始值更快。数据以数据块的形式存储,其地址是通过在存储这些记录的内存位置(称为 数据块或数据桶.

为什么我们需要哈希?

以下是 DBMS 中需要应用哈希方法的情况:

  • 对于庞大的数据库结构,很难搜索所有级别的所有索引值,然后需要到达目标数据块才能获取所需的数据。
  • 散列方法用于索引和检索数据库中的项目,因为使用较短的散列键而不是使用其原始值来搜索特定项目的速度更快。
  • 散列是一种无需使用索引结构即可计算磁盘上数据记录的直接位置的理想方法。
  • 这也是实现字典的一个有用技术。

哈希中的重要术语

以下是哈希算法中使用的一些重要术语:

  • 数据桶 – 数据桶是存储记录的内存位置。它也被称为存储单元。
  • 主要:一个 DBMS 密钥 是一个属性或一组属性,可帮助您识别关系(表)中的行(元组)。这允许您查找两个表之间的关系。
  • 哈希函数:哈希函数是一种映射函数,它将所有搜索键集合映射到实际记录所在的地址。
  • 线性探测 – 线性探测是探测之间的固定间隔。在这种方法中,下一个可用的数据块用于输入新记录,而不是覆盖旧记录。
  • 二次探测– 它可以帮助您确定新的存储桶地址。它可以帮助您通过将二次多项式的连续输出添加到原始计算给出的起始值来添加探测之间的间隔。
  • 哈希索引 – 它是数据块的地址。哈希函数可以是简单的数学函数,也可以是复杂的数学函数。
  • Double 哈希 –Double 散列是哈希表中用来解决冲突问题的一种计算机编程方法。
  • 桶溢出:桶溢出的情况称为碰撞。这是任何静态函数必须起作用的致命阶段。

哈希技术的类型

SQL 哈希方法/技术主要有两种类型:

  1. 静态哈希
  2. 动态散列

静态哈希

在静态哈希算法中,最终的数据桶地址将始终保持不变。

因此,如果你生成一个地址,比如 学生 ID = 10 使用哈希函数 修改(3),最终的存储桶地址将始终是 1。因此,您不会看到存储桶地址有任何变化。

因此,在这种静态哈希方法中,内存中的数据桶数量始终保持不变。

静态哈希函数

  • 插入记录:当需要将新记录插入到表中时,可以使用其哈希键为新记录生成一个地址。生成地址后,记录将自动存储在该位置。
  • 搜索:当您需要检索记录时,相同的哈希函数应该有助于检索应存储数据的存储桶的地址。
  • 删除记录:使用哈希函数,您可以先获取要删除的记录。然后,您可以删除内存中该地址的记录。

静态哈希进一步分为

  1. 打开哈希
  2. 关闭哈希。

开放哈希

在开放散列方法中,不是覆盖旧数据块,而是使用下一个可用数据块来输入新记录,这种方法也称为线性探测。

例如,A2 是您要插入的新记录。哈希函数生成的地址为 222。但是它已被其他值占用。这就是系统查找下一个数据桶 501 并将 A2 分配给它的原因。

开放哈希
Open Hash 的工作原理

关闭哈希

在封闭式哈希方法中,当桶已满时,将为相同的哈希分配一个新桶,并将结果链接到前一个桶之后。

动态散列

动态哈希提供了一种机制,可以根据需要动态地添加和删除数据桶。在这种哈希中,哈希函数可帮助您创建大量值。

有序索引和哈希之间的区别

以下是索引和哈希之间的主要区别

参数 订单索引 哈希
地址存储 内存中的地址按照一个键值排序,这个键值称为主键 地址总是使用键值上的哈希函数生成。
性能 当哈希文件中的数据增加时,它会降低。因为当执行任何(插入/删除/更新)操作时,它会以排序形式存储数据,这会降低其性能。 当数据不断增加和删除时,哈希算法的性能会最好。但是,当数据库很大时,哈希文件的组织和维护成本会更高。
用于 适合数据范围检索 - 这意味着每当有特定范围的检索数据时,此方法都是理想的选择。 当您想根据搜索关键字检索特定记录时,这是一种理想的方法。但是,只有当哈希函数位于搜索关键字上时,它才会表现良好。
内存管理 由于删除/更新操作,会产生大量未使用的数据块。这些数据块无法被释放以供重新使用。这就是为什么需要定期维护内存的原因。 在静态和动态哈希方法中,内存始终受到管理。桶溢出也得到完美处理,以扩展静态哈希。

什么是碰撞?

哈希冲突是指数据集中两个或多个数据生成的哈希错误地映射到同一位置的情况。 哈希表.

如何处理哈希碰撞?

有两种技术可以用来避免哈希冲突:

  1. 重新散列:此方法调用辅助哈希函数,该函数不断应用,直到找到应放置记录的空槽。
  2. 链接:链接方法构建一个链接列表,其中的项目的键哈希值相同。此方法需要每个表位置都有一个额外的链接字段。

结语

  • In DBMS,散列是一种不使用索引结构而直接在磁盘上搜索所需数据位置的技术。
  • 散列方法用于索引和检索数据库中的项目,因为使用较短的散列键而不是使用其原始值来搜索特定项目的速度更快。
  • 数据存储区、密钥、哈希函数、线性探测、二次探测、哈希索引、 Double 哈希、桶溢出是哈希算法中的重要术语
  • 两种类型的散列方法是 1)静态散列 2)动态散列
  • 在静态哈希算法中,最终的数据桶地址将始终保持不变。
  • 动态散列提供了一种机制,可以根据需要动态地添加和删除数据存储桶。
  • 按顺序,内存中的索引地址根据关键值排序,而散列地址总是使用键值上的散列函数生成。
  • 哈希冲突是指数据集中两个或多个数据的结果哈希错误地映射到哈希表中的同一位置的状态。
  • 重新散列和链接是两种可以帮助您避免散列冲突的方法。