การแฮชใน DBMS: เทคนิคการแฮชแบบคงที่และไดนามิก

การแฮชใน DBMS คืออะไร

ใน DBMS การแฮชเป็นเทคนิคในการค้นหาตำแหน่งของข้อมูลที่ต้องการบนดิสก์โดยตรงโดยไม่ต้องใช้โครงสร้างดัชนี วิธีการแฮชใช้เพื่อสร้างดัชนีและดึงข้อมูลรายการในฐานข้อมูลเนื่องจากจะค้นหารายการนั้นได้เร็วกว่าโดยใช้คีย์แฮชที่สั้นกว่าแทนที่จะใช้ค่าดั้งเดิม ข้อมูลจะถูกจัดเก็บในรูปแบบของบล็อกข้อมูลซึ่งมีการสร้างที่อยู่โดยใช้ฟังก์ชันแฮชในตำแหน่งหน่วยความจำซึ่งบันทึกเหล่านี้ถูกจัดเก็บเรียกว่า บล็อกข้อมูลหรือที่เก็บข้อมูล.

ทำไมเราถึงต้องมีการแฮช?

ต่อไปนี้คือสถานการณ์ใน DBMS ที่คุณต้องใช้วิธีการ Hashing:

  • สำหรับโครงสร้างฐานข้อมูลขนาดใหญ่ การค้นหาค่าดัชนีทั้งหมดในทุกระดับเป็นเรื่องยาก จากนั้นคุณจะต้องไปถึงบล็อกข้อมูลปลายทางเพื่อรับข้อมูลที่ต้องการ
  • วิธีการแฮชใช้เพื่อสร้างดัชนีและดึงข้อมูลรายการในฐานข้อมูลเนื่องจากจะค้นหารายการนั้นได้เร็วกว่าโดยใช้คีย์แฮชที่สั้นกว่าแทนที่จะใช้ค่าดั้งเดิม
  • การแฮชเป็นวิธีการที่เหมาะสมที่สุดในการคำนวณตำแหน่งโดยตรงของบันทึกข้อมูลบนดิสก์โดยไม่ต้องใช้โครงสร้างดัชนี
  • นอกจากนี้ยังเป็นเทคนิคที่เป็นประโยชน์ในการใช้พจนานุกรมอีกด้วย

คำศัพท์ที่สำคัญในการแฮชชิง

ต่อไปนี้เป็นคำศัพท์สำคัญที่ใช้ใน Hashing:

  • ที่เก็บข้อมูล – ที่เก็บข้อมูลคือตำแหน่งหน่วยความจำที่บันทึกข้อมูลไว้ เป็นที่รู้จักกันว่าหน่วยเก็บข้อมูล
  • คีย์: คีย์ DBMS เป็นคุณลักษณะหรือชุดของคุณลักษณะที่ช่วยให้คุณระบุแถว (tuple) ในความสัมพันธ์ (ตาราง) ซึ่งจะทำให้คุณสามารถค้นหาความสัมพันธ์ระหว่างสองตารางได้
  • ฟังก์ชันแฮช: ฟังก์ชันแฮช คือฟังก์ชันการแมปที่แมปชุดคีย์ค้นหาทั้งหมดไปยังที่อยู่ที่วางบันทึกจริง
  • การตรวจสอบเชิงเส้น – การตรวจวัดเชิงเส้นเป็นช่วงเวลาที่คงที่ระหว่างโพรบ ในวิธีนี้ บล็อกข้อมูลถัดไปที่มีอยู่จะถูกนำมาใช้เพื่อป้อนเรกคอร์ดใหม่ แทนที่จะเขียนทับบนเรกคอร์ดเก่า
  • การตรวจสอบกำลังสอง– ช่วยให้คุณกำหนดที่อยู่บัคเก็ตใหม่ ช่วยให้คุณเพิ่มช่วงเวลาระหว่างโพรบได้โดยการเพิ่มเอาต์พุตต่อเนื่องของพหุนามกำลังสองเข้ากับค่าเริ่มต้นที่กำหนดโดยการคำนวณดั้งเดิม
  • ดัชนีแฮช – เป็นที่อยู่ของบล็อกข้อมูล ฟังก์ชันแฮชอาจเป็นฟังก์ชันทางคณิตศาสตร์แบบง่ายไปจนถึงฟังก์ชันทางคณิตศาสตร์ที่ซับซ้อน
  • Double hashing -Double การแฮชเป็นวิธีการเขียนโปรแกรมคอมพิวเตอร์ที่ใช้ในตารางแฮชเพื่อแก้ไขปัญหาการชนกัน
  • ถังล้น: สภาวะของบัคเก็ตโอเวอร์โฟลว์เรียกว่าการชนกัน นี่เป็นระยะร้ายแรงสำหรับการทำงานแบบคงที่

ประเภทของเทคนิคการแฮช

ส่วนใหญ่มีวิธี/เทคนิคการแฮช SQL สองประเภท:

  1. การแฮชแบบคงที่
  2. การแฮชแบบไดนามิก

การแฮชแบบคงที่

ในการแฮชแบบคงที่ ที่อยู่ที่เก็บข้อมูลผลลัพธ์จะยังคงเหมือนเดิมเสมอ

ดังนั้นหากคุณสร้างที่อยู่เพื่อพูด รหัสนักเรียน = 10 ใช้ฟังก์ชันแฮช ม็อด(3)ที่อยู่บัคเก็ตผลลัพธ์จะเป็นเสมอ 1- ดังนั้น คุณจะไม่เห็นการเปลี่ยนแปลงใดๆ ในที่อยู่บัคเก็ต

ดังนั้นในวิธีการแฮชแบบคงที่นี้ จำนวนที่เก็บข้อมูลในหน่วยความจำจึงคงที่เสมอ

ฟังก์ชันแฮชแบบคงที่

  • การแทรกบันทึก: เมื่อจำเป็นต้องแทรกบันทึกใหม่ลงในตาราง คุณสามารถสร้างที่อยู่สำหรับบันทึกใหม่ได้โดยใช้แฮชคีย์ เมื่อสร้างที่อยู่แล้ว บันทึกจะถูกจัดเก็บไว้ในตำแหน่งนั้นโดยอัตโนมัติ
  • ค้นหา: เมื่อคุณต้องการดึงข้อมูลบันทึก ฟังก์ชันแฮชเดียวกันควรจะเป็นประโยชน์ในการดึงข้อมูลที่อยู่ของบัคเก็ตที่ควรจัดเก็บข้อมูล
  • ลบเรกคอร์ด: เมื่อใช้ฟังก์ชันแฮช คุณสามารถดึงข้อมูลบันทึกที่คุณต้องการลบได้ก่อน จากนั้นคุณสามารถลบบันทึกสำหรับที่อยู่นั้นในหน่วยความจำได้

การแฮชแบบคงที่ยังแบ่งออกเป็น

  1. เปิดการแฮช
  2. ปิดการแฮช

เปิดการแฮช

ในวิธีการเปิดแฮช แทนที่จะเขียนทับอันเก่า บล็อกข้อมูลถัดไปที่มีอยู่จะถูกนำมาใช้เพื่อป้อนบันทึกใหม่ วิธีการนี้เรียกอีกอย่างว่าการตรวจสอบเชิงเส้น

ตัวอย่างเช่น A2 คือระเบียนใหม่ที่คุณต้องการแทรก ฟังก์ชันแฮชสร้างที่อยู่เป็น 222 แต่ค่าอื่นบางส่วนถูกครอบครองแล้ว นั่นเป็นสาเหตุที่ระบบค้นหาที่เก็บข้อมูลถัดไป 501 และกำหนด A2 ให้กับมัน

เปิดการแฮช
Open Hash ทำงานอย่างไร

ปิดการแฮช

ในวิธีการปิดแฮช เมื่อบัคเก็ตเต็ม บัคเก็ตใหม่จะถูกจัดสรรสำหรับแฮชเดียวกัน และผลลัพธ์จะถูกเชื่อมโยงหลังจากแฮชก่อนหน้า

การแฮชแบบไดนามิก

การแฮชแบบไดนามิกเสนอกลไกในการเพิ่มและลบที่เก็บข้อมูลแบบไดนามิกและตามความต้องการ ในการแฮชนี้ ฟังก์ชันแฮชจะช่วยคุณสร้างค่าจำนวนมาก

ความแตกต่างระหว่างการจัดทำดัชนีที่สั่งและการแฮช

ด้านล่างนี้คือข้อแตกต่างที่สำคัญระหว่างการจัดทำดัชนีและการแฮช

พารามิเตอร์ การจัดทำดัชนีคำสั่งซื้อ hashing
การจัดเก็บที่อยู่ ที่อยู่ในหน่วยความจำจะถูกจัดเรียงตามค่าคีย์ที่เรียกว่าคีย์หลัก ที่อยู่จะถูกสร้างขึ้นเสมอโดยใช้ฟังก์ชันแฮชกับค่าคีย์
ประสิทธิภาพ อาจลดลงได้เมื่อข้อมูลในไฟล์แฮชเพิ่มขึ้น เนื่องจากจะจัดเก็บข้อมูลในรูปแบบเรียงลำดับเมื่อมีการดำเนินการใดๆ (แทรก/ลบ/อัปเดต) ซึ่งจะทำให้ประสิทธิภาพลดลง ประสิทธิภาพของการแฮชจะดีที่สุดเมื่อมีการเพิ่มและลบข้อมูลอย่างต่อเนื่อง อย่างไรก็ตาม เมื่อฐานข้อมูลมีขนาดใหญ่ การจัดระเบียบไฟล์แฮชและการบำรุงรักษาจะมีต้นทุนสูงกว่า
ใช้สำหรับการ แนะนำให้ใช้สำหรับการดึงข้อมูลเป็นช่วง ซึ่งหมายความว่าเมื่อใดก็ตามที่มีการดึงข้อมูลสำหรับช่วงใดช่วงหนึ่ง วิธีนี้ถือเป็นตัวเลือกที่เหมาะสมที่สุด นี่เป็นวิธีการที่เหมาะสมที่สุดเมื่อคุณต้องการดึงข้อมูลบันทึกเฉพาะตามคีย์การค้นหา อย่างไรก็ตาม จะทำงานได้ดีเมื่อฟังก์ชันแฮชอยู่บนคีย์ค้นหาเท่านั้น
การจัดการหน่วยความจำ จะมีบล็อกข้อมูลที่ไม่ได้ใช้งานจำนวนมากเนื่องจากการดำเนินการลบ/อัปเดต บล็อกข้อมูลเหล่านี้ไม่สามารถปล่อยให้กลับมาใช้ซ้ำได้ ดังนั้นจึงต้องบำรุงรักษาหน่วยความจำเป็นประจำ ในวิธีการแฮชแบบสแตติกและไดนามิก หน่วยความจำจะได้รับการจัดการอยู่เสมอ นอกจากนี้ บัคเก็ตโอเวอร์โฟลว์ยังได้รับการจัดการอย่างสมบูรณ์แบบเพื่อขยายการแฮชแบบคงที่

การชนกันคืออะไร?

การชนกันของแฮชคือสถานะที่แฮชผลลัพธ์จากข้อมูลตั้งแต่สองข้อมูลขึ้นไปในชุดข้อมูล แมปสถานที่เดียวกันในชุดข้อมูลอย่างไม่ถูกต้อง ตารางแฮช.

จะจัดการกับ Hashing Collision ได้อย่างไร?

มีสองเทคนิคที่คุณสามารถใช้เพื่อหลีกเลี่ยงการชนกันของแฮช:

  1. รีแฮช: วิธีการนี้จะเรียกใช้ฟังก์ชันแฮชรอง ซึ่งจะใช้อย่างต่อเนื่องจนกว่าจะพบช่องที่ว่าง ซึ่งควรวางบันทึก
  2. ผูกมัด: วิธีการผูกมัดจะสร้างรายการที่เชื่อมโยงของรายการที่มีคีย์แฮชเป็นค่าเดียวกัน วิธีการนี้จำเป็นต้องมีฟิลด์ลิงก์เพิ่มเติมไปยังแต่ละตำแหน่งตาราง

สรุป

  • In DBMSการแฮชเป็นเทคนิคในการค้นหาตำแหน่งของข้อมูลที่ต้องการบนดิสก์โดยตรงโดยไม่ต้องใช้โครงสร้างดัชนี
  • วิธีการแฮชใช้เพื่อสร้างดัชนีและดึงข้อมูลรายการในฐานข้อมูลเนื่องจากจะค้นหารายการนั้นได้เร็วกว่าโดยใช้คีย์แฮชที่สั้นกว่าแทนที่จะใช้ค่าดั้งเดิม
  • ที่เก็บข้อมูล, คีย์, ฟังก์ชันแฮช, การตรวจสอบเชิงเส้น, การตรวจสอบกำลังสอง, ดัชนีแฮช, Double Hashing, Bucket Overflow เป็นคำศัพท์สำคัญที่ใช้ในการแฮช
  • วิธีการแฮชสองประเภทคือ 1) การแฮชแบบคงที่ 2) การแฮชแบบไดนามิก
  • ในการแฮชแบบคงที่ ที่อยู่ที่เก็บข้อมูลผลลัพธ์จะยังคงเหมือนเดิมเสมอ
  • การแฮชแบบไดนามิกเสนอกลไกในการเพิ่มและลบที่เก็บข้อมูลแบบไดนามิกและตามความต้องการ
  • ตามลำดับ ที่อยู่การจัดทำดัชนีในหน่วยความจำจะถูกจัดเรียงตามค่าวิกฤต ในขณะที่ที่อยู่การแฮชจะถูกสร้างขึ้นเสมอโดยใช้ฟังก์ชันแฮชกับค่าคีย์
  • การชนกันของแฮชคือสถานะที่แฮชผลลัพธ์จากข้อมูลตั้งแต่สองข้อมูลขึ้นไปในชุดข้อมูล แมปตำแหน่งเดียวกันในตารางแฮชอย่างไม่ถูกต้อง
  • การแฮชซ้ำและการผูกมัดเป็นสองวิธีที่ช่วยให้คุณหลีกเลี่ยงการชนกันของแฮช