大資料中批次壓縮與獨立壓縮的比較 - 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壓縮工具的效能比較Linux
- aix 下壓縮與解壓縮AI
- AIX 上壓縮與解壓縮AI
- aix 檔案的壓縮與解壓縮AI
- 字串的壓縮和解壓縮字串
- Linux下常用壓縮格式的壓縮與解壓方法Linux
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- Linux tar分卷壓縮與解壓縮Linux
- JAVA壓縮和解壓縮Java
- zip壓縮和解壓縮
- android 比較靠譜的圖片壓縮Android
- Java不同壓縮演算法的效能比較Java演算法
- linux壓縮解壓縮Linux
- 檔案壓縮和解壓縮
- Oracle壓縮黑科技(二)—壓縮資料的修改Oracle
- Linux下常用壓縮格式的壓縮與解壓方法---轉載Linux
- Linux 常用的壓縮與解壓縮命令詳解Linux
- 檔案的壓縮與解壓縮zz--linuxLinux
- 簡單的zip壓縮和解壓縮
- tar的打包-壓縮與解壓縮,並解壓到指定的目錄
- JS壓縮方法及批量壓縮JS
- linux壓縮和解壓縮命令Linux
- tar 分卷壓縮&解壓縮命令
- unix和linux下常用壓縮格式的壓縮與解壓方法(轉)Linux
- Linux中檔案的壓縮與解壓縮(轉貼)Linux
- 圖片壓縮怎樣操作?分享幾種實用的批次圖片壓縮技巧
- linux 下壓縮與解壓資料夾Linux
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- Linux壓縮及解壓縮命令Linux
- linux壓縮和解壓縮命令大全Linux
- Python實現壓縮和解壓縮Python
- MySQL實現MYISAM表批次壓縮的方法MySql
- 批次壓縮影片大小的簡單操作分享
- linux 高效壓縮工具之xz的壓縮解壓使用Linux
- ppt怎麼壓縮,ppt壓縮的技巧分享
- Linux中檔案的壓縮和解壓縮Linux
- 解包 bzip2 壓縮的壓縮文件(轉)