你可曾遇到這種需求,只有幾百qps的冷資料快取,卻因為儲存水位要浪費幾十台伺服器?你可曾遇到這種需求,幾百g的表,必須純cache命中,效能才能滿足業務需求?你可曾遇到,幾十m的小表,由於qps過高,必須不停的split,balance,利用多台伺服器來抗熱點?
面對繁雜的場景,ali-hbase團隊一直致力於為業務提供更多的選擇和更低的成本。本文主要介紹了hbase目前兩種提高壓縮率的主要方法:壓縮和datablockencoding。
通用壓縮是資料庫減少儲存的重要手段,在hbase中也存在廣泛應用。通常資料庫都存在資料塊的概念,針對每個塊做壓縮和解壓。塊越大,壓縮率越高,scan throughput增加;塊越小,latency越小。作為一種tradeoff,線上hbase通常採用64k塊大小,在cache中不做壓縮,僅在落盤和讀盤時做壓縮和解壓操作。
zstandard(縮寫為zstd)是一種新的無失真壓縮演算法,旨在提供快速壓縮,並實現高壓縮比。它既不像lzma和zpaq那樣追求盡可能高的壓縮比,也不像lz4那樣追求極致的壓縮速度。這種演算法的壓縮速度超過200mb/s, 解壓速度超過400mb/s,基本可以滿足目前hbase對吞吐量的需求。經驗證,zstd的資料壓縮率相對於lzo基本可以提高25%-30%,對於儲存型業務,這就意味著三分之一到四分之一的的成本減少。
而在另一種情況下,部分表儲存量較小,但qps大,對rt要求極高。針對這種場景,我們引入了lz4壓縮,其解壓速度在部分場景下可以達到lzo的兩倍以上。一旦讀操作落盤需要解壓縮,lz4解壓的rt和cpu開銷都明顯小於lzo壓縮。
我們通過一張直觀的展示各種壓縮演算法的效能:
設計模式之原型模式 看我72變!
四 原型模式的示例 五 原型模式的優缺點 原型模式是一種物件建立型模式,它採取複製原型物件的方法來建立物件的例項,而不需要知道建立物件的細節過程,它是目標物件的乙個 自我轉殖 1 建立乙個物件的成本比較大時,可以考慮使用複製的方式獲取乙個新物件。為具體原型提供乙個統一抽象介面,需要具體原型類實現。被...
python資料型別的72變
輸入資料的型別 input函式接收的資料預設為字串型別 轉換函式 通過轉換函式實現接收其他型別的資料 1.接收整數 字串 整型資料 int 整數格式的字串 2.接收小數 字串 浮點型資料 float 小數格式的字串 注意事項 1.字串型別資料可以轉換成其他型別資料,但是資料必須是可轉換的。例如 12...
關係型資料庫到HBase的資料儲存方式變遷
如今bigtable型 列族 資料庫應用越來越廣,功能也很強大。但是很多人還是把它當做關係型資料庫在使用,用原來關係型資料庫的思維建表 儲存 查詢。本文以hbase舉例講述資料模式的變化。傳統關係型資料庫 mysql,oracle 資料儲存方式主要如下 上圖是個很典型的資料儲存方式,我把每條記錄分成...