時序數據庫簡介和安裝

一、簡介

1. 什么是時序數據庫?

時序數據庫是專門用于存儲和處理時間序列數據的數據庫系統。

時間序列數據是指按時間順序索引的一系列數據點。每個數據點都包含:

  1. 一個時間戳:記錄數據產生的時間。

  2. 一個或多個指標值:例如溫度、濕度、CPU使用率、股價、銷售額等。

  3. 一組標簽:用于標識數據的來源和屬性,例如設備ID、傳感器類型、地理位置、股票代碼等。

核心思想:數據是按時間流入的,查詢也總是圍繞時間區間展開。

2. 時序數據的特點

時序數據有其獨特的模式,這與傳統的關系型數據(如訂單、用戶信息)截然不同:

  • 海量性:數據源源不斷地產生,數據量巨大。一個傳感器每秒鐘上報一次數據,一年就能產生3150萬條記錄。

  • 時效性:新數據按時間順序追加,幾乎不會有舊數據的更新或刪除操作。

  • 冷熱分明:越新的數據被查詢和使用的頻率越高(熱數據),越老的數據被訪問的頻率越低(冷數據)。

  • 多寫少讀:95%以上的操作是寫入(插入新的數據點),讀取操作相對較少,但查詢模式復雜。

  • 高并發寫入:通常需要同時接收來自成千上萬個設備或代理的高并發寫入請求。

3. 為什么需要專門的時序數據庫?

傳統關系型數據庫(如 MySQL, PostgreSQL)在處理時序數據時會遇到巨大挑戰:

  1. 寫入瓶頸:頻繁的INSERT操作會產生大量寫入負載,關系型數據庫的B+樹索引在大量寫入時維護成本極高,容易成為瓶頸。

  2. 存儲成本高:原始數據不經壓縮直接存儲,占用空間巨大。

  3. 查詢效率低:基于時間的范圍查詢、聚合查詢(如求1小時內的平均值、最大值)性能很差,尤其是在海量數據中。

  4. 數據生命周期管理困難:難以高效地自動刪除過期數據(數據降采樣和保留策略)。

時序數據庫正是為了解決這些痛點而設計的。

4. 時序數據庫的核心技術與優勢

  1. 列式存儲

    • 傳統數據庫是行式存儲,一行數據(所有列)存儲在一起,適合OLTP事務。

    • 時序數據庫采用列式存儲,將同一列的數據存儲在一起。這對于聚合查詢(如求所有設備在某個時間段的平均溫度)極其高效,因為只需要讀取特定的列,I/O效率極高。

  2. 高效壓縮

    • 由于指標值在時間上通常緩慢變化或具有重復性(如true/false狀態),列式存儲非常適合壓縮。

    • 常用的壓縮算法如 Gorilla、Delta-of-delta、Simple-8b 等,可以將數據壓縮到原始大小的十分之一甚至二十分之一,極大地降低了存儲成本。

  3. 專為時間優化的索引

    • 時序數據庫通常對時間戳建立主索引,使其能快速定位到某個時間范圍內的數據。

    • 標簽建立倒排索引或其他高效索引,使得能快速過濾出某個特定設備或某類設備的數據。

    • 這種“時間戳 + 標簽”的索引組合,完美契合了“查詢某設備在某時間段內的數據”這類典型場景。

  4. 數據降采樣與保留策略

    • 保留策略:可以自動刪除超過指定時間的老數據,釋放存儲空間。

    • 降采樣:可以自動將高精度的原始數據(如每秒一次)聚合計算成低精度的數據(如每小時的平均值),并存儲下來。這樣在查詢歷史趨勢時,可以使用降采樣后的數據,極大地提升查詢速度并節省存儲空間。

  5. 強大的聚合函數和連續查詢

    • 內置了大量針對時序數據的聚合函數(MEAN,?SUM,?MAX,?MIN,?MEDIAN,?DERIVATIVE(求導)等)。

    • 支持連續查詢,可以定期自動執行聚合查詢并將結果存入另一張表,用于實現實時儀表盤或告警。

5. 常見的時序數據庫

  • InfluxDB:Go語言編寫,是目前最流行、生態最完善的時序數據庫之一。開源版和商業版功能有差異。

  • Prometheus:CNCF畢業項目,起源于監控系統,其存儲引擎是專為監控場景設計的時序數據庫。是 Kubernetes 生態中的監控事實標準。

  • TimescaleDB:基于 PostgreSQL 的擴展,將其轉變為一個全功能的時序數據庫。優勢是支持完整的SQL,能與現有PostgreSQL生態無縫集成。

  • TDengine:國產優秀的時序數據庫,以其極高的性能和壓縮比著稱。開源版和商業版并行。

  • OpenTSDB:基于 Hadoop 和 HBase 構建,歷史悠久,適合大規模集群。

  • QuestDB:一個高性能、開源的時序數據庫,專注于速度和易用性。

6. 典型應用場景

  • 監控系統:IT基礎設施監控(服務器CPU、內存、磁盤IO)、應用性能監控(APM)、微服務鏈路追蹤。

  • 物聯網:智能家居傳感器數據、工業物聯網設備狀態監控、車聯網車輛軌跡與狀態。

  • 金融科技:實時股價、交易記錄、風險控制指標、欺詐檢測。

  • ** DevOps與SRE**:服務性能指標、日志事件的時間序列化分析。

  • 商業智能:網站實時訪問量、廣告點擊率、銷售額隨時間的變化趨勢。

總結對比

特性時序數據庫傳統關系型數據庫
數據模型基于時間戳和標簽基于行和表的關系模型
寫入模式高并發、追加寫入隨機讀寫、更新、刪除
存儲效率極高(列式存儲+高效壓縮)較低
典型查詢時間范圍聚合、分組關聯查詢、事務、點查
擴展性易于水平擴展(分片)垂直擴展或復雜的分庫分表

總而言之,時序數據庫是應對海量時間序列數據挑戰的專用工具,它在寫入性能、存儲成本和時序查詢效率方面相比傳統數據庫有數量級的提升,是構建現代監控、物聯網和分析系統不可或缺的基礎組件。

二、安裝

1. 拉取鏡像


sudo docker pull apache/iotdb:1.3.2-standalone

2.啟動和運行容器

注意:這個命令啟動的容器不能退出終端,退出后所有表都刪除了,再次登錄需要重新建表。這里僅作演示用。

docker run --rm -p 6667:6667 --name iotdb apache/iotdb:1.3.2-standalone?

當控制臺出現這樣的提示則表明啟動成功:

o.a.i.db.service.DataNode:227 - Congratulations, IoTDB DataNode is set up successfully. Now, enjoy yourself!?

下載好后,可以安裝dbeaver對時序數據進行可視化操作。

3. 安裝dbeaver

下載地址:https://dbeaver.io/files/7.2.5/

4. dbeaver連接iotdb

4.1 添加iotdb驅動 (數據庫->驅動管理器)
4.2 建立iotdb連接
4.2.1 選中iotdb驅動
4.2.2 JDBC URL: jdbc:iotdb://ip:6667 #ip替換為數據庫所在服務器的ip
默認賬號?用戶名: root??密碼: root

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96048.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96048.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96048.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

comfyUI 暴露網絡restful http接口

https://zhuanlan.zhihu.com/p/686893291 暴露websocket接口。 打開開發者選項 如圖

linux系統address already in use問題解決

linux系統上某個端口被占用,如何解決?1.找到占用的進程編號:netstat -tulnp | grep :80002.強制殺死該進程kill -9 80603其他說明:1.查找占用端口的進程,可以用:lsof -i :8001 # 或者使用 netstat -tulnp |…

基于SpringBoot的家政保潔預約系統【計算機畢業設計選題 計算機畢業設計項目 計算機畢業論文題目推薦】

🍊作者:計算機編程-吉哥 🍊簡介:專業從事JavaWeb程序開發,微信小程序開發,定制化項目、 源碼、代碼講解、文檔撰寫、ppt制作。做自己喜歡的事,生活就是快樂的。 🍊心愿:點…

【Linux系統】 4. 權限(一)

一. shell 命令及運行原理基本理解1)廣義理解的操作系統包括:操作系統內核、外殼程序(shell命令行、圖形化界面)、必要的軟件。2)狹義的操作系統:操作系統內核。3)在用戶和內核之間有一個外殼程…

6.python——字符串

python中用’ 和" "創建字符串 python的子字符串截取用[]取字符串拼接可以直接用相加。 python三引號允許一個字符串跨多行,其中無需進行轉義(所見即所得)。 當你需要一塊HTML或者SQL時,這時用字符串組合,特…

足球數據API接口的技術特性與應用價值分析

一、接口概述現代足球數據接口是基于RESTful架構的數據服務,通過標準化方式提供賽事相關信息。這類接口通常采用JSON格式傳輸數據,支持跨平臺調用,為開發者提供結構化的足球賽事數據。二、數據覆蓋范圍主流足球數據接口通常包含以下數據類型&…

<android>反編譯魔改安卓系統應用并替換

我們知道安卓系統基于穩定性、維護便利、性能優化等原因并未對原生系統apk進行混淆加密處理,由此就方便了我們反編譯替換原生應用。 首先我們設備需要是root后的,我是使用的是小米5,刷的24.3版本的面具。首先我們需要取系統apk,這…

【Qt】項目的創建 and 各個控件的使用

一、項目的創建🔍然后點擊新建項目。📖注意:路徑不要帶有中文,不然運行不了代碼。📖qmake是一個構建工具,在 Qt 寫的程序,設計的到一系列的 "元編程" 技術,什么是元編程技…

大模型架構演進全景:從Transformer到下一代智能系統的技術路徑(MoE、Mamba/SSM、混合架構)

當前大模型發展正經歷著一個關鍵的技術分水嶺。雖然Transformer架構自2017年問世以來主導了整個AI領域,但我們正見證著多種創新架構的涌現,每種都在試圖解決Transformer的固有局限。本指南將系統性地解析當前主流架構的技術原理、適用場景與發展趨勢&…

畫世界筆刷合集(2000 + 款):含宮崎駿森系、鴨風人像、國潮等多風格 + 視頻導入教程

預覽: https://blog.csdn.net/2501_93092597/article/details/151330089?spm1011.2415.3001.5331 想在畫世界創作卻缺適配筆刷?手動繪制森系元素、人像細節耗時久,導入筆刷總失敗,找配套背景 / 配色還得跨平臺搜索?這…

03-Redis 安裝指南:從版本選擇到多系統部署(Windows+macOS+Linux)

目錄引言一、安裝 Redis 前必須明確的核心問題二、Redis 版本選擇:穩定版 vs 開發版,該怎么選?2.1 版本規則:看 “次版本號” 辨穩定性2.2 穩定版與開發版核心差異2.3 版本選擇建議三、多系統安裝教程:step-by-step 實…

普通MYSQL數據庫是怎么做sum操作的

MySQL 的 SUM()操作實現是一個結合??執行引擎優化、存儲結構利用和分組算法??的高效過程。以下是其核心實現機制和優化策略:??1. 執行流程概覽??以查詢為例:SELECT department, SUM(salary) FROM employees GROUP BY department;??執行步驟??…

Claude-Flow AI協同開發:基礎入門之 AI編排

1.1 引言:超越“代碼生成器”的革命 在AI輔助開發的浪潮中,我們已經習慣了代碼補全、函數生成等“代碼生成器”工具。它們極大地提升了我們的編碼效率,但通常僅限于解決孤立、單一的問題。當面對一個完整的項目或一個復雜的功能模塊時&#x…

Linux中下載安裝部署Redis7.4.5——并設置用戶名、密碼及其授權的保姆級教程

一、環境準備 環境準備 序號 說明 1 使?RHEL9或Almalinux9.1及其更高版本系統 #查看系統信息 cat /etc/os-release 2 Linux中需要Redis源碼編譯所需的gcc依賴 #1-檢查是否已

健康度——設備健康續航條

在故障診斷與健康管理(PHM)領域和壽命預測領域中,健康度(Health Index, HI)是一個至關重要的概念,它旨在量化設備或系統的當前健康狀態,并為預測其剩余使用壽命(Remaining Useful Li…

【Python - 類庫 - BeautifulSoup】(02)使用“BeautifulSoup“按類名獲取內容

使用BeautifulSoup按類名獲取內容 在本文中,我們將介紹如何使用BeautifulSoup按類名獲取內容的方法。BeautifulSoup是一個用于解析HTML和XML文檔的Python庫。它可以方便地遍歷和搜索文檔樹,使得我們能夠輕松地提取想要的信息。 安裝BeautifulSoup 首先&a…

36.Java序列化與反序列化是什么

36.Java序列化與反序列化是什么 序列化就是把Java對象轉換成字節流(二進制)。 把對象保存到本地文件或網絡傳輸。因為Java對象在JVM的堆內存中,JVM堆不存在了,對象也就不在了。 反序列化就是把字節流轉換為對象 從文件或者網絡里獲…

c#泛型公共類示例

在C#中&#xff0c;泛型類是一種可以操作多種數據類型的類。這使得你可以編寫更靈活、可重用的代碼。泛型類通過在類名后使用尖括號<>和類型參數來定義。類型參數可以是具體的類型&#xff0c;如int或string&#xff0c;也可以是其他泛型類型&#xff0c;甚至是其他泛型類…

深入理解算法效率——時間和空間復雜度詳解

目錄 一、引言&#xff1a;為什么我們需要分析算法效率&#xff1f; 二、算法效率的維度 2.1 時間復雜度&#xff08;Time Complexity&#xff09; 2.2 空間復雜度&#xff08;Space Complexity&#xff09; 三、深入理解算法時間復雜度 3.1 時間復雜度的基礎概念 3.2 大…

排序---冒泡排序(Bubble Sort)

一、算法核心概念 冒泡排序是一種簡單的交換排序算法&#xff0c;其核心思想是&#xff1a;通過重復遍歷待排序數組&#xff0c;每次比較相鄰的兩個元素&#xff0c;若它們的順序錯誤&#xff08;如升序排序中前一個元素大于后一個&#xff09;&#xff0c;則交換它們的位置。經…