กลับไปหน้าบทความ

อ่าน 2 นาที

ซีดีบี (ซอฟต์แวร์)

cdb ซึ่งย่อมาจาก "constant database" หมายถึงทั้ง ไลบรารี และรูปแบบข้อมูลที่สร้างโดย Daniel J.

ซีดีบี (ซอฟต์แวร์)

(Learn how and when to remove this message)

cdbซึ่งย่อมาจาก "constant database" หมายถึงทั้งไลบรารีและรูปแบบข้อมูลที่สร้างโดยDaniel J. Bernstein cdb ทำงานเหมือนอาร์เรย์แบบเชื่อมโยง บนดิสก์ โดยแมปคีย์กับค่า และอนุญาตให้จัดเก็บหลายค่าสำหรับคีย์เดียวได้ ฐานข้อมูลแบบคงที่อนุญาตให้ดำเนินการได้เพียงสองอย่าง คือ การสร้างและการอ่าน การดำเนินการทั้งสองได้รับการออกแบบให้รวดเร็วและเชื่อถือได้สูง เนื่องจากฐานข้อมูลไม่เปลี่ยนแปลงขณะใช้งาน กระบวนการหลายกระบวนการจึงสามารถเข้าถึงฐานข้อมูลเดียวได้โดยไม่ต้องล็อก นอกจากนี้ เนื่องจากทุกการแก้ไขจะสร้างฐานข้อมูลใหม่ขึ้นมาแทนที่ จึงสามารถใช้ประโยชน์จากความหมายของระบบไฟล์ UNIX เพื่อรับประกันความน่าเชื่อถือได้

ตำแหน่งบันทึก ความยาวคีย์และค่า และค่าแฮชเป็นปริมาณ 32 บิต ดังนั้นจึงต้องพอดีกับ 4 กิกะไบต์[ 1 ] cdbถูกใช้โดยdjbdns , fastforward , mess822 , qmailและucspi-tcpเพื่อให้การเข้าถึงข้อมูลที่มีประสิทธิภาพสูง เชื่อถือได้ และเรียบง่าย

โครงสร้าง

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

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

สำหรับการค้นหาคีย์ที่มีหลายค่า สามารถค้นหาค่าเพิ่มเติมได้โดยการเริ่มการค้นหาใหม่ในช่องถัดไป

รูปแบบ

ตัวเลขทั้งหมด—ทั้งค่าออฟเซ็ต ความยาว และค่าแฮช—เป็นจำนวนเต็ม 32 บิต ที่ไม่ติดลบ จัดเก็บใน รูปแบบ little endianคีย์และข้อมูลถือเป็นสตริง ไบต์ที่ไม่สามารถตีความได้ และไม่จำเป็นต้องได้รับการจัดการเป็นพิเศษ

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

ค่าแฮชเป็นจำนวนเต็ม 32 บิตที่ไม่มีเครื่องหมาย และเริ่มต้นด้วยค่า 5381 สำหรับแต่ละไบต์ของคีย์ ค่าแฮชปัจจุบันจะถูกคูณด้วย 33 จากนั้น ทำการ XORกับไบต์ปัจจุบันของคีย์ บิตส่วนเกินจะถูกทิ้งไป ช่องและตารางถูกคำนวณอย่างง่ายจากค่าแฮช ตารางเป้าหมายคือบิตต่ำสุดแปดบิตของค่าแฮช (เช่น ค่าแฮชหารด้วย 256) และช่องภายในตารางคือบิตที่เหลือของค่าแฮชหารด้วยความยาวของตาราง (เช่น ค่าแฮชหารด้วย 256 หารด้วยความยาวของตาราง)

ห้องสมุด

รหัสไลบรารี cdb อย่างเป็นทางการเป็นสาธารณสมบัติ : ไฟล์ต้นฉบับแต่ละไฟล์ถูกทำเครื่องหมายไว้เช่นนั้น และยังมีอยู่ใน แพ็คเกจ djbdns ที่เป็นสาธารณสมบัติ ด้วย อย่างไรก็ตาม ส่วนที่เหลือของแพ็คเกจ cdb เคยเป็นซอฟต์แวร์ที่ไม่มีลิขสิทธิ์ซึ่งหมายความว่าต้องแจกจ่ายตามต้นฉบับทุกประการ การอนุญาตใช้งานที่ไม่ธรรมดาและความเรียบง่ายของรูปแบบได้กระตุ้นให้ผู้อื่นนำไลบรารีมาเขียนใหม่และเผยแพร่ภายใต้เงื่อนไขทั่วไปมากขึ้น เช่น ไลบรารี TinyCDB ของ Michael Tokarev ซึ่งมีให้ใช้งานภายใต้สาธารณสมบัติ[ 2 ]มีการเขียนใหม่บางส่วนที่ลบข้อจำกัดขนาดคีย์/ค่า 4 GiB ออก อย่างไรก็ตาม การแก้ไขเหล่านั้นไม่เข้ากันกับรูปแบบดั้งเดิม เช่นVariable width CDB นี้ ซึ่งรองรับรูปแบบไฟล์ CDB ดั้งเดิม รวมถึงเวอร์ชัน 16 บิตและ 64 บิตด้วย

ในปี พ.ศ. 2552 cdb ทั้งหมดถูกนำไปไว้ในสาธารณสมบัติ[ 3 ]

ที่สำคัญคือ ผู้สร้าง cdb ไม่ได้ตั้งใจให้ cdb ถูกใช้เป็นไลบรารีที่ใช้ร่วมกัน ซึ่งแตกต่างจากฐานข้อมูล ประเภทdbmอื่นๆ เกือบทั้งหมดเช่นBerkeley DB อย่างไรก็ตาม การเขียนโค้ดใหม่หลายๆ ตัวสามารถนำไปใช้เป็นไลบรารีที่ใช้ร่วมกันได้

  • เว็บไซต์อย่างเป็นทางการของCDB
  • คำอธิบายรูปแบบโดยละเอียดของโครงสร้างภายในของฐานข้อมูลค่าคงที่ (cdb)
  • การนำไปใช้งานใหม่และการอธิบายมีคำอธิบายรูปแบบโดยละเอียดอยู่ในไฟล์ "readme.md"
  • ผลการทดสอบประสิทธิภาพ QDBM ที่เก็บถาวรไว้เมื่อวันที่ 5 มีนาคม 2012 ในWayback Machineเปรียบเทียบ cdb กับโปรแกรมที่คล้ายคลึงกัน
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Cdb_(software)&oldid=1351504806 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ซีดีบี (ซอฟต์แวร์)

cdb ซึ่งย่อมาจาก "constant database" หมายถึงทั้ง ไลบรารี และรูปแบบข้อมูลที่สร้างโดย Daniel J.

โครงสร้าง

ฐานข้อมูลประกอบด้วยชุดข้อมูลทั้งหมด (เช่น อาร์เรย์แบบเชื่อมโยงเดี่ยว) ใน ไฟล์คอมพิวเตอร์ไฟล์ เดียว ประกอบด้วยสามส่วน ได้แก่ ส่วนหัวที่มีขนาดคงที่ ข้อมูล และชุด ตารางแฮช การค้นหาถูกออกแบบมาสำหรับคีย์ที่ตรงกันทุกประการเท่านั้น แม้ว่าการค้นหาประเภทอื่น ๆ...

รูปแบบ

ตัวเลขทั้งหมด—ทั้งค่าออฟเซ็ต ความยาว และค่าแฮช—เป็น จำนวนเต็ม 32 บิต ที่ไม่ติดลบ จัดเก็บใน รูปแบบ little endian คีย์และข้อมูลถือเป็น สตริง ไบต์ที่ไม่สามารถตีความได้ และไม่จำเป็นต้องได้รับการจัดการเป็นพิเศษ

ห้องสมุด

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