大資料中批次壓縮與獨立壓縮的比較 - Bozho
壓縮在處理大量資料時效果更好,玩資料壓縮可能被視為過早的最佳化。但是,在對大型資料集進行操作的系統中,這一決定可以為您節省很多儲存成本。
如果您必須壓縮100個句子,則最好批次壓縮它們,而不是一次壓縮一個句子。讓我說明一下:
public static void main(String[] args) throws Exception { List<String> sentences = new ArrayList<>(); for (int i = 0; i < 100; i ++) { StringBuilder sentence = new StringBuilder(); for (int j = 0; j < 100; j ++) { sentence.append(RandomStringUtils.randomAlphabetic(10)).append(" "); } sentences.add(sentence.toString()); } byte[] compressed = compress(StringUtils.join(sentences, ". ")); System.out.println(compressed.length); System.out.println(sentences.stream().collect(Collectors.summingInt(sentence -> compress(sentence).length))); } |
compress方法使用commons-compress輕鬆生成多種壓縮演算法的結果:
public static byte[] compress(String str) { if (str == null || str.length() == 0) { return new byte[0]; } ByteArrayOutputStream out = new ByteArrayOutputStream(); try (CompressorOutputStream gzip = new CompressorStreamFactory() .createCompressorOutputStream(CompressorStreamFactory.GZIP, out)) { gzip.write(str.getBytes("UTF-8")); gzip.close(); return out.toByteArray(); } catch (Exception ex) { throw new RuntimeException(ex); } } |
結果如下,
演算法 批次 單獨 <p class="indent">[code]GZIP 6590 10596 LZ4_FRAMED 9214 10900 BZIP2 6663 12451 |
批次壓縮明顯快於單獨壓縮!
為什麼會有明顯的不同結果?由於大多數壓縮演算法的工作方式–它們在原始資料中查詢模式並建立這些模式的對映(非常粗略的描述)。
這有什麼用?在基礎儲存支援按記錄壓縮的大資料方案中(例如資料庫或搜尋引擎),如果將多個記錄捆綁到一個儲存/索引的記錄中,則可以節省大量磁碟空間。
但是,這不是一般有用的建議。您應該檢查特定的資料儲存實現。例如,MS SQL Server支援行和頁面壓縮。Cassandra確實在SSTable級別進行壓縮,因此您如何構造行可能無關緊要。當然,如果將資料儲存在檔案中,則將其儲存在一個檔案中並進行壓縮比分別壓縮多個檔案更有效。
相關文章
- Linux tar分卷壓縮與解壓縮Linux
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- Linux 常用的壓縮與解壓縮命令詳解Linux
- 檔案壓縮和解壓縮
- linux 下壓縮與解壓資料夾Linux
- Python實現壓縮和解壓縮Python
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- JS壓縮方法及批量壓縮JS
- Linux中檔案的壓縮和解壓縮Linux
- linux 高效壓縮工具之xz的壓縮解壓使用Linux
- 圖片壓縮怎樣操作?分享幾種實用的批次圖片壓縮技巧
- 告警壓縮與降噪
- 7z——擁有極高壓縮比的開源壓縮軟體
- Linux下檔案的壓縮與解壓Linux
- ppt怎麼壓縮,ppt壓縮的技巧分享
- MySQL實現MYISAM表批次壓縮的方法MySql
- 批次壓縮影片大小的簡單操作分享
- Linux壓縮解壓Linux
- CentOS 壓縮解壓CentOS
- AWS Graviton2上資料壓縮演算法效能比較演算法
- 強大且易於使用的壓縮和解壓縮軟體:Keka for MacMac
- Linux科研武器庫 - 檔案壓縮與解壓縮 - zip / unzipLinux
- Linux下的tar壓縮解壓縮命令詳解Linux
- NET中SharpZipLib 的使用(一)【壓縮與解壓】
- 打包/壓縮
- Gzipped 壓縮
- Nginx R31 doc-11-Compression and Decompression 壓縮與解壓縮Nginx
- 用ASP實現線上壓縮與解壓縮功能程式碼
- linuxtar解壓和壓縮Linux
- linux分卷壓縮解壓Linux
- betterzip怎麼解壓檔案?如何使用BetterZip批次解壓壓縮檔案
- Easysearch壓縮模式深度比較:ZSTD+source_reuse的優勢分析模式
- 壓縮包格式有哪些?壓縮包格式大全
- 壓縮Word,一鍵實現Word文件壓縮
- pdf怎麼壓縮,好用的pdf壓縮工具介紹
- pigz更快的壓縮和解壓工具
- 分卷壓縮怎麼解壓 快速解壓電腦分卷壓縮檔案方法