ทดลองใช้ SQLite เป็นคอนเทนเนอร์สำหรับเก็บไฟล์

โครงการ Pack พยายามสร้างรูปแบบการเก็บถาวรไฟล์ตามไลบรารี SQLite และอัลกอริธึมการบีบอัด ZSTD (Zstandard) ต้นแบบที่เตรียมไว้ซึ่งเขียนด้วยภาษา Pascal และเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 มีประสิทธิภาพเหนือกว่าผู้จัดเก็บทั่วไปส่วนใหญ่ในด้านความเร็วในการสร้างไฟล์เก็บถาวร แม้ว่างานจะจำกัดอยู่เพียงการอ่านข้อมูล โดยบีบอัดด้วยไลบรารี libzstd และดำเนินการ SQL เพื่อ เพิ่มข้อมูลที่บีบอัดลงในไฟล์ด้วยฐานข้อมูล SQLite

เมื่อบีบอัดไดเร็กทอรีที่มีไฟล์ 81 ไฟล์โดยมีขนาดรวม 1.25 GB แพ็กจะเร็วกว่ายูทิลิตี้ ZIP ถึง 112 เท่า การดำเนินการเสร็จสิ้นภายใน 1.3 วินาที เทียบกับ 146 วินาทีสำหรับ ZIP ขนาดไฟล์เก็บถาวรสำหรับแพ็คเล็กลง 23% (194 MB สำหรับ Pack และ 253 MB สำหรับ ZIP) สำหรับการเปรียบเทียบ ยูทิลิตี้ tar เสร็จสิ้นการบรรจุหีบห่อใน 4.7 วินาทีโดยไม่มีการบีบอัด และใน 28.5 วินาทีด้วยการบีบอัด gzip โปรแกรมเก็บถาวร RAR เสร็จสิ้นการทดสอบใน 27.5 วินาที และ 7z ใน 54.2 วินาที ขนาดไฟล์เก็บถาวรคือ: tar.gz - 214 MB, RAR - 235 MB, 7z - 135 MB มีข้อสังเกตว่าในแง่ของความเร็วในการแตกไฟล์และการเข้าถึงไฟล์แบบสุ่ม Pack ยังนำหน้าผู้จัดเก็บรายอื่นในขณะที่ใช้ RAM น้อยกว่า ZIP: 253 MB, 146 วินาที 7z: 135 MB, เร็วขึ้น 54.2 วินาที ZIP 2.7 เท่า tar.gz: 214 MB, 28.5 sx 5.1 RAR: 235 MB, 27.5 sx 5.3 tar: 1345 MB, 4.7 sx 31 แพ็ค: 194 MB, 1.3 เอสเอ๊กซ์ 112

ไม่มีการกล่าวถึงผลกระทบของแคชไฟล์ต่อผลการทดสอบ อาจเป็นไปได้ว่าความเร็วต่ำของ ZIP นั้นเนื่องมาจากลำดับที่เริ่มการทดสอบโดยไม่คำนึงถึงการแคชข้อมูลในหน่วยความจำ - การทดสอบด้วย zip เริ่มต้นด้วยแคชเย็นและการทดสอบที่เหลือด้วยแคชอุ่น ภายใต้สภาวะปกติ Zstandard จะแสดงความเร็วการบีบอัดที่เร็วกว่า zlib 3-5 เท่า และการบีบอัดที่เร็วกว่า 10 เท่า โดยมีระดับการบีบอัดที่สูงกว่า 15-XNUMX%

เพิ่มเติม: แนวคิดที่คล้ายกันในการจัดเก็บไฟล์บีบอัดในรูปแบบของ blobs ในฐานข้อมูล SQLite นั้นถูกนำมาใช้ในปี 2014 ในโปรแกรมเก็บถาวร sqlar ซึ่งสร้างโดยนักพัฒนา SQLite เพื่อเป็นการทดลองเพื่อประเมินประสิทธิภาพของการจัดเก็บ blobs ใน SQLite sqlar ใช้ zlib ในการบีบอัดและขนาดไฟล์ใหญ่กว่ายูทิลิตี้ ZIP ประมาณ 2%

ที่มา: opennet.ru

เพิ่มความคิดเห็น