六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

時序數(shù)據(jù)庫 TDengine 檢測數(shù)據(jù)最佳壓縮算法工具,助你一鍵找出最優(yōu)壓縮方案

在使用 TDengine 存儲時序數(shù)據(jù)時,壓縮數(shù)據(jù)以節(jié)省磁盤空間是至關(guān)重要的。TDengine 支持用戶根據(jù)自身數(shù)據(jù)特性靈活指定壓縮算法,從而實現(xiàn)更高效的存儲。然而,如何選擇最合適的壓縮算法,才能最大限度地降低存儲開銷?為了解決這一問題,我們特別推出了一個實用工具,幫助用戶快速判斷并選擇最適合其數(shù)據(jù)特征的壓縮算法。

本工具通過分析樣本數(shù)據(jù),提供最佳壓縮率的檢測結(jié)果,并同時輸出與之相關(guān)的兩個關(guān)鍵性能指標:寫入速度和查詢速度。由于寫入過程中涉及數(shù)據(jù)壓縮,壓縮效率越高,寫入速度越快;而查詢過程中則需要解壓數(shù)據(jù),解壓效率越高,查詢速度越快。借助這些指標,用戶可以根據(jù)實際需求,在存儲效率與訪問性能之間找到最佳平衡,選擇最適合自己數(shù)據(jù)的壓縮算法。

下載和安裝

1. 本工具為開源工具,使用 python 編寫
2. 工具下載地址:https://github.com/taosdata/TDengine/tree/3.0/tools/auto/testCompression
3. 本工具為綠色軟件,下載后即可使用,無需安裝

使用指南

文件說明

1. testCompression.py:主程序文件,運行時需依賴 json/template.json。
2. json 目錄:存放運行 taosBenchmark 所需的 JSON 和 CSV 文件。
3. json/tempalte.json:taosBenchmark 用于生成不同二級壓縮算法的模板文件,文件名固定不可修改,格式與使用方法詳見官網(wǎng)文檔:https://docs.taosdata.com/reference/tools/taosbenchmark/。模板文件中使用宏 @COMPRESS 表示壓縮算法名。支持的四種壓縮算法分別為:zlib、xz、zstd、lz4,以及 disabled(關(guān)閉二級壓縮)。
4. d0_10w.csv.zip:測試樣本數(shù)據(jù)文件(10 萬條數(shù)據(jù))。使用前需解壓至當前目錄,在 template.json 中有引用。
5. query.json:報告中 query-QPS 指標的來源,通過 taosBenchmark 測試查詢性能,使用可詳見官網(wǎng)taosBenchmark 使用說明。
6. generate.json:配置文件用于通過 taosBenchmark 生成樣例數(shù)據(jù) d0_10w.csv??梢孕薷拇?json 生成更大規(guī)模的數(shù)據(jù)集(如 100 萬或更多)。

使用步驟

1. 前置條件:   
  1)確認已安裝 TDengine 3.3.2.0 及以上版本   
  2)確認已安裝 python3   
  3)確認已安裝 TDegnine 的 python3 連接器 taospy   
  4)確認 taosd 服務(wù)已啟動,執(zhí)行 taos 可正常連接 TDengine   
  5)確認 taosBenchmark(安裝包中自帶) 能運行

2. 進入倉庫源碼目錄 testCompression3. 解壓 json/d0_10w.csv.zip 到當前 json 目錄,確認 d0_10w.csv 在 json 目錄下存在
4. 在 testCompression 目錄下執(zhí)行 python3 ./testCompression.py 運行主程序啟動檢測
5. 輸出測試報告,測試完成。歷史測試報告記錄在 ./result.txt

操作步驟如下:


# 安裝 TDengine python 連接器
pip3 install taospy
# 下載 TDengine 開源代碼倉庫
git clone https://github.com/taosdata/TDengine.git
# 進入工具目錄
cd TDengine/tools/auto/testCompression
# 解壓測試樣本數(shù)據(jù)集
unzip json/d0_10w.csv.zip -d ./json/
# 運行主程序
python3 testCompression.py
# 查看測試報告
cat ./result.txt

輸出報告

為了檢測更精準,在上一步示例操作中把 tempalte.json 文件中子表數(shù) childtable_count 從 1 改為 10 ,數(shù)據(jù)規(guī)模擴大 10 倍到 100w 后得到的檢測數(shù)據(jù)如下——

數(shù)據(jù)分布說明:100w 數(shù)據(jù)是把 csv 文件中 10w 數(shù)據(jù)復(fù)制出 10 份放到 10 個子表中的

時序數(shù)據(jù)庫 TDengine 檢測數(shù)據(jù)最佳壓縮算法工具,助你一鍵找出最優(yōu)壓縮方案 - TDengine Database 時序數(shù)據(jù)庫

從結(jié)果可以看出,此樣本數(shù)據(jù)下最好的 xz 壓縮算法與最差的 lz4 之間壓縮率差距還是很大的。

格式說明:

1. 第一行括號中的時間為測試開始時間,最后一行為測試完成時間。

2. 2 ~ 4 行是記錄 taosBenchmark json 文件中的幾個重要信息,VGROUPD 數(shù)量,子表數(shù)量及生成子表行數(shù)。

3. 下面 5 ~ 10 行為報告內(nèi)容,各列如下:
No:序號compress:壓縮算法dataSize磁盤上壓縮后數(shù)據(jù)文件大小rate:壓縮率writeSpeed: 寫入速度  (單位:寫入行數(shù)/每秒)query-QPS:  查詢 QPS(單位:查詢請求數(shù)/每秒),查詢 sql 可在 json/query.json 中指定

4. 重點說下 rate (壓縮率)的計算:
分母:
1)對于固定長度數(shù)據(jù)類型,分母即約定的長度 bool ( 1 字節(jié))tinyint ( 1 字節(jié)) smallint ( 2 字節(jié)) int ( 4 字節(jié)) 等
2)對于可變長度數(shù)據(jù)類型,如 varchar, binary , nchar 等,分母是在建表時創(chuàng)建字段時指定的長度,如 varchar(12) 即 12 字節(jié)

分子:壓縮后數(shù)據(jù)的實際大小
此壓縮率是以超級表為統(tǒng)計單位,統(tǒng)計的是超級表及其所有子表。

更換樣本

更換為自己的樣本數(shù)據(jù),需要修改以下幾處:

1. 更換 CSV 文件
若你的數(shù)據(jù)已在 TDegnine 中,可以通過 taos-CLI 工具導(dǎo)出。
重點強調(diào)下,一個 csv 文件中只能存放一張子表數(shù)據(jù)。
選擇一個最具代表數(shù)據(jù)特征的子表,假設(shè)為 d0,可以使用  select * from d0 >> d0.csv 命令完成導(dǎo)出,導(dǎo)出后的 csv 需刪除第一行(第一行是列名,  非數(shù)據(jù),需刪除)。
步驟如下:

# taos-CLI 中導(dǎo)出表數(shù)據(jù)到 csv 
select * from d0 >> d0.csv
# shell 中刪除 csv 首行
sed -i '1d' d0.csv

2. template.json 中做相應(yīng)修改
1. “prepared_rand”: 100000  一定要改為大于或等于你的 CSV 文件行數(shù)
2. “sample_file”: “./json/d0_10w.csv”  改成你 csv 文件路徑
3. “use_sample_ts”: “yes”,   如果你的 csv 文件中第一列是時間主列,保持 yes 不動,即寫入數(shù)據(jù)的時間使 用 csv 文件中的第一列時間。如果你的 csv 文件沒有時間列的,改成 no,由 taosBenchmark 幫你生成時間列,生成時間的開始時間由”start_timestamp” 指定,步長由 “timestamp_step” 指定,每個子表生成的記錄數(shù)由 “insert_rows” 指定。
4. “childtable_count”: 1, CSV 文件寫入到幾個子表中,每個子表寫入數(shù)據(jù)都是和 CSV 中數(shù)據(jù)是相同的,填寫你期望的數(shù)量。
5. “columns”:更換成與你 CSV 文件中數(shù)據(jù)相匹配的列類型

示例:如你的 CSV 文件有 100 萬行, 你希望能把寫入數(shù)據(jù)規(guī)模擴大 10 倍,那按照如下代碼中藍色標記進行修改即可:

{
    "filetype": "insert",
    ...
    "prepared_rand": 1000000,
    "databases": [
        {
            "dbinfo": {
                "name": "dbrate",
                ...
            },
            "super_tables": [
                {
                    "name": "meters",
                    "childtable_count": 10,
                    "childtable_prefix": "d",
                    "insert_rows": 1000000,
                    ...
                }
            ]
        }
    ]
}

檢測方法

1. 整體檢測
這種方式是通過按用戶實際建表結(jié)構(gòu)和實際數(shù)據(jù)進行整體壓縮率測試,上述示例即屬于這種,一個 CSV 文件中混合著表的所有數(shù)據(jù)類型,對所有數(shù)據(jù)類型整體上評估最佳壓縮算法。該方法優(yōu)點是操作簡單,檢測速度快,但卻無法針對不同數(shù)據(jù)類型的列分別優(yōu)化,可能會忽略各列數(shù)據(jù)類型對應(yīng)的最佳壓縮算法。

2. 單數(shù)據(jù)列檢測
單數(shù)據(jù)列檢測方式將用戶實際建表中的所有列按數(shù)據(jù)類型分組,例如,如果表中包含四種數(shù)據(jù)類型,則分為四組,每組分別進行一次測試。該方法的優(yōu)勢在于,CSV 文件中僅保留時間列和指定的數(shù)據(jù)類型列,使得檢測結(jié)果更加精確,能夠準確找到該數(shù)據(jù)類型的最佳壓縮率。但其缺點是需要進行多輪操作,增加了測試的復(fù)雜性和時間成本。

常見問題

1. 我的數(shù)據(jù)樣本應(yīng)該多大合適?

原則上,數(shù)據(jù)越大,檢測壓縮率越準確。建議 CSV 文件的行數(shù)不少于 1 萬,寫入數(shù)據(jù)庫的總行數(shù)不少于 100 萬。通過配置多個子表寫入,可以進一步放大樣本數(shù)量,提升測試的精度。

2. 機動車我已知某列最佳壓縮算法,不想再每輪測試中再改變,怎么辦?

我們的目標是找出每列數(shù)據(jù)的最佳壓縮算法。當已知某列的最佳壓縮算法時,可在 template.json 中直接用具體算法名替換 @COMPRESS 宏,這樣在測試過程中,該列的壓縮算法將保持不變。

3. TDengine 都支持哪些壓縮算法?

壓縮算法支持列表請參考官網(wǎng):https://docs.taosdata.com/reference/taos-sql/compress/

4. 如何在 template.json 中定義數(shù)據(jù)類型?

在 csv 測試樣本數(shù)據(jù)中,每一列數(shù)據(jù)都需要在 template.json 中聲明數(shù)據(jù)類型。可參考 taosBenchmark 使用說明 最后一節(jié)的“數(shù)據(jù)類型書寫對照表”,確保數(shù)據(jù)類型定義正確:https://docs.taosdata.com/reference/tools/taosbenchmark/

結(jié)語

通過該工具,用戶可以更高效地測試并選擇最適合自身數(shù)據(jù)的壓縮算法,不僅提升存儲效率,還能在性能和存儲之間取得最佳平衡。無論是整體壓縮測試還是單數(shù)據(jù)列檢測,該工具都為不同需求提供了靈活的方案,幫助用戶快速找到解決方案。同時,如果您在使用過程中有任何疑問或遇到問題,歡迎訪問我們的開源社區(qū):https://github.com/taosdata 與社區(qū)成員互動,或發(fā)送郵件至 kjduan@taosdata.com 與我們聯(lián)系。