首页 > 其他分享 >CMU15-445:Lecture #07 笔记

CMU15-445:Lecture #07 笔记

时间:2023-01-27 18:00:54浏览次数:55  
标签:DBMS 哈希 445 key Lecture 数据结构 Data CMU15 Hashing

Lecture #07: Hash Tables


1. Data Structures

  • DBMS为系统内部的许多不同部分使用各种数据结构。例子如下:
    • Internal Meta-Data:
      用来跟踪数据库和系统状态信息的数据。
    • Core Data Storage:
      数据结构被用来作为数据库中tuple的基础存储。
    • Temporary Data Structures:
      DBMS可以在处理查询的同事建立数据结构以加快执行速度。(如:用于链接的哈希表)
    • Table Indices:
      辅助数据结构使其更容易找到特定的tuple
  • 在为DBMS实现数据结构的时候,有两个主要的设计决定需要考虑。
    1. Data Organization:
      我们需要弄清楚如何布局内存,以及在数据结构内存储哪些信息,以便高效访问。
    2. Concurrency:
      我们还需要考虑如何使多个线程访问数据结构而不造成问题。

2. Hash Table

  • 哈希表实现了一个关联数组的抽象数据类型,将key映射到value。提供了平均\(O(1)\)的操作复杂度, 最坏为\(O(n)\) ,以及\(O(n)\)的存储复杂度。当然也需要优化

    哈希表的实现包含2部分:

    • Hash Function:
      trade off -> fast execution & collision
    • Hashing Scheme:
      如何处理collisions?
      trade off -> memory allocate & execute additional instructions

3. Hash Functions

  • 输进去一个key,出来一个代表这个key的整数。函数的输出是确定的。
  • 数据库用到的哈希函数不需要那么复杂,因为我们不需要担心保护这些key。而且这些函数主要由DBMS内部使用,因此信息不会泄露到系统之外。一般来说,关心哈希函数速度和collision就行了。

4. Static Hashing Schemes

  • 静态散列方案是指散列表的大小是固定的。即:如果DBMS哈希表存储空间用完了,就必须从头开始重建一个更大的哈希表。通畅为原大小的两倍。

  • 为了减小空间浪费,避免collisions很重要。一般我们都设置为期望存放key的大小的两倍容量。

    1. The number of elements is known ahead of time.
    2. Keys are unique
    3. There exists a perfect hash function.

    因此我们需要适当的选择哈希函数和哈希模式

4.1 Linear Probe Hashing

  • 最基础的哈希策略,也叫开放地址法。太简单了这里省略不翻译了。
  • 删除元素需要一定的技巧。因为如果是简单删除,然后将下面的移上一位的话,如果是循环表,可能会让上面的hash元素失效。
    解决方案:
    • tombstones:墓碑法,标记这里删除了。缺点是浪费空间
    • 删除元素后面相邻的移动一位,去填满删除的元素。但要注意,移动的entry必须是原来移动过的,才不会导致前面的hash失效。这种方法一般不会用。
  • Non-unique Keys:
    同样的key可能对应很多value的时候的方法:
    • Seperate Linked List: 链表存储
    • Redundant Keys:更常见的方法,在表中多次存储一个键,用线性探测法

4.2 Robin Hood Hashing

  • 线性探测法的扩展。旨在减少每个key与它们在哈希表中的最佳位置的最大距离。即,从更rich的key中偷取slot,并交给poor的key。
  • 在这个策略中,每个条目也记录了它们与最佳位置的距离,每次插入的时候,如果被插入的key与它们在当前位置的最佳位置的距离,比当前条目的距离更远,就替换当前条目,并继续尝试在表中的更远位置插入旧条目。
  • 例子:
    参考原PPT

4.3 Cuckoo Hashing

  • 维持多个哈希表。来调整key
  • 例子:
    参考原PPT

5. Dynamic Hashing Schemes

  • 静态哈希不能调整大小,不太行。所以才DBMS一般都用动态哈希。可以rebuild表,如果需要grow / shrink size。

5.1 Chained Hashing

  • 常用的结构。直接用链表。

5.2 Extendible Hashing

  • 这个结构在Project-1中有。做完项目后体会更深刻。
  • 详细请参考:extendible hashing

5.3 Linear Hashing

  • 当一个桶溢出的时候,这个方案并不立刻分割,而是保持一个分割指针,跟踪下一个要分割的桶。无论这个指针是否指向一个溢出的桶,DBMS都会进行分割。溢出的标准由设计者决定。感觉跟Extendible Hashing的操作挺像的。
  • 例子:
    图太多懒得截图了。
    参考原PPT

标签:DBMS,哈希,445,key,Lecture,数据结构,Data,CMU15,Hashing
From: https://www.cnblogs.com/orangestar/p/17069118.html

相关文章

  • cs231n学习笔记——Lecture7 Training Neural Networks
    该博客主要用于个人学习记录,部分内容参考自:CS231n笔记七:训练神经网络3(优化方法)、局部最小值(localminima)和鞍点(saddlepoint)一、更好地优化FancierOptimization1......
  • cs231n学习笔记——Lecture11 Detection and Segmentation
    该博客主要用于个人学习记录,部分内容参考自:CS231n笔记九:图像目标检测和图像分割、2017CS231n笔记_S11分割,定位,检测一、语义分割SemanticSegmentation目标:输入图像,并对......
  • cs231n学习笔记——Lecture10 Recurrent Neural Network
    该博客主要用于个人学习记录,部分内容参考自:2017CS231n笔记_S10循环神经网络、CS231n笔记十:循环神经网络一、循环神经网络(RecurrentNeuralNetworks,RNN)1、RNN的基本结......
  • cs231n学习笔记——Lecture9 CNN Architecture
    该博客主要用于个人学习记录,部分内容参考自:[Lecture9]CNNArchitectures(CNN架构)、CNNArchitecture1、LeNetLeNet在数字识别领域的应用方面取得了成功1、AlexNet(......
  • CMU15-445:Project #1 - Buffer Pool
    Project#1-BufferPool本文是对CMU15-445课程第1个项目的一个粗略总结和翻译。仅供个人(M1kanN)复习使用。1.Overview本学期要求为BusTubDBMS实现一个新的面......
  • 4454. 未初始化警告
    4454.未初始化警告一个未经初始化的变量,里面存储的值可能是任意的。因此直接使用未初始化的变量,比如将其赋值给另一个变量,并不符合一般的编程逻辑。代码中出现这种情......
  • CMU 15-445 | Lecture 04 Database Storage II 学习
    行存储用OLTP(On-lineTransactionProcessing),列存储用OLAP(On-lineAnalyticalProcessing)。大多数数据库是行存储。行存储的读写较方便,因此工业上可以采取混合形式......
  • CMU 15-445 | Lecture 03 Database Storage I 学习
    看下来的收获:数据库存储类似操作系统的内存管理。设计数据库最好不使用os内置的内存管理机制mmap,自定义能获取更好的性能。链表形式不能直接应用在数据连接上,但是思想......
  • 告警日志中报错ORA-07445 kkqstcrf
    问题描述:数据库例行巡检时发现告警日志中报错ORA-07445kkqstcrf,如下所示:数据库:oracle11.2.0.1告警日志:SunDec2522:08:222022BeginautomaticSQLTuningAdvisorrun......
  • cs231n学习笔记——lecture6 Training Neural Networks
    该博客主要用于个人学习记录,部分内容参考自:[基础]斯坦福cs231n课程视频笔记(三)训练神经网络、【cs231n笔记】10.神经网络训练技巧(上)、CS231n学习笔记-训练神经网络、......