Eksperimento gamit ang SQLite bilang isang lalagyan para sa pag-archive ng mga file

Sinubukan ng proyektong Pack na lumikha ng format ng pag-archive ng file batay sa SQLite library at ang ZSTD (Zstandard) compression algorithm. Ang nagresultang prototype, na isinulat sa Pascal at ipinamahagi sa ilalim ng lisensya ng Apache 2.0, ay nalampasan ang pinakakaraniwang mga archiver sa bilis ng paggawa ng archive, sa kabila ng pagiging limitado ng operasyon nito sa pagbabasa ng data, pag-compress nito gamit ang libzstd library, at pagsasagawa ng mga operasyong SQL upang idagdag ang naka-compress na data sa isang file sa isang database ng SQLite.

Kapag nag-compress ng isang direktoryo na naglalaman ng 81,000 mga file na may kabuuang sukat na 1.25 GB, ang pack ay 112 beses na mas mabilis kaysa sa ZIP, na kinukumpleto ang operasyon sa loob ng 1.3 segundo kumpara sa 146 na segundo para sa ZIP. Ang laki ng archive ng Pack ay 23% na mas maliit (194 MB para sa Pack at 253 MB para sa ZIP). Para sa paghahambing, nakumpleto ng tar ang compression sa loob ng 4.7 segundo nang walang compression at 28.5 segundo na may gzip compression. Nakumpleto ng RAR ang pagsubok sa loob ng 27.5 segundo, at 7z sa loob ng 54.2 segundo. Ang mga laki ng archive ay: tar.gz - 214 MB, RAR - 235 MB, 7z - 135 MB. Nahigitan din ng Pack ang iba pang mga archiver sa mga tuntunin ng bilis ng pag-unpack at random na pag-access ng file, habang kumokonsumo ng mas kaunting RAM. ZIP: 253 MB, 146 s 7z: 135 MB, 54.2 s mas mabilis na ZIP 2.7 beses na tar.gz: 214 MB, 28.5 sx 5.1 RAR: 235 MB, 27.5 sx 5.3 tar: 1345 MB, 1345 MB, 31 MB 1.3 SX 112

Ang epekto ng file cache sa mga resulta ng pagsubok ay hindi binanggit. Ang mababang bilis ng ZIP ay malamang na dahil sa pagkakasunud-sunod ng pagpapatakbo ng mga pagsubok, nang walang pagsasaalang-alang sa pag-cache ng memorya—ang ZIP test ay pinatakbo gamit ang isang malamig na cache, habang ang iba pang mga pagsubok ay pinapatakbo gamit ang isang mainit na cache. Sa ilalim ng normal na mga kondisyon, nagpapakita ang Zstandard ng 3-5 beses na mas mabilis na compression kaysa sa zlib at dalawang beses na mas mabilis na decompression, na may 10-15% na mas mataas na compression ratio.

Update: Ang isang katulad na ideya ng pag-iimbak ng mga naka-compress na file bilang mga blobs sa isang SQLite database ay ipinatupad noong 2014 sa sqlar archiver, na nilikha ng mga developer ng SQLite bilang isang eksperimento upang suriin ang kahusayan ng pag-iimbak ng mga blobs sa SQLite. Gumagamit ang sqlar ng zlib para sa compression, at ang mga sukat ng file ay humigit-kumulang 2% na mas malaki kaysa sa ZIP utility.

Pinagmulan: opennet.ru

Bumili ng maaasahang pagho-host para sa mga site na may proteksyon ng DDoS, mga server ng VPS VDS 🔥 Bumili ng maaasahang website hosting na may proteksyon ng DDoS, VPS VDS servers | ProHoster