random file organization
Download
Skip this Video
Download Presentation
การจัดระเบียบแฟ้มแบบสุ่ม Random file organization

Loading in 2 Seconds...

play fullscreen
1 / 31

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


  • 70 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

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

slide2
นิยามและการประยุกต์
  • วิธีการจัดระเบียบแฟ้มเป็นแบบเข้าถึงระเบียนโดยตรง เราเรียกว่า การจัดระเบียบแฟ้มแบบสุ่ม Random file organization
  • การจัดระเบียบแฟ้มแบบสุ่ม ไม่จำเป็นต้องเรียงตามไพรมารีคีย์ นอกจากนั้นแฟ้มยังมีที่ ว่างเปล่าอยู่ปะปนเป็นระยะ
  • เราสามารถหาตำแหน่งที่เก็บจากค่าไพรมารีคีย์
slide3
เนื่องจากการเข้าถึงแฟ้มข้อมูลแบบสุ่ม สามารถเข้าถึงข้อมูลโดยตรงได้รวดเร็ว ดังนั้นแฟ้มสุ่มจึงเหมาะสำหรับงาน 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
  • -ต้องใช้วิธีหาแบบลำดับ หาได้ช้า
  • -อาจใช้แฮชชิงฟังก์หาตำแหน่ง
  • การแทรกหรือการลบข้อมูลไม่ยุ่งยากมากนัก
slide9
2. Nonlinear แฟ้มพจนานุกรมอาจมีโครงสร้างแบบอื่นก็ได้ เช่น
  • - Binary search tree
  • - M-way search tree
  • - B – tree
  • - โครงสร้างพวกนี้ค้นหาข้อมูลได้รวดเร็ว แต่ซับซ้อนกว่าแบบ Linear
  • - การแทรกหรือลบข้อมูลทำได้ง่าย
slide10
โครงสร้างของแฟ้มสุ่ม
  • ควรเก็บตำแหน่งว่างจากบนก่อน หรือเก็บในกลุ่มระเบียนที่มีคีย์คล้ายๆ กันขณะเดียวกันต้องเพิ่มข้อมูล Key value : address เข้าไปในแฟ้มพจนานุกรมด้วย
slide11
ข้อดีของการค้นหาในพจนานุกรม
  • 1. ตำแหน่งของระเบียนสามารถหาได้โดยไม่ต้องผ่านการคำนวณ
  • 2. ไพรมารีคีย์ที่ใช้สามารถเป็นไปตามความต้องการของผู้ใช้
  • 3. เมื่อทำ reorganization (ปรับปรุงระเบียน)เลขที่ตำแหน่งที่คู่กับคีย์ในแฟ้มพจนานุกรมเปลี่ยนค่าไปแต่คีย์ไม่ต้องเปลี่ยนตาม
  • การใช้เทคนิคการค้นหาในพจนานุกรม ในการเปลี่ยนค่าคีย์ให้เป็นตำแหน่งที่นั้นจะมีประสิทธิภาพกับแฟ้มข้อมูลขนาดเล็ก
addressing calculation
การคำนวณตำแหน่ง (addressing Calculation)
  • วิธีการคำนวณตำแหน่งโปรแกรมเมอร์เป็นผู้จัดการสร้างหรือกำหนดฟังก์ชันเพื่อเปลี่ยน R(key value) address
slide13
ถ้า R(k1)=R(k2) แต่ k1#k2 เมื่อ k1,k2 เป็นไพรมารีคีย์ของระเบียน 2 ระเบียน เราเรียกสภาพเช่นนี้ว่า Collision (ชนกัน) และ เรียก k1,k2 ว่า Synonyms และเรียกระเบียนที่ไม่สามารถเก็บอยู่ในตำแหน่งที่คำนวณได้ (home address)ว่า ระเบียนส่วนล้น (overflow record)
  • วิธีการคำนวณตำแหน่งนี้มีชื่อเรียกต่างๆกัน ในเอกสารนี้ขอเรียกว่า แฮชชิงฟังก์ชัน (hashing function)
slide14
ปัจจัยที่มีอิทธิพลต่อประสิทธิภาพของแฟ้มสุ่ม ที่ใช่วิธีการคำนวณตำแหน่ง
  • 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
slide17
เลขที่ตำแหน่งของระเบียนที่ผ่านการคำนวณเรียกว่า 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
slide19
แฮชชิงฟังก์ชัน
  • ที่ใช้เปลี่ยนคีย์ให้เป็นตัวเลขที่ตำแหน่งนั้นมีมากมาย แต่แฮชชิงฟังก์ชันที่ดีจะต้องให้จำนวน synonym น้อยที่สุด และเป็นฟังก์ชันที่ไม่ซับซ้อนนัก
  • ถ้าระเบียนต่างๆที่ผ่านฟังก์ชันแล้วได้ตำแหน่งกระจายตัวสม่ำเสมอ ถือว่าชุดของค่า ไพรมารีคีย์เข้ากับฟังก์ชันได้ดี แต่ถ้ากระจุกอยู่ในตำแหน่งใดตำแหน่งหนึ่งมากเกินไปก็ต้องเปลี่ยนใช้แฮชชิงฟังก์ชันอื่น
slide20
แฮชชิงฟังก์ชันแบบต่างๆ
  • 1. วิธีการใช้เศษเหลือจากการหาร (The Division – Remainder Method) เป็นวิธีการแปลงค่าคีย์ของระเบียนให้เป็นเลขที่ตำแหน่งซึ่งอยู่ใน home bucket ของแฟ้มข้อมูลโดยใช้เฉพาะ (prime number) ที่มีค่าใกล้เคียงแต่ไม่เกินจำนวน bucket ในแฟ้มข้อมูลมาหารคีย์ของระเบียน เศษเหลือที่ได้คือตำแหน่งของระเบียน โดยเขียนฟังก์ชันได้ดังนี้
  • F(KV) = Mod(KV/N)Rem = ฟังก์ชันที่ใช้หาเศษเหลือKV = ค่าคีย์ของระเบียนN = largest prime number ที่มีค่าไม่เกินจำนวน home bucket ของแฟ้มข้อมูล
slide21
ตัวอย่างการคำนวณ
  • สมมุติแฟ้มมีระเบียน 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
5 different radix
5. Different Radix
  • โดยการเปลีย่นค่าคีย์ของระเบียน ซึ่งเป็นเลขจากฐานสิบไปเป็นฐานอื่น เช่นคีย์ 123456 อาจเปลี่ยนเป็นฐาน 11 เพื่อหาตำแหน่ง 4 หลัก ได้ดังนี้
  • (1*115)+(2*114)+(3*113)+(4*112)+(5*111)+6=194871 เลือก 4971 เป็นตำแหน่งที่อยู่ระเบียน
slide27
การจัดการปัญหาระเบียนส่วนล้น
  • 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 ด้วยตำแหน่งล่าสุดจะได้ตำแหน่งใหม่ ทำแบบนี้ไปเรื่อยๆจนได้ตำแหน่งที่ต้องการ
slide29
3. Synonym Chaining เป็นการเพิ่ม link field ในทุกๆ home bucket และ overflow bucket ซึ่ง link field จะเป็นตัวเชื่อม synonym เข้าด้วยกัน
slide30
ลักษณะงานที่เหมาะสมกับแฟ้มสุ่ม
  • 1. งานแบบออนไลน์
  • 2. ต้องการปรับปรุงแฟ้มข้อมูลหลายๆ ชุดพร้อมๆกัน
  • 3. มีอัตราการเปลี่ยนแปลงต่ำ รายการปรับปรุงในแต่ละรอบมีน้อย
  • 4. ต้องการคำตอบรวดเร็ว
  • ตัวอย่างระบบงานที่ใช้แฟ้มแบบสุ่ม
  • 1. ระบบธนาคารออนไลน์
  • 2.ระบบการจองที่นั่งของสายการบิน
slide31
คำถาม
  • 1. จงเปรียบเทียบข้อแตกต่างระหว่างแฟ้มสุ่มกับแฟ้มลำดับ
  • 2. เทคนิคการหาตำแหน่งของแฟ้มสุ่มมีกี่แบบ อะไรบ้าง
  • 3. จงอธิบายความหมายและวิธีของแฮชชิงฟังก์ชัน
  • 4. จงเปรียบเทียบการจัดการระเบียนส่วนล้น linear probing , double hashing , synonym chaining
  • 5. จากแฮชชิงฟังก์ชันแบบ folding หากระเบียนที่ต้องการหามีคีย์ 139971688 ต้องการ 4 digit-address จงหาตำแหน่งของระเบียน
ad