Dosyaları arşivlemek için SQLite'ı kapsayıcı olarak kullanmayı deneyin

Pack projesi, SQLite kitaplığını ve ZSTD (Zstandard) sıkıştırma algoritmasını temel alan bir dosya arşivleme formatı oluşturmaya çalıştı. Pascal'da yazılan ve Apache 2.0 lisansı altında dağıtılan hazırlanan prototip, işi verileri okumak, libzstd kütüphanesi ile sıkıştırmak ve SQL işlemlerini gerçekleştirmekle sınırlı olmasına rağmen arşiv oluşturma hızında en yaygın arşivleyicilerden daha iyi performans gösterdi. SQLite veritabanına sahip bir dosyaya sıkıştırılmış veri ekleyin.

Toplam boyutu 81 GB olan 1.25 bin dosyalık bir dizini sıkıştırırken paket, ZIP yardımcı programından 112 kat daha hızlıydı ve ZIP için 1.3 saniyede işlemi 146 saniyede tamamlıyordu. Paketin arşiv boyutu %23 daha küçüktü (Pack için 194 MB ve ZIP için 253 MB). Karşılaştırma için, tar yardımcı programı paketlemeyi sıkıştırma olmadan 4.7 saniyede ve gzip sıkıştırmasıyla 28.5 saniyede tamamladı; RAR arşivleyicisi testi 27.5 saniyede ve 7z 54.2 saniyede tamamladı. Arşiv boyutları şu şekildeydi: tar.gz - 214 MB, RAR - 235 MB, 7z - 135 MB. Pack'in paket açma hızı ve dosyalara rastgele erişim açısından da diğer arşivleyicilerden önde olduğu ve daha az RAM tükettiği belirtiliyor. ZIP: 253 MB, 146 s 7z: 135 MB, 54.2 s daha hızlı ZIP 2.7 kat tar.gz: 214 MB, 28.5 sx 5.1 RAR: 235 MB, 27.5 sx 5.3 tar: 1345 MB, 4.7 sx 31 Paket: 194 MB, 1.3 SX112

Dosya önbelleğinin test sonuçları üzerindeki etkisinden bahsedilmiyor. Muhtemelen, ZIP'in düşük hızı, bellekteki verilerin önbelleğe alınmasına bakılmaksızın testlerin başlatılma sırasından kaynaklanmaktadır - zip ile yapılan test soğuk önbellekle ve geri kalan testler sıcak önbellekle başlatılmıştır. Normal koşullar altında Zstandard, %3-5 daha yüksek sıkıştırma seviyeleriyle zlib'e göre 10-15 kat daha hızlı sıkıştırma hızı ve XNUMX kat daha hızlı dekompresyon sergiler.

Ekleme: Sıkıştırılmış dosyaların SQLite veritabanında bloblar şeklinde saklanmasına ilişkin benzer bir fikir, 2014 yılında SQLite geliştiricileri tarafından SQLite'de blobları depolamanın verimliliğini değerlendirmek için bir deney olarak oluşturulan sqlar arşivleyicisinde uygulandı. sql, sıkıştırma için zlib'i kullanır ve dosya boyutu, ZIP yardımcı programından yaklaşık %2 daha büyüktür.

Kaynak: opennet.ru

Yorum ekle