未來會是時序資料庫的天下嗎?

来源:https://www.cnblogs.com/bind/archive/2019/10/04/11622106.html
-Advertisement-
Play Games

時序數據簡介時序資料庫最近正在爆發,各搜索引擎的搜索指數也都是呈上升趨勢的。DB-Engine 上的排名:這份排行榜,都是時序資料庫.時序資料庫的興起是有原因的。就拿無人駕駛來說,無人車在運行時需要監控各種狀態,包括坐標,速度,方向,溫度,濕度等等,並且需要把每時每刻監控的數據記錄下來,用來做大數據... ...


時序數據簡介

時序資料庫最近正在爆發,各搜索引擎的搜索指數也都是呈上升趨勢的。

DB-Engine 上的排名:

862e9ec67e8274d7fcd18a9c089ce05

這份排行榜,都是時序資料庫.

時序資料庫的興起是有原因的。就拿無人駕駛來說,無人車在運行時需要監控各種狀態,包括坐標,速度,方向,溫度,濕度等等,並且需要把每時每刻監控的數據記錄下來,用來做大數據分析。每輛車每天就會採集將近8T的數據。如果只是存儲下來不查詢也還好(雖然已經是不小的成本),但如果需要快速查詢“今天下午兩點在北京路,速度超過60km/h的無人車有哪些”這樣的多緯度分組聚合查詢,那麼時序資料庫會是一個很好的選擇。

比如,證券交易,智能傢具,城市大腦等這些應用程式均依賴一種衡量事物隨時間的變化的數據形式,這裡的時間不只是一個度量標準,而是一個坐標的主坐標軸。

這就是時間序列數據,它漸漸在我們的世界中發揮更大的作用。目前,時間序列資料庫(TSDB)已經成為增長最快的資料庫類別。未來隨著 5G 的到來,時序資料庫將更加流行

時序數據的基本概念和意義

對時序數據進行建模的話,會包含三個重要部分,分別是:主體,時間點和測量值。套用這套模型,你會發現你在日常工作生活中,無時無刻不在接觸著這類數據。

如果你是一個股民,某隻股票的股價就是一類時序數據,其記錄著每個時間點該股票的股價。

如果你是一個運維人員,監控數據是一類時序數據,例如對於機器的CPU的監控數據,就是記錄著每個時間點機器上CPU的實際消耗值。

時序數據從時間維度上將孤立的觀測值連成一條線,從而揭示軟硬體系統的狀態變化。孤立的觀測值不能叫時序數據,但如果把大量的觀測值用時間線串起來,我們就可以研究和分析觀測值的趨勢及規律。

時序數據的數學模型


數據的存儲要考慮其數學模型和特點,時序數據當然也不例外。

下圖為一段時序數據,記錄了一段時間內的某個集群里各機器上各埠的出入流量,每半小時記錄一個觀測值。這裡以圖中的數據為例,介紹下時序數據的數學模型(不同的時序資料庫中,基本概念的稱謂有可能不同,這裡以騰訊CTSDB為準):

  • measurement: 度量的數據集,類似於關係型資料庫中的 table;

  • point: 一個數據點,類似於關係型資料庫中的 row;

  • timestamp: 時間戳,表徵採集到數據的時間點;

  • tag: 維度列,代表數據的歸屬、屬性,表明是哪個設備/模塊產生的,一般不隨著時間變化,供查詢使用;

  • field: 指標列,代表數據的測量值,隨時間平滑波動,不需要查詢。

b6ac1ccb79ec5536c3399f222b1184b

這組數據的measurement為Network,每個point由以下部分組成:

  • timestamp:時間戳

  • 兩個tag:host、port,代表每個point歸屬於哪台機器的哪個埠

  • 兩個field:bytes_in、bytes_out,代表piont的測量值,半小時內出入流量的平均值

同一個host、同一個port,每半小時產生一個point,隨著時間的增長,field(bytes_in、bytes_out)不斷變化

時序數據特點

  • 數據模式:時序數據隨時間增長,相同維度重覆取值,指標平滑變化:這點從上面的Network表的數據變化可以看出。

  • 寫入:持續高併發寫入,無更新操作:時序資料庫面對的往往是百萬甚至千萬數量級終端設備的實時數據寫入(如摩拜單車2017年全國車輛數為千萬級),但數據大多表徵設備狀態,寫入後不會更新。

  • 查詢:按不同維度對指標進行統計分析,且存在明顯的冷熱數據,一般只會頻繁查詢近期數據。

傳統資料庫在時序數據場景下存在的問題

當數據量少的時候在傳統關係型資料庫上加上時間戳一列就能作為時序資料庫。但時序數據往往是由百萬級甚至千萬級終端設備產生的,寫入併發量比較高,屬於海量數據場景。


MySQL在海量的時序數據場景下存在如下問題:

  • 存儲成本大:對於時序數據壓縮不佳,需占用大量機器資源;
  • 維護成本高:單機系統,需要在上層人工的分庫分表,維護成本高;
  • 寫入吞吐低:單機寫入吞吐低,很難滿足時序數據千萬級的寫入壓力;
  • 查詢性能差:適用於交易處理,海量數據的聚合分析性能差。

Hadoop生態(Hadoop、Spark等)存儲時序數據會有以下問題:

  • 數據延遲高:離線批處理系統,數據從產生到可分析,耗時數小時、甚至天級;
  • 查詢性能差:不能很好的利用索引,依賴MapReduce任務,查詢耗時一般在分鐘級。

時序資料庫需要解決以下幾個問題:

  • 時序數據的寫入:如何支持每秒鐘上千萬上億數據點的寫入。
  • 時序數據的讀取:如何支持在秒級對上億數據的分組聚合運算。
  • 成本敏感:由海量數據存儲帶來的是成本問題。如何更低成本的存儲這些數據,將成為時序資料庫需要解決的重中之重。

所以,時序資料庫的誕生就是為瞭解決傳統關係型資料庫在時序數據存儲和分析上的不足和缺陷的。

開源時序資料庫對比

目前行業內比較流行的開源時序資料庫產品有 InfluxDB、OpenTSDB、Prometheus、Graphite等,其產品特性對比如下圖所示:

f8a6945772844d9df60fec81d5f0d6f

InfluxDB 是一個開源的時序資料庫,使用 GO 語言開發,特別適合用於處理和分析資源監控數據這種時序相關數據,它目前是時序資料庫中的佼佼者。

隨著時間的推移,各大雲廠商也都推出了自己的時序資料庫。阿裡巴巴的TSDB 團隊自 2016 年第一版時序資料庫落地後,逐步服務於 DBPaaS,Sunfire 等等集團業務,在 2017 年中旬公測後,於 2018 年 3 月底正式商業化。TSDB 在技術方面不斷吸納時序領域各家之長,開啟了自研的時序資料庫發展之路。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Ponysay類似於Cowsay,可以在終端列印所有小馬的像素畫。還有個ponythink,這個是小馬想,那個是小馬說,效果如下: 安裝: 使用: 顯示幫助: 語錄(該角色在正劇中的臺詞): 使用指定的小馬角色(以紫悅為例): 如果你不想要對話框,那麼就使用: 只列印小馬本體。 此外還有許多激動人心 ...
  • 從 SUSE Linux Enterprise Server 15 開始,安裝媒體僅包含安裝程式 - 一個用於安裝、更新和註冊 SUSE Linux Enterprise Server 的基於命令行的精簡系統。在安裝期間,您可以通過選擇要基於安裝程式安裝的模塊來添加功能。 預設的安裝方式需要通過網路 ...
  • jdbc.properties屬性文件 JDBCUtils.java工具類 JDBCDemo3.java測試 ...
  • JDBC的CRUD操作 向資料庫中保存記錄 修改資料庫中的記錄 刪除資料庫中的記錄 查詢資料庫中的記錄 保存代碼的實現 修改代碼的實現 刪除代碼的實現 查詢代碼的實現 ...
  • Redis 的主從同步(複製) Redis 的主從同步(複製) 什麼是主從同步(複製) 假設有兩個 redis 實例 ⇒ A 和 B B 實例的內容與 A 實例的內容保持同步 那麼稱 A 實例是主資料庫,B 實例是從資料庫 這個過程稱為主從同步 為什麼要使用主從同步(複製) 防止發生單點故障 擴展內 ...
  • MySql 游標初識 認識 游標(cursor), 按字面意思可理解為, 游動的標識, 或者叫做 "游標" , 這樣更容易理解. 就好比現有一張表存儲了n行記錄, 然後我想每次取出一行, 進行為所欲為, 這時候就用到了游標cursor, 數據的搬運工, 搬運完當前數據(游標指向當前), 然後又移動到 ...
  • [20190930]oracle raw類型轉化number腳本.txt--//寫一個簡單oracle raw轉化number腳本,簡單說明:--//輸入必須是c1,02 或者 c102,不支持c1,2格式。--//raw2num.sh 腳本放在最後.--//測試:$ cat otest.txt | ...
  • 刪除數據(DELETE) 使用前需註意:刪除(DELETE),是刪除一(條)行數據。假如我們有四條(行)數據,換句話說,你要刪除其中一條(行) 名字為“xx”的用戶,那麼關於他的 i所有數據都會被刪除。 並且刪除和修改都有一個共同點,需要 ' WHERE ' 過濾條件,否則,也會刪除多條數據,所以使 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...