Easysearch壓縮模式深度比較:ZSTD+source_reuse的優勢分析

infinilabs發表於2023-10-15

引言

在使用 Easysearch 時,如何在儲存和查詢效能之間找到平衡是一個常見的挑戰。Easysearch 具備多種壓縮模式,各有千秋。本文將重點探討一種特別的壓縮模式: zstd + source_reuse,我們最近重新最佳化了  source_reuse,使得它在吞吐量和儲存效率方面都表現出色。

測試概覽

測試條件選用了 esrally 工具和 geonames 資料集來進行壓力測試。資料集包含了 11396503 條記錄,往單個 shard 寫入,對以下幾種壓縮模式進行壓測對比:

  • default

  • best_compression

  • zstd

  • zstd + source_reuse

下圖是對 CPU 的監控,可以看到各個模式對 CPU 的使用是基本相近的。

  • default
  • best_compression
  • zstd
  • zstd+reuse

關鍵資料點

測試結果主要圍繞兩個指標:

  • 中位吞吐量:單位為“每秒運算元”,數值越大表示效能越好。
  • 儲存大小:單位為 “GB”,數值越小表示儲存更加高效。

測試資料如下:

壓縮模式 中位吞吐量 (docs/s) 儲存大小 (GB)
default 37834 2.7
best_compression 37404 2.2
zstd 38878 2.1
zstd + source_reuse 38942 1.6

zstd + source_reuse:壓縮原理

該模式採用了  source_reuse 壓縮演算法,該演算法透過對  keywordlongintshortboolean 等型別的欄位值進行復用,並結合 zstd 壓縮演算法,大大提高了儲存效率。

壓縮效率

zstd + source_reuse 在儲存大小上的表現尤為出色,針對 geonames 資料集只需 1.6 GB 的儲存空間,相比於  best_compression 模式的 2.2 GB,壓縮效率顯著提高。

吞吐量表現

高壓縮率並沒有讓  zstd + source_reuse 在吞吐量上做出妥協,因為高壓縮率使得其需要持久化的資料大大減小,其中位吞吐量為 38942 docs/s,在 4 種模式中表現最好。

結論

zstd + source_reuse 壓縮模式在儲存效率和查詢效能之間找到了一種極佳的平衡,強烈推薦各位在使用 Easysearch 時,當儲存成本比較敏感時,考慮使用  zstd + source_reuse 壓縮模式。無論是在儲存成本還是寫入效能方面,它都能為你帶來顯著的優勢。

關於 Easysearch

about easysearch

INFINI Easysearch 是一個分散式的近實時搜尋與分析引擎,核心引擎基於開源的 Apache Lucene。Easysearch 的目標是提供一個輕量級的 Elasticsearch 可替代版本,並繼續完善和支援更多的企業級功能。 與 Elasticsearch 相比,Easysearch 更關注在搜尋業務場景的最佳化和繼續保持其產品的簡潔與易用性。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70029458/viewspace-2988983/,如需轉載,請註明出處,否則將追究法律責任。

相關文章