Random file organization
Download
1 / 31

การจัดระเบียบแฟ้มแบบสุ่ม Random file organization - PowerPoint PPT Presentation


  • 68 Views
  • Uploaded on

การจัดระเบียบแฟ้มแบบสุ่ม Random file organization. โดยนายบุญค้ำ จุลเจือ วิทยาลัยชุมชนตราด. นิยามและการประยุกต์. วิธีการจัดระเบียบแฟ้มเป็นแบบเข้าถึงระเบียนโดยตรง เราเรียกว่า การจัดระเบียบแฟ้มแบบสุ่ม Random file organization.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' การจัดระเบียบแฟ้มแบบสุ่ม Random file organization' - clinton-mcbride


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Random file organization

การจัดระเบียบแฟ้มแบบสุ่มการจัดระเบียบแฟ้มแบบสุ่มRandom file organization

โดยนายบุญค้ำ จุลเจือ วิทยาลัยชุมชนตราด


นิยามและการประยุกต์การจัดระเบียบแฟ้มแบบสุ่ม

  • วิธีการจัดระเบียบแฟ้มเป็นแบบเข้าถึงระเบียนโดยตรง เราเรียกว่า การจัดระเบียบแฟ้มแบบสุ่ม Random file organization

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

  • เราสามารถหาตำแหน่งที่เก็บจากค่าไพรมารีคีย์


  • เนื่องจากการเข้าถึงแฟ้มข้อมูลแบบสุ่ม สามารถเข้าถึงข้อมูลโดยตรงได้รวดเร็ว ดังนั้นแฟ้มสุ่มจึงเหมาะสำหรับงาน Interactive processing (การประมวลผลแบบโต้ตอบ) ตัวอย่างเช่นระบบธนาคารออนไลน์

  • ข้อสังเกต

  • 1) การเข้าถึงระเบียนในแฟ้มสุ่ม สามาตรงไปยังระเบียนที่ต้องการ

  • 2) ระเบียนแฟ้มแบบสุ่มสามารถถูกเรียกใช้ ปรับปรุงค่าแล้วบันทึกกลับเข้าไปที่เดิม

  • ข้อได้เปรียบแฟ้มสุ่มคือ สามารถเข้าถึงระเบียนใดๆ โดยตรง และสามารถเรียกใช้ ปรับปรุงระเบียนที่ต้องการโดยไม่กระทบต่อระเบียนอื่นๆ ในแฟ้มข้อมูล


R r key value address 3
เทคนิคในการแปลงส่งฟังก์ชัน R เมื่อ R(key value)address มีด้วยกัน 3 วิธีคือ

  • 1. การแปลงส่งโดยตรง (Direct Mapping)

  • 2. การค้นหาในพจนานุกรม (Dictionary lookup)

  • 3. การคำนวณตำแหน่ง (Address Calculation)


1 direct mapping
1. การแปลงส่งโดยตรง (Direct Mapping)

  • โดยทั่วไปเรียกว่า Relative Addressing

  • Relative addressing ของระเบียนในแฟ้มคือ ลำดับที่ของระเบียน

  • หนึ่งระเบียนต่อหนึ่งตำแหน่งไพรมารีคีย์จะต้องเป็นตัวเลขเรียงจากน้อยไปมาก และ ระเบียนต้องมีขนาดคงที่

  • ตัวอย่างเช่น ระเบียนแฟ้มสุ่มชุดหนึ่ง ไพรมารีคีย์อยู่ในช่วง 0-9999 ดังนั้น จะต้องสำรองพื้นที่ว่าง 10,000 ที่ต่อ 10,000 ระเบียน โดยไพรมารีคีย์ต้ออยู่ในช่วง 0-9999

  • ค่าของไพรมารีคีย์ต้องเป็นตัวเลขที่ต่อเนื่องกันตลอด หรือ อาจขาดช่วงได้ไม่เกิน 30 %

  • ค่าคีย์บางอย่างไม่เหมาะสมกับวิธีนี้เช่น เลขที่บัตรผู้เสียภาษี เนื่องจากใช้ตัวเลข 10 ตำแหน่งค่าที่ได้จะอยู่ในช่วง 1-9999999999 หรือประมาณหนึ่งหมื่นล้าน ตัวอย่างเช่นบริษัทหนึ่งมีพนักงาน 2,000 คน ต้องเผื่อที่ถึงหนึ่งหมื่นล้านที่


Relative addressing
ข้อดีและข้อเสียสำหรับวิธี Relative addressing

  • ข้อดี

  • 1. การแปลงส่งค่า R ทำได้ง่ายเพราะค่าคีย์ของระเบียนก็คือค่าตำแหน่งสัมพัทธ์ของระเบียนในแฟ้มข้อมูล

  • 2. สมารถประมวลผลได้ดีทั้งแบบลำดับและแบบสุ่ม

  • ข้อเสีย

  • 1. ไม่สามารถใช้กับเขตหลักที่เป็นตัวอักษร

  • 2. ไม่เหมาะสำหรับแฟ้มที่ช่วงของคีย์กว้างและมีระเบียนจริงๆเพียงเล็กน้อย


2 dictionary lookup
2. การค้นหาในพจนานุกรม (Dictionary lookup)

  • บ้างเรียกแฟ้มสุ่มที่ใช้วิธีนี้ว่า Indexed file หรือ Index Nonsequential File

  • แนวคิดคือการสร้างตารางแฟ้มพจนานุกรมโดยพจนานุกรมนั้นเก็บในรูปของคีย์/ตำแหน่ง และทุกๆระเบียนในแฟ้มจะแปลงส่งได้ตำแหน่งที่ไม่ซ้ำกัน


Dictionary structure
โครงสร้างของแฟ้มพจนานุกรม (Dictionary structure)

  • ประกอบด้วย 2 entries คือ key กับ address โครงสร้างของแฟ้มอาจแบ่งเป็นตาราง (linear/table) หรือ (nonlinear) ก็ได้

  • 1. แบบตาราง และข้อมูลเรียงตามลำดับของ key

  • - ค้นหาข้อมูลได้รวดเร็ว เพราะสามารถใช้วิธีค้นหาข้อมูลแบบไบนารี (binary search) ได้

  • - การแทรกหรือลบข้อมูลในพจนานุกรมที่เรียงแล้วนั้น เสียเวลามาก

  • ข้อมูลที่ไม่ได้เก็บเรียงลำดับของ key

  • -ต้องใช้วิธีหาแบบลำดับ หาได้ช้า

  • -อาจใช้แฮชชิงฟังก์หาตำแหน่ง

  • การแทรกหรือการลบข้อมูลไม่ยุ่งยากมากนัก


  • 2. Nonlinear แฟ้มพจนานุกรมอาจมีโครงสร้างแบบอื่นก็ได้ เช่น

  • - Binary search tree

  • - M-way search tree

  • - B – tree

  • - โครงสร้างพวกนี้ค้นหาข้อมูลได้รวดเร็ว แต่ซับซ้อนกว่าแบบ Linear

  • - การแทรกหรือลบข้อมูลทำได้ง่าย


โครงสร้างของแฟ้มสุ่ม

  • ควรเก็บตำแหน่งว่างจากบนก่อน หรือเก็บในกลุ่มระเบียนที่มีคีย์คล้ายๆ กันขณะเดียวกันต้องเพิ่มข้อมูล Key value : address เข้าไปในแฟ้มพจนานุกรมด้วย


ข้อดีของการค้นหาในพจนานุกรมข้อดีของการค้นหาในพจนานุกรม

  • 1. ตำแหน่งของระเบียนสามารถหาได้โดยไม่ต้องผ่านการคำนวณ

  • 2. ไพรมารีคีย์ที่ใช้สามารถเป็นไปตามความต้องการของผู้ใช้

  • 3. เมื่อทำ reorganization (ปรับปรุงระเบียน)เลขที่ตำแหน่งที่คู่กับคีย์ในแฟ้มพจนานุกรมเปลี่ยนค่าไปแต่คีย์ไม่ต้องเปลี่ยนตาม

  • การใช้เทคนิคการค้นหาในพจนานุกรม ในการเปลี่ยนค่าคีย์ให้เป็นตำแหน่งที่นั้นจะมีประสิทธิภาพกับแฟ้มข้อมูลขนาดเล็ก


Addressing calculation
การคำนวณตำแหน่ง ข้อดีของการค้นหาในพจนานุกรม(addressing Calculation)

  • วิธีการคำนวณตำแหน่งโปรแกรมเมอร์เป็นผู้จัดการสร้างหรือกำหนดฟังก์ชันเพื่อเปลี่ยน R(key value) address


  • ถ้า ข้อดีของการค้นหาในพจนานุกรมR(k1)=R(k2) แต่ k1#k2 เมื่อ k1,k2 เป็นไพรมารีคีย์ของระเบียน 2 ระเบียน เราเรียกสภาพเช่นนี้ว่า Collision (ชนกัน) และ เรียก k1,k2 ว่า Synonyms และเรียกระเบียนที่ไม่สามารถเก็บอยู่ในตำแหน่งที่คำนวณได้ (home address)ว่า ระเบียนส่วนล้น (overflow record)

  • วิธีการคำนวณตำแหน่งนี้มีชื่อเรียกต่างๆกัน ในเอกสารนี้ขอเรียกว่า แฮชชิงฟังก์ชัน (hashing function)


ปัจจัยที่มีอิทธิพลต่อประสิทธิภาพของแฟ้มสุ่ม ที่ใช่วิธีการคำนวณตำแหน่ง

  • 1. ขนาดของ Bucket

  • 2. loading factor

  • 3. ชุดของค่าไพรมารีคีย์

  • 4. แฮชชิงฟังก์ชันที่ไช้

  • 5. วิธีการจัดการเกี่ยวกับระเบียนส่วนล้น


Bucket
Bucket ที่ใช่วิธีการคำนวณตำแหน่ง

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

  • ถ้าผู้ออกแบบแฟ้มเลือก bucket ขนาดเล็กแล้วจะเกิด overflow ค่อนข้างสูง ซึ่งต้องเสียเวลาอ่าน bucket เพิ่มขึ้น อาจต้องเพิ่มเวลาการแสวงหา Seek time

  • หาก bucket ความจุมากจะช่วยลด overflow แต่ bucket ใหญ่จะต้องอ่านเข้าไปในหน่วยความจำ


Home bucket
แสดง ที่ใช่วิธีการคำนวณตำแหน่งHome bucket ต่างๆในแฟ้มสุ่ม

  • เลขที่ตำแหน่งของระเบียนที่ผ่านการคำนวณเรียกว่า home address ถ้าที่เก็บข้อมูลเป็น bucket Bucket ที่คำนวณได้คือ home bucket


  • เลขที่ตำแหน่งของระเบียนที่ผ่านการคำนวณเรียกว่า home address

  • ถ้าที่เก็บข้อมูลเป็น bucket Bucket ที่คำนวณได้คือ home bucket

  • ส่วน bucket ที่แยกไว้ต่างหากสำหรับเก็บระเบียนส่วนล้นเรียกว่า Overflow bucket

  • Loading factor ของแฟ้มข้อมูล คือ อัตราส่วนของจำนวนระเบียนที่มีอยู่ในแฟ้มขณะที่เก็บต่อจำนวนเนื้อที่ที่มีให้ใช้ (available)ในแฟ้ม นิยามอีกแบบหนึ่งloading factor = #records in file max.#of records file can contain

  • Loading factor เป็นการเผื่อที่ให้แฟ้มข้อมูล ถ้าเผื่อมากโอกาสจะเกิดส่วนล้นจะลดลง


Loading factor overflow
แสดงค่า Loading factor และโอกาสเกิด Overflow

  • โดยปกติ loading factor แฟ้มสุ่มควรอยู่ประมาณ .70-.80 ถ้ามากกว่านั้นจะต้องทำ reorganization ตัวอย่าง ถ้าแฟ้มสุ่มมีระเบียน 4000 ต้องเผื่อพื้นที่อย่างน้อย 5000 ซึ่งจะเกิด loading factor =.80


แฮชชิงฟังก์ชัน

  • ที่ใช้เปลี่ยนคีย์ให้เป็นตัวเลขที่ตำแหน่งนั้นมีมากมาย แต่แฮชชิงฟังก์ชันที่ดีจะต้องให้จำนวน synonym น้อยที่สุด และเป็นฟังก์ชันที่ไม่ซับซ้อนนัก

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


แฮชชิงฟังก์ชันแบบต่างๆแฮชชิงฟังก์ชันแบบต่างๆ

  • 1. วิธีการใช้เศษเหลือจากการหาร (The Division – Remainder Method) เป็นวิธีการแปลงค่าคีย์ของระเบียนให้เป็นเลขที่ตำแหน่งซึ่งอยู่ใน home bucket ของแฟ้มข้อมูลโดยใช้เฉพาะ (prime number) ที่มีค่าใกล้เคียงแต่ไม่เกินจำนวน bucket ในแฟ้มข้อมูลมาหารคีย์ของระเบียน เศษเหลือที่ได้คือตำแหน่งของระเบียน โดยเขียนฟังก์ชันได้ดังนี้

  • F(KV) = Mod(KV/N)Rem = ฟังก์ชันที่ใช้หาเศษเหลือKV = ค่าคีย์ของระเบียนN = largest prime number ที่มีค่าไม่เกินจำนวน home bucket ของแฟ้มข้อมูล


ตัวอย่างการคำนวณแฮชชิงฟังก์ชันแบบต่างๆ

  • สมมุติแฟ้มมีระเบียน 10,000 ระเบียน คีย์อยู่ในช่วง 0000000-9999999 เตรียมเนื้อที่ 12000 เพื่อลดโอกาสการเกิด overflow ตำแหน่งระเบียนมีเลขในช่วง 00000-11999 ตัวหารที่เป็น prime number จะต้องไม่เกิด 11999 นั่นคือ 11987

  • การคำนวณหาตำแหน่ง home bucket ของระเบียนที่มีคีย์=0235671

  • วิธีคำนวณ เอาค่าคีย์ 0235671 หารด้วย 11987 ได้ 19 เศษ 7918 7918 นี้คือตำแหน่งของ home bucket ของระเบียน 0235671


2 digit analysis method
2. การวิเคราะห์ตัวเลข แฮชชิงฟังก์ชันแบบต่างๆ(Digit Analysis Method)

  • ถ้าความถี่ของเลขตำแหน่งใดมีการกระจายตัวของตัวเลข 0-9 อย่าสม่ำเสมอ (Uniform distribution) จะใช้ตำแหน่งเหล่านี้มาพิจารณา ตัวอย่างในตารางตำแหน่ง 2,3,5 มีการกระจายตัวอย่างสม่ำเสมอ


3 mid square method
3. แฮชชิงฟังก์ชันแบบต่างๆMid-square Method

  • เป็นการเอาค่าคีย์ของระเบียนมายกกำลัง 2 แล้วเลือกตัวเลขในช่องกลางมาเป็น Relative address โดยเลือกให้กับจำนวนหลักของ address ที่ต้องการ


4 folding
4. แฮชชิงฟังก์ชันแบบต่างๆFolding

  • โดยการแบ่งคีย์ออกเป็นส่วนๆ ให้แต่ละส่วนเท่ากับจำนวน หลักของaddress ที่ต้องการ เอาแต่ละส่วนพับเข้าหากัน แล้วบวกกัน ผลบอกคือตำแหน่งที่ต้องการ

  • สมมุติระเบียนที่ต้องการหาคีย์ = 123456789 ต้องการ 4 digit-address


Folding
แสดงการใช้ แฮชชิงฟังก์ชันแบบต่างๆfolding หาตำแหน่ง


5 different radix
5. แฮชชิงฟังก์ชันแบบต่างๆDifferent Radix

  • โดยการเปลีย่นค่าคีย์ของระเบียน ซึ่งเป็นเลขจากฐานสิบไปเป็นฐานอื่น เช่นคีย์ 123456 อาจเปลี่ยนเป็นฐาน 11 เพื่อหาตำแหน่ง 4 หลัก ได้ดังนี้

  • (1*115)+(2*114)+(3*113)+(4*112)+(5*111)+6=194871 เลือก 4971 เป็นตำแหน่งที่อยู่ระเบียน


การจัดการปัญหาระเบียนส่วนล้นการจัดการปัญหาระเบียนส่วนล้น

  • 1. Open addressing คือเก็บระเบียนปกติและระเบียนส่วนล้นปะปนกันไป

  • 2. Separate overflow แบ่งแฟ้มออกเป็น 2 ส่วน คือเก็บ home bucket และ overflow ออกจากกัน


Collision
เทคนิคเพื่อจัดการปัญหา Collision (การชนกัน)

  • 1. Linear Probing โดยเก็บระเบียนส่วนล้นไว้ตำแหน่งถัดจาก home bucket ถ้าระเบียนถัดไปไม่ว่างก็จะถ้าถัดไปจนถึงระเบียนสุดท้าย หากไม่พบ ก็จะเริ่มหาที่จุดเริ่มต้นไปเรื่อยๆ จบมาบรรจบ home bucket อีกครั้งก็แสดงว่าแฟ้มเต็ม

  • 2. Double Hashing ใช้แฮชชิงฟังก์ชันคำนวณหาค่าจะได้ค่า C แล้วใช้ค่า C บวกกับ home address เดิมจะได้เลขที่ตำแหน่ง ถ้าเกิด Collision อยู่ก็จะบวก C ด้วยตำแหน่งล่าสุดจะได้ตำแหน่งใหม่ ทำแบบนี้ไปเรื่อยๆจนได้ตำแหน่งที่ต้องการ


  • 3. Synonym Chaining เป็นการเพิ่ม link field ในทุกๆ home bucket และ overflow bucket ซึ่ง link field จะเป็นตัวเชื่อม synonym เข้าด้วยกัน


ลักษณะงานที่เหมาะสมกับแฟ้มสุ่มลักษณะงานที่เหมาะสมกับแฟ้มสุ่ม

  • 1. งานแบบออนไลน์

  • 2. ต้องการปรับปรุงแฟ้มข้อมูลหลายๆ ชุดพร้อมๆกัน

  • 3. มีอัตราการเปลี่ยนแปลงต่ำ รายการปรับปรุงในแต่ละรอบมีน้อย

  • 4. ต้องการคำตอบรวดเร็ว

  • ตัวอย่างระบบงานที่ใช้แฟ้มแบบสุ่ม

  • 1. ระบบธนาคารออนไลน์

  • 2.ระบบการจองที่นั่งของสายการบิน


คำถามลักษณะงานที่เหมาะสมกับแฟ้มสุ่ม

  • 1. จงเปรียบเทียบข้อแตกต่างระหว่างแฟ้มสุ่มกับแฟ้มลำดับ

  • 2. เทคนิคการหาตำแหน่งของแฟ้มสุ่มมีกี่แบบ อะไรบ้าง

  • 3. จงอธิบายความหมายและวิธีของแฮชชิงฟังก์ชัน

  • 4. จงเปรียบเทียบการจัดการระเบียนส่วนล้น linear probing , double hashing , synonym chaining

  • 5. จากแฮชชิงฟังก์ชันแบบ folding หากระเบียนที่ต้องการหามีคีย์ 139971688 ต้องการ 4 digit-address จงหาตำแหน่งของระเบียน


ad