DBMS 中的哈希:静态和动态哈希技术
什么是 DBMS 中的哈希处理?
在 DBMS 中,哈希处理是一种无需使用索引结构即可直接在磁盘上搜索所需数据位置的技术。哈希方法用于数据库中的索引和检索项,因为使用较短的哈希键而不是其原始值来搜索特定项更快。数据以数据块的形式存储,其地址是通过在存储这些记录的内存位置应用哈希函数生成的,称为**数据块或数据存储区**。
为什么我们需要哈希处理?
在 DBMS 中,您需要应用哈希处理方法的场景如下:
- 对于庞大的数据库结构,通过所有级别搜索所有索引值非常困难,然后您需要到达目标数据块以获取所需数据。
- 哈希方法用于数据库中的索引和检索项,因为使用较短的哈希键而不是其原始值来搜索特定项更快。
- 哈希处理是一种理想的方法,无需使用索引结构即可计算数据记录在磁盘上的直接位置。
- 它也是实现字典的有用技术。
哈希处理中的重要术语
以下是哈希处理中使用的重要术语:
- 数据存储区 – 数据存储区是存储记录的内存位置。它也称为存储单元。
- 键:DBMS 键是属性或属性集,有助于您识别关系(表)中的行(元组)。这允许您找到两个表之间的关系。
- 哈希函数:哈希函数是一个映射函数,它将所有搜索键集映射到实际记录所在的位置。
- 线性探测 – 线性探测是探测之间的固定间隔。在此方法中,下一个可用数据块用于输入新记录,而不是覆盖旧记录。
- 二次探测 – 它有助于您确定新的存储区地址。它通过在原始计算给定的起始值上添加二次多项式的连续输出来帮助您在探测之间添加间隔。
- 哈希索引 – 它是数据块的地址。哈希函数可以是一个简单的数学函数,也可以是复杂的数学函数。
- 双重哈希 – 双重哈希是一种计算机编程方法,用于哈希表中以解决哈希冲突问题。
- 存储区溢出:存储区溢出的情况称为冲突。这对于任何静态哈希函数都是致命阶段。
哈希处理技术类型
SQL 主要有两种哈希方法/技术
- 静态哈希
- 动态哈希
静态哈希
在静态哈希中,生成的存储区地址将始终保持不变。
因此,如果您使用哈希函数 **mod(3)** 为 **Student_ID = 10** 生成地址,则生成的存储区地址将始终为 **1**。因此,您不会看到存储区地址有任何变化。
因此,在此静态哈希方法中,内存中的数据存储区数量始终保持恒定。
静态哈希函数
- 插入记录:当需要将新记录插入表中时,您可以使用其哈希键为新记录生成地址。生成地址后,记录会自动存储在该位置。
- 搜索:当您需要检索记录时,相同的哈希函数应该有助于检索应存储数据的存储区地址。
- 删除记录:使用哈希函数,您可以首先获取您想要删除的记录。然后您可以删除内存中该地址的记录。
静态哈希进一步分为
- 开放式哈希
- 封闭式哈希。
开放式哈希
在开放式哈希方法中,不是覆盖旧记录,而是使用下一个可用数据块来输入新记录。此方法也称为线性探测。
例如,A2 是您想要插入的新记录。哈希函数生成的地址是 222。但它已被其他值占用。这就是为什么系统会查找下一个数据块 501 并将其分配给 A2。
封闭式哈希
在封闭式哈希方法中,当存储区已满时,会为相同的哈希分配一个新的存储区,并将结果链接到前一个之后。
动态哈希
动态哈希提供了一种机制,可以根据需要动态地添加和删除数据存储区。在此哈希中,哈希函数有助于您创建大量值。
有序索引和哈希处理的区别
以下是索引和哈希处理之间的主要区别
参数 | 有序索引 | 哈希处理 |
---|---|---|
存储地址 | 内存中的地址根据称为主键的键值进行排序 | 地址始终通过对键值应用哈希函数来生成。 |
性能 | 当哈希文件中的数据增加时,它会减少。因为它在进行任何(插入/删除/更新)操作时以排序形式存储数据,这会降低其性能。 | 当数据持续添加和删除时,哈希处理的性能最佳。但是,当数据库很大时,哈希文件组织及其维护将更昂贵。 |
用途 | 首选用于数据的范围检索——这意味着每当检索特定范围内的数据时,此方法都是理想的选择。 | 这是您根据搜索键检索特定记录的理想方法。但是,只有当哈希函数作用于搜索键时,它的性能才好。 |
内存管理 | 由于删除/更新操作,会有许多未使用的空闲数据块。这些数据块无法释放以供重用。因此,需要定期维护内存。 | 在静态和动态哈希方法中,内存始终得到管理。存储区溢出也得到了完美处理,以扩展静态哈希。 |
什么是冲突?
哈希冲突是指数据集中两个或多个数据的生成哈希错误地映射到哈希表中的同一位置。
如何处理哈希冲突?
您可以使用两种技术来避免哈希冲突
- 重哈希:此方法调用辅助哈希函数,该函数会连续应用,直到找到一个空槽来放置记录。
- 链接:链接方法构建一个链表,其中包含哈希到相同值的项。此方法要求每个表位置都有一个额外的链接字段。
摘要
- 在DBMS中,哈希处理是一种无需使用索引结构即可直接在磁盘上搜索所需数据位置的技术。
- 哈希方法用于数据库中的索引和检索项,因为使用较短的哈希键而不是其原始值来搜索特定项更快。
- 数据存储区、键、哈希函数、线性探测、二次探测、哈希索引、双重哈希、存储区溢出是哈希处理中使用的一些重要术语。
- 哈希处理的两种方法是:1)静态哈希 2)动态哈希
- 在静态哈希中,生成的存储区地址将始终保持不变。
- 动态哈希提供了一种机制,可以根据需要动态地添加和删除数据存储区。
- 在有序索引中,内存中的地址是根据关键值排序的,而在哈希处理中,地址始终是通过对键值应用哈希函数生成的。
- 哈希冲突是指数据集中两个或多个数据的生成哈希错误地映射到哈希表中的同一位置。
- 重哈希和链接是帮助您避免哈希冲突的两种方法。