選型目標
- 高性能與低延遲:滿足高頻率數據寫入與即時查詢的需求。
- 資源效率:優化存儲空間使用,減少計算資源消耗。
- 可擴展架構:支持數據量增長帶來的擴展需求,易于維護。
- 社區活躍度:有活躍的開發者社區,確保問題快速響應和持續更新。
- 生態集成:良好地與現有工具鏈、監控系統及可視化平臺集成。
市場主流時序數據庫概覽
排名參考:DB-Engines Ranking - popularity ranking of time Series DBMS
國內排名參考:中國數據庫排行 - 墨天輪
1. InfluxDB(MIT)
- 特點:專為時序數據設計,InfluxQL提供類SQL查詢語法,支持集群模式。
- 優勢:寫入與查詢性能優秀,廣泛應用于監控與IoT領域。
- 局限性:高級特性與企業級支持需InfluxDB Cloud或企業版。
2. Prometheus(Apache License 2.0)
- 特點:一套完整的監控與告警解決方案,PromQL查詢語言強大。
- 優勢:輕量級,適用于微服務架構,生態豐富,與Kubernetes集成緊密。
- 局限性:主要面向監控,復雜數據分析能力相對有限。
3. TimescaleDB(Apache License 2.0+TSL)
- 特點:基于PostgreSQL的擴展,提供全SQL支持,自動擴展分區,自動過期清理。
- 優勢:強大的SQL查詢分析能力,易于與關系型數據集成。
- 局限性:相比原生時序數據庫如InfluxDB、TDengine大數據量時性能略低,存儲占用空間更大。
4. TDengine(GNU AGPL v3.0)
- 特點:專為物聯網優化,集成了數據庫、緩存、流處理于一體。
- 優勢:極高性能,存儲效率高,支持SQL查詢,易于部署與管理。
- 局限性:雖然生態在迅速成長,但相比一些成熟項目,社區規模和工具鏈可能較小。
5. IoTDB(Apache License 2.0)
- 特點:面向工業互聯網,輕量級,支持復雜查詢與存儲優化。
- 優勢:專為時序數據設計的存儲模型,支持高效批量寫入與查詢。
- 局限性:相較于某些成熟數據庫,文檔和社區支持可能不夠豐富。
6. OpenGemini(Apache License 2.0)
- 特點:華為開源的分布式時序數據庫,聚焦海量數據存儲與分析。
- 優勢:針對時序數據優化,簡化架構,降低成本,提升效率。
- 局限性:相對較新,社區與生態仍在發展中。
推薦方案
TimescaleDB(基礎版Apache License 2.0協議,社區版Timescale License (TSL)協議,即可以企業內部部署用,不能作為云服務對外售賣。社區版比基礎版多一些高級功能,比如分區壓縮,集群部署功能。)
- 靈活性:TimescaleDB支持標準SQL,對于習慣SQL的團隊來說更容易上手,且能更好地與現有的分析工具和框架集成(我們的業務存在多指標關聯分析行轉列等需求可以方便處理)。
- 擴展性:作為PostgreSQL的擴展,TimescaleDB繼承了其強大的生態系統和可擴展性,適用于從小型到超大規模的數據集(比如大模型需要的向量數據庫和搜索場景需要的倒排索引和相關性排序)。
- 運維與學習成本:如果團隊對PostgreSQL或Mysql熟悉,轉向TimescaleDB的遷移成本相對較低。
- 生產成本:同時支持關系表和時序表,不需要部署兩套數據庫。
timescaledb性能初步測試
國產備選方案
IoTDB(Apache License 2.0協議)
- **低成本、高性能:**數千萬點寫入吞吐量,壓縮比高(官方數據1:10無損壓縮,實測可以做到1:5),可大大節省服務器硬件成本。
- **易用性,跨平臺部署:**僅依靠 JDK/JRE,開箱即用,比較方便集群部署,降低運維成本。
- **多樣化的數據處理和分析方法:**與Apache PLC4X、Apache Pulsar、Apache Flink、Apache Spark、Apache Zeppelin、Grafana等集成,構建完整的開源軟件生態,豐富的數據分析功能,如觸發器、用戶定義功能 (UDF)、選擇進入、連續查詢等。
- 低成本遷移:通過適配器與各種TSDB(InfluxDB,Prometheus,KairosDB等)兼容
- 相對比較新,文檔比較少
- SQL支持能力比較弱,一下復雜查詢支持有限(比如不支持group by作為子查詢)
IotDB性能初步測試
TDengine(Apache License 2.0協議) - 性能:TDengine設計之初就針對物聯網和大規模時序數據進行了優化,能提供極高的寫入與查詢性能。
- 集成度高:內置緩存、流處理功能減少了額外組件的部署與維護,簡化架構。
- 成本效率:高效存儲機制有助于降低長期的存儲成本。
- 易用性:支持SQL查詢,便于開發與維護,同時有較好的管理工具。
- 性能對比:基于 TSBS 標準數據集時序數據庫 TimescaleDB、InfluxDB 與 TDengine 的性能對比測試
實施計劃與風險評估
實施步驟
- 技術驗證:在隔離環境中搭建時序數據庫,進行功能與性能測試。
- 遷移策略:設計數據遷移計劃,包括數據格式轉換和驗證。
- 系統集成:與現有監控、分析工具對接,確保數據流轉無阻。
- 培訓與文檔:組織內部培訓,編寫操作指南和故障排查手冊。
風險評估
- 技術遷移風險:需關注數據遷移過程中可能出現的數據一致性問題。
- 性能匹配風險:實際應用中的性能需經過充分測試驗證。
- 社區支持風險:社區活躍度,特定問題的解決速度仍需評估。
結論
鑒于現用數據庫MariaDB遷移到TimescaleDB成本低(TimescaleDB擴展于PostgreSQL,而MariaDB和PostgreSQL大部分兼容),TimescaleDB在性能方面能夠滿足業務需求同時支持關系數據庫的業務場景,選TimescaleDB作為當前時序數據庫比較合適。后續如果有部分場景對性能有極致要求可以考慮IoTDB等純時序數據庫。