๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ์†๋„์™€ ์••์ถ• ์ˆ˜์ค€ ์ธก๋ฉด์—์„œ Zstd ๋ฐ XZ๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” OpenZL ์••์ถ• ์‹œ์Šคํ…œ

Meta*๋Š” Zstd ๋ฐ XZ ํฌ๋งท๋ณด๋‹ค ๋†’์€ ์••์ถ•๋ฅ ๊ณผ ์†๋„๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ ์••์ถ• ๋ฐ ์••์ถ• ํ•ด์ œ ํˆดํ‚ท์ธ OpenZL์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. OpenZL์€ ๋จธ์‹  ๋Ÿฌ๋‹์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ์…‹๊ณผ ๋‹ค์–‘ํ•œ ๋ฐ˜๋ณต ์œ ํ˜•์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ํ•„๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์˜ ํšจ์œจ์ ์ธ ์••์ถ•์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. OpenZL์€ C/C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ BSD ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ์˜คํ”ˆ ์†Œ์Šค๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

SAO ์ฒœ๋ฌธ ๋ณ„ ๋ชฉ๋ก์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์••์ถ•ํ•  ๋•Œ OpenZL์€ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ 2.06๋ฐฐ ์ค„์˜€๊ณ , zstd ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 1.31๋ฐฐ, XZ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 1.64๋ฐฐ ์••์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, OpenZL์€ ์••์ถ• ์†๋„์—์„œ zstd๋ณด๋‹ค 2๋ฐฐ(203MB/s ๋Œ€ 115MB/s), XZ๋ณด๋‹ค 65๋ฐฐ(203MB/s ๋Œ€ 3.1MB/s) ๋” ์šฐ์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. OpenZL์˜ ์••์ถ• ํ•ด์ œ ์†๋„๋Š” zstd๋ณด๋‹ค ์•ฝ๊ฐ„ ๋А๋ ธ๊ณ (822MB/s ๋Œ€ 890MB/s), XZ๋ณด๋‹ค 27๋ฐฐ ๋” ๋นจ๋ž์Šต๋‹ˆ๋‹ค.

 ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ์†๋„์™€ ์••์ถ• ์ˆ˜์ค€ ์ธก๋ฉด์—์„œ Zstd ๋ฐ XZ๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” OpenZL ์••์ถ• ์‹œ์Šคํ…œ

OpenZL์€ ๋ฒ”์šฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•„๋‹ˆ๋ฉฐ, ์•Œ๋ ค์ง„ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. OpenZL์˜ ๋™์ž‘์€ ์ œ๊ณต๋œ ๋ฐ์ดํ„ฐ ์„ค๋ช…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒจ์ปค๋ฅผ ์ ์‘์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ๋ฐ์ดํ„ฐ ํ˜•์‹์— ์ตœ์ ํ™”๋œ ์••์ถ• ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ๋ชจ๋“  ํŒจ์ปค์™€ ํ˜ธํ™˜๋˜๋Š” ๋ฒ”์šฉ ์–ธํŒจ์ปค๊ฐ€ ์••์ถ• ํ•ด์ œ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์••์ถ• ๋ฐ ์••์ถ• ํ•ด์ œ๋Š” ๋‹จ์ผ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ธ "zli" ๋˜๋Š” libopenzl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ํ”„๋กœํŒŒ์ผ ํ˜•ํƒœ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ผ๋ฐ˜์ ์ธ ์ €์žฅ ํ˜•์‹์„ ์„ค๋ช…ํ•˜๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ ํ”„๋กœํŒŒ์ผ ์„ธํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, CSV ํ˜•์‹์ด๋‚˜ 64๋น„ํŠธ ๋ฐฐ์—ด๋กœ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ”„๋กœํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ•์€ "zli list-profiles" ๋ช…๋ น์œผ๋กœ ํ”„๋กœํŒŒ์ผ์„ ์„ ํƒํ•˜๊ณ  "zli compress --profile profile_name" ๋ช…๋ น์œผ๋กœ ์••์ถ• ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๋งŒํผ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•์„ ํ•ด์ œํ•˜๋ ค๋ฉด "zli decompress"๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํŠน์ • ํ˜•์‹์˜ ๊ฒฝ์šฐ, "zli train" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • ํ”„๋กœํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ๋ฐ์ดํ„ฐ ํŒจํ„ด์„ ์‹๋ณ„ํ•˜๊ณ  ์ตœ์ ์˜ ์••์ถ• ์ˆ˜์ค€์„ ๊ฐ€์ง„ ํ”„๋กœํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. "--pareto-frontier" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ์„ฑ๋œ ํ”„๋กœํŒŒ์ผ์„ ์ตœ์ ํ™”ํ•˜์—ฌ ์••์ถ•๋ฅ ์„ ๋‚ฎ์ถ”๋Š” ๋Œ€์‹  ์••์ถ• ๋˜๋Š” ์••์ถ• ํ•ด์ œ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SDDL(Simple Data Description Language)์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋ณต์žกํ•œ ํ˜•์‹์„ ์„ค๋ช…ํ•˜๊ณ  ๊ตฌ์กฐ ๋‚ด ๋ฐ์ดํ„ฐ ํ˜•์‹์˜ ๋ ˆ์ด์•„์›ƒ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ ์˜ ํŒจ์ปค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ ์ธ์ฝ”๋”๊ฐ€ ํŠน์ • ๋ฐ์ดํ„ฐ ์œ ํ˜•๊ณผ ์‹œํ€€์Šค์— ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๊ธฐ๋ณธ ์ธ์ฝ”๋” ์ง‘ํ•ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•์„ ์œ„ํ•ด, ์ฝ”๋ฑ์„ ๋…ธ๋“œ๋กœ, ์ฒ˜๋ฆฌ๋œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ๋ณ€ํ˜•์„ ๊ฐ„์„ ์œผ๋กœ ํ•˜๋Š” ๋ฐฉํ–ฅ์„ฑ ๋น„์ˆœํ™˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ทธ๋ž˜ํ”„๊ฐ€ ํ˜•์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์œ ํ˜•์— ๋”ฐ๋ผ, ์ˆ˜์‹  ๋ฐ์ดํ„ฐ ์š”์†Œ๋ฅผ ์ตœ์ ์œผ๋กœ ์••์ถ•ํ•˜๋Š” ์ฝ”๋ฑ ์ฒด์ธ์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์—์„œ ํŒŒ์ผ ํ—ค๋”๋Š” ์ฒซ ๋ฒˆ์งธ ์ฝ”๋ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•๋˜๊ณ , ์ •์ˆ˜ ๋ฐ์ดํ„ฐ ํ•„๋“œ๋Š” ๋‘ ๋ฒˆ์งธ ์ฝ”๋ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•๋˜๋ฉฐ, ์ฆ๊ฐ€ ์นด์šดํ„ฐ ํ•„๋“œ๋Š” ์„ธ ๋ฒˆ์งธ ์ฝ”๋ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•๋˜๊ณ , ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ํ•„๋“œ๋Š” ๋„ค ๋ฒˆ์งธ ์ฝ”๋ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•๋ฉ๋‹ˆ๋‹ค.

 ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ์†๋„์™€ ์••์ถ• ์ˆ˜์ค€ ์ธก๋ฉด์—์„œ Zstd ๋ฐ XZ๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” OpenZL ์••์ถ• ์‹œ์Šคํ…œ


์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€