時間序列資料庫概覽

来源:https://www.cnblogs.com/wenBlog/archive/2018/01/16/8297100.html
-Advertisement-
Play Games

背景 目前對於時序大數據的存儲和處理往往採用關係型資料庫的方式進行處理,但由於關係型資料庫天生的劣勢導致其無法進行高效的存儲和數據的查詢。時序大數據解決方案通過使用特殊的存儲方式,使得時序大數據可以高效存儲和快速處理海量時序大數據,是解決海量數據處理的一項重要技術。該技術採用特殊數據存儲方式,極大提 ...


背景

  目前對於時序大數據的存儲和處理往往採用關係型資料庫的方式進行處理,但由於關係型資料庫天生的劣勢導致其無法進行高效的存儲和數據的查詢。時序大數據解決方案通過使用特殊的存儲方式,使得時序大數據可以高效存儲和快速處理海量時序大數據,是解決海量數據處理的一項重要技術。該技術採用特殊數據存儲方式,極大提高了時間相關數據的處理能力,相對於關係型資料庫它的存儲空間減半,查詢速度極大的提高。時間序列函數優越的查詢性能遠超過關係型資料庫,Informix TimeSeries非常適合在物聯網分析應用。

定義

  時間序列資料庫主要用於指處理帶時間標簽(按照時間的順序變化,即時間序列化)的數據,帶時間標簽的數據也稱為時間序列數據。

最新時序資料庫排名:

 

特點& 分類:

  • 專門優化用於處理時間序列數據
  1. 該類數據以時間排序
  2. 由於該類數據通常量級大(因此Sharding和Scale非常重要)或邏輯複雜(大量聚合,上取,下鑽),關係資料庫通常難以處理
  • 時間序列數據按特性分為兩類
  1. 高頻率低保留期(數據採集,實時展示)
  2. 低頻率高保留期(數據展現、分析)
  • 按頻度
  1. 規則間隔(數據採集)
  2. 不規則間隔(事件驅動)
  •  時間序列數據的幾個前提
  1. 單條數據並不重要
  2. 數據幾乎不被更新,或者刪除(只有刪除過期數據時),新增數據是按時間來說最近的數據
  3. 同樣的數據出現多次,則認為是同一條數據

如圖:

 

時間序列資料庫關鍵比對

 

InfluxDB

ElasticSearch

流行(TSDB排行第一)

流行(搜索引擎排行第一)

高可用需要收費

集群高可用容易實現,免費

單點寫入性能高

單點寫入性能低

查詢語法簡單,功能強

查詢語法簡單,功能強(弱於Influxdb)

後端時序資料庫設計,寫入快

設計並不是時序資料庫,後端存儲採用文檔結構,寫入慢

 

 

由此可見:高頻度低保留期用Influxdb,低頻度高保留期用ES。

其他時序資料庫介紹:

如何使用

數據的查詢與寫入:

  • Influxdb與ES都是REST API風格介面
  • 通過HTTP Post寫入數據,通過HTTP Get獲取數據,ES還有HTTP Put和Delete等
  • 寫入數據可以是JSON格式,Influxdb支持Line Protocol
  • JSON格式徒增解析成本,錄入數據格式越簡單越好
  • 通常ES搭配Logstash使用,Influxdb搭配telegraf使用

以Influxdb為例,看一些如何插入和查詢數據:

Influxdb的HTTP API

創建DB

[root@host31 ~]# curl -i -XPOST http://192.168.32.31:8086/query --data-urlencode "q=CREATE DATABASE mydb"
HTTP/1.1 200 OK
Connection: close
Content-Type: application/json
Request-Id: 42a1f30c-5900-11e6-8003-000000000000
X-Influxdb-Version: 0.13.0
Date: Tue, 02 Aug 2016 22:27:13 GMT
Content-Length: 16

{"results":[{}]}[root@host31 ~]#

寫入數據

[root@host31 ~]# curl -i -XPOST http://192.168.32.31:8086/query --data-urlencode "q=CREATE DATABASE mydb"
HTTP/1.1 200 OK
Connection: close
Content-Type: application/json
Request-Id: 42a1f30c-5900-11e6-8003-000000000000
X-Influxdb-Version: 0.13.0
Date: Tue, 02 Aug 2016 22:27:13 GMT
Content-Length: 16

{"results":[{}]}[root@host31 ~]#

查詢寫入的數據

[root@host31 ~]# curl -GET 'http://192.168.32.31:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'"
{
    "results": [
        {
            "series": [
                {
                    "name": "cpu_load_short",
                    "columns": [
                        "time",
                        "value"
                    ],
                    "values": [
                        [
                            "2015-06-11T20:46:02Z",
                            0.64
                        ]
                    ]
                }
            ]
        }
    ]
}[root@host31 ~]#

介紹Telegraf&Logstash:

  • 都是數據收集和中轉的工具,架構都是插件式配置
  • Telegraf相比Logstash更加輕量
  • 都支持大量源,包括關係資料庫、NOSQL、直接收集操作系統信息(Linux、Win)、APP、服務(Docker)

    執行模式分為兩種

  • 主動:根據配置一次性讀取被收集的數據,收集完成後關閉進程
  • 被動:作為進程駐留記憶體,監聽特定埠,等待消息發送

介紹兩種時序資料庫使用的架構:

 

1.日誌採集,然後存入influxdb,最後在grafana 中進行可視化查詢。

 

2.資料庫監控,主要通過採集關係型資料庫的性能指標分析資料庫的運行狀態便於監控和管理,如下圖所示

 數據可視化展示

  數據的可視化展示有很多種選擇,比如ELK中推薦使用kibana,配合es更方便,而搭配influxdb可以使用grafana。

目前grafana支持數據源

–  ES

–  Influxdb

–  Prometheus

–  Graphite

–  OpenTSDB

–  CloudWatch

安裝Grafana

Grafana的安裝很簡單,以Debian安裝為例:

執行命令:

$ wget https://grafanarel.s3.amazonaws.com/builds/grafana_2.6.0_amd64.deb

$ sudo apt-get install -y adduser libfontconfig

$ sudo dpkg -i grafana_2.6.0_amd64.deb

啟動伺服器:

$ sudo service grafana-server start

然後即可進行配置使用數據可視化了。這裡就不展開講了。下麵會有獨立文章介紹grafana和kibana。

總結  

  本篇簡要概述了時序資料庫的內容,介紹了特點並以influxdb為實例對比了與傳統資料庫的區別,以及如何使用Influxdb。最後講解了使用時序資料庫的架構,日誌和監控等,通過grafana進行可視化的數據查詢分析監控等。文章地址https://www.cnblogs.com/wenBlog/p/8297100.html

 


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

-Advertisement-
Play Games
更多相關文章
  • 在高級語言中,I/O 流輸入(input)操作一般都要求指定要讀取的數據的最大長度(位元組數)。當接收到至少1位元組、最多所指定的位元組數時,函數返回。 STM32 串口接收數據時,HAL API 要求指定數據長度。但無論輪詢、中斷或是DMA方式,都必須完整地接收到這麼多位元組,程式流程才繼續。如何接收變長 ...
  • ·IPv4的局限性: 1.地址空間的局限性:IP地址空間的危機由來已久,並正是升級到IPv6的主要動力。 2.安全性:IPv4在網路層沒有安全性可言,安全性一直被認為是由網路層以上的層負責。 3.自動配置:對於IPv4節點的配置比較複雜,讓很多普通用戶無所適從。 4.NAT:破壞了Internet端 ...
  • 來源: http://www.cnblogs.com/hackerer/p/5100208.html null ...
  • 資料庫設計的三大範式 為了建立冗餘較小、結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就叫做範式。 範式就是符合某一種設計要求的總結,要想設計一個結構合理的關係型資料庫,必須滿足一定的範式。 在實際開發中最常見的設計範式有三個: 1、第一範式*(確保每列保持原子性) 第一 ...
  • 1.簡單查詢 mysql> select * from students where sname like 'o%'; + + + + + | id | sname | sex | tid | + + + + + | 0000000001 | orna | 男 | NULL | + + + + + ...
  • 在創建表是預設為加上數據引擎和字元集,如創建一個student表,代碼如下: 插入數據(insert和replace) 1.insert命令直接在表的插入一條記錄。 2.replace命令在插入記錄時判斷主鍵是否相同,相同就修改,否則插入一條新記錄。 用select 結果集創建一個表 修改表名 有兩 ...
  • Sutdent表的定義 欄位名 欄位描述 數據類型 主鍵 外鍵 非空 唯一 自增 Id 學號 INT(10) 是 否 是 是 是 Name 姓名 VARCHAR(20) 否 否 是 否 否 Sex 性別 VARCHAR(4) 否 否 否 否 否 Birth 出生年份 YEAR 否 否 否 否 否 D ...
  • 一、概述 在上一篇文章中已經介紹了審計的概念;本篇文章主要介紹如何創建審計,以及該收集哪些審核規範。 二、常用的審核對象 2.1、伺服器審核對象 1.FAILED_LOGIN_GROUP( Audit Login Failed Event Class) 指示主體嘗試登錄到 SQL Server,等效 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...