ค้นหาเว็บไซต์

zstd - อัลกอริธึมการบีบอัดข้อมูลที่รวดเร็วที่ใช้โดย Facebook


Zstandard (หรือที่รู้จักในชื่อ zstd) เป็นโปรแกรมบีบอัดข้อมูลแบบเรียลไทม์แบบโอเพ่นซอร์สที่รวดเร็วและมีอัตราส่วนการบีบอัดที่ดีกว่า พัฒนาโดย Facebook มันเป็นอัลกอริธึมการบีบอัดแบบไม่สูญเสียข้อมูลที่เขียนด้วย C (มีการนำกลับมาใช้ใหม่ใน Java) ซึ่งถือเป็นโปรแกรม Linux ดั้งเดิม

อ่านเพิ่มเติม: 10 7zip (การบีบอัดข้อมูล) ตัวอย่างคำสั่งใน Linux

เมื่อจำเป็น มันสามารถแลกเปลี่ยนความเร็วการบีบอัดกับอัตราส่วนการบีบอัดที่แข็งแกร่ง (ความเร็วการบีบอัดเทียบกับการแลกเปลี่ยนอัตราส่วนการบีบอัดสามารถกำหนดค่าได้โดยเพิ่มทีละน้อย) ในทางกลับกัน มีโหมดพิเศษสำหรับการบีบอัดข้อมูลขนาดเล็ก ที่เรียกว่าการบีบอัดพจนานุกรม และสามารถสร้างพจนานุกรมจากชุดตัวอย่างใดๆ ที่จัดให้ มาพร้อมกับยูทิลิตีบรรทัดคำสั่งสำหรับการสร้างและถอดรหัส .zst, .gz, .xz และ .lz4 ไฟล์.

ที่สำคัญ Zstandard มีคอลเลกชัน API มากมาย รองรับภาษาการเขียนโปรแกรมยอดนิยมเกือบทั้งหมด รวมถึง Python, Java, JavaScript, Nodejs, Perl, Ruby, C#, Go, Rust, PHP, Switft และอื่นๆ อีกมากมาย

มีการใช้อย่างแข็งขันเพื่อบีบอัดข้อมูลจำนวนมากในหลายรูปแบบและกรณีการใช้งานใน Facebook; บริการต่างๆ เช่น คลังข้อมูล Amazon RedShift; ฐานข้อมูลเช่น Hadoop และ Redis; เครือข่าย Tor และแอปพลิเคชั่นอื่น ๆ อีกมากมายรวมถึงเกม

ผลลัพธ์ต่อไปนี้ได้มาจากการทดสอบอัลกอริธึมการบีบอัดที่รวดเร็วหลายๆ ครั้งบนเซิร์ฟเวอร์ที่ใช้ Linux Debian โดยใช้ lzbench ซึ่งเป็นเครื่องมือวัดประสิทธิภาพในหน่วยความจำแบบโอเพ่นซอร์ส

วิธีการติดตั้งเครื่องมือบีบอัด Zstandard ใน Linux

หากต้องการติดตั้ง Zstandard บน Linux คุณจำเป็นต้องคอมไพล์จากแหล่งที่มา แต่ก่อนอื่นคุณต้องติดตั้งเครื่องมือการพัฒนาที่จำเป็นบนระบบของคุณโดยใช้ตัวจัดการแพ็คเกจการแจกจ่ายตามที่แสดง

sudo apt update && sudo apt install build-essential		#Ubuntu/Debian
yum group install "Development Tools" 			#CentOS/REHL
dnf groupinstall "C Development Tools and Libraries"		#Fedora 22+

เมื่อติดตั้งเครื่องมือการพัฒนาที่จำเป็นทั้งหมดแล้ว ตอนนี้คุณสามารถดาวน์โหลดแพ็คเกจต้นฉบับ ย้ายไปยังไดเร็กทอรี repo ในเครื่อง สร้างไบนารี่ และติดตั้งดังที่แสดง

cd ~/Downloads
git clone https://github.com/facebook/zstd.git
cd zstd
make
sudo make install 

เมื่อติดตั้ง Zstandard แล้ว ตอนนี้เราสามารถก้าวต่อไปเพื่อเรียนรู้การใช้งานพื้นฐานของตัวอย่างคำสั่ง Zstd ในส่วนต่อไปนี้

เรียนรู้ 10 ตัวอย่างการใช้คำสั่ง Zstd ใน Linux

โดยทั่วไปไวยากรณ์บรรทัดคำสั่งของ Zstd จะคล้ายกับไวยากรณ์ของเครื่องมือ gzip และ xz โดยมีข้อแตกต่างเล็กน้อย

1. หากต้องการสร้างไฟล์บีบอัด .zst เพียงระบุชื่อไฟล์เพื่อบีบอัดหรือใช้แฟล็ก -z ยังหมายถึงการบีบอัด ซึ่งก็คือ การกระทำเริ่มต้น

zstd etcher-1.3.1-x86_64.AppImage 
OR
zstd -z etcher-1.3.1-x86_64.AppImage 

2. หากต้องการขยายขนาดไฟล์บีบอัด .zst ให้ใช้แฟล็ก -d หรือยูทิลิตี unzstd ตามที่แสดง

zstd -d etcher-1.3.1-x86_64.AppImage.zst 
OR
unzstd etcher-1.3.1-x86_64.AppImage.zst 

3. หากต้องการลบไฟล์ต้นฉบับหลังการดำเนินการ ตามค่าเริ่มต้น ไฟล์ต้นฉบับจะไม่ถูกลบหลังจากการบีบอัดหรือคลายการบีบอัดสำเร็จ หากต้องการลบออก ให้ใช้ตัวเลือก --rm

ls etcher-1.3.1-x86_64.AppImage
zstd --rm  etcher-1.3.1-x86_64.AppImage
ls etcher-1.3.1-x86_64.AppImage

4. ในการตั้งค่าระดับการบีบอัด zstd มีตัวแก้ไขการดำเนินการจำนวนหนึ่ง ตัวอย่างเช่น คุณสามารถระบุระดับการบีบอัดเป็น -6(ตัวเลข 1-19 ค่าเริ่มต้นคือ 3) ตามที่แสดง

zstd -6 --rm etcher-1.3.1-x86_64.AppImage

5. หากต้องการตั้งค่าความเร็วการบีบอัด zstd มีอัตราส่วนความเร็วในการบีบอัด 1-10 ความเร็วการบีบอัดเริ่มต้นคือ 1 คุณสามารถแลกเปลี่ยนอัตราส่วนการบีบอัดกับความเร็วการบีบอัดได้ด้วยตัวเลือก --fast ยิ่งตัวเลขสูงความเร็วการบีบอัดก็จะยิ่งเร็วขึ้น

zstd --fast=10 etcher-1.3.1-x86_64.AppImage

6. หากต้องการแสดงข้อมูลเกี่ยวกับไฟล์บีบอัด ให้ใช้แฟล็ก -l ซึ่งใช้เพื่อแสดงข้อมูลเกี่ยวกับไฟล์บีบอัด เป็นต้น

zstd -l etcher-1.3.1-x86_64.AppImage.zst

7. หากต้องการทดสอบความสมบูรณ์ของไฟล์บีบอัด ให้ใช้แฟล็ก -t ตามที่แสดง

zstd -t etcher-1.3.1-x86_64.AppImage.zst

8. หากต้องการเปิดใช้งานโหมดรายละเอียด ให้ใช้ตัวเลือก -v

zstd -v -5 etcher-1.3.1-x86_64.AppImage

9. หากต้องการใช้รูปแบบการบีบอัดไฟล์หรือคลายการบีบอัดอื่นๆ เช่น gzip, xz, lzma และ lz4 โดยใช้ --format=FORMAT ดังที่แสดง

zstd -v --format=gzip etcher-1.3.1-x86_64.AppImage
zstd -v --format=xz  etcher-1.3.1-x86_64.AppImage

10. หากต้องการตั้งค่าลำดับความสำคัญของกระบวนการ zstd ให้เป็นแบบเรียลไทม์ คุณสามารถใช้ตัวเลือก –priority=rt ตามที่แสดง

$zstd --priority=rt etcher-1.3.1-x86_64.AppImage

ธง -r สั่งให้ zstd ทำงานแบบเรียกซ้ำในพจนานุกรม คุณจะพบตัวเลือกขั้นสูงที่เป็นประโยชน์มากมาย วิธีอ่านหรือสร้างพจนานุกรมโดยเข้าไปดูที่หน้า zstd man

man zstd

พื้นที่เก็บข้อมูล Zstandard Github: https://github.com/facebook/zstd

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