国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Debezium日常分享系列之:Debezium and TimescaleDB

這篇具有很好參考價值的文章主要介紹了Debezium日常分享系列之:Debezium and TimescaleDB。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、TimescaleDB

TimescaleDB 是一個開源數(shù)據(jù)庫,旨在使 SQL 對于時間序列數(shù)據(jù)具有可擴展性。它是作為 PostgreSQL 數(shù)據(jù)庫的擴展實現(xiàn)的。這一事實促使我們重新使用標(biāo)準(zhǔn) Debezium PostgreSQL 連接器,并將 TimescaleDB 支持實現(xiàn)為單個消息轉(zhuǎn)換 (SMT)。

TimescaleDB 提供了三個基本構(gòu)建塊/概念:

  • Hypertables
  • Continuous aggregates
  • Compression

描述實例定義的元數(shù)據(jù)(目錄)和原始數(shù)據(jù)通常存儲在 _timescaledb_internal_schema 中。TimescaleDb SMT 連接到數(shù)據(jù)庫并讀取和處理元數(shù)據(jù)。然后,從數(shù)據(jù)庫讀取的原始消息會使用存儲在 Kafka Connect 標(biāo)頭中的元數(shù)據(jù)進(jìn)行豐富,從而創(chuàng)建物理數(shù)據(jù)和 TimescaleDB 邏輯結(jié)構(gòu)之間的關(guān)系。

二、完整案例

Debezium 示例存儲庫包含基于 Docker Compose 的部署,該部署提供了完整的環(huán)境來演示 TimescaleDB 集成。

第一步,開始部署

$ docker-compose -f docker-compose-timescaledb.yaml up --build

該命令將啟動 Debezium(Zookeeper、Kafka、Kafka Connect)和源 TimescaleDB 數(shù)據(jù)庫。

啟動的數(shù)據(jù)庫已準(zhǔn)備好以下數(shù)據(jù)庫對象:

  • 將溫度和濕度測量值表示為時間序列數(shù)據(jù)的超穩(wěn)定條件;使用 DDL
CREATE TABLE conditions (time TIMESTAMPTZ NOT NULL, location TEXT NOT NULL, temperature DOUBLE PRECISION NULL, humidity DOUBLE PRECISION NULL); 

SELECT create_hypertable('conditions', 'time')
  • 測量數(shù)據(jù)的單一記錄
INSERT INTO conditions VALUES(NOW(), 'Prague', 22.8, 53.3)

PostgreSQL 出版物用于將時間序列數(shù)據(jù)發(fā)布到復(fù)制槽中,因為演示使用 pgoutput 解碼插件

CREATE PUBLICATION dbz_publication FOR ALL TABLES WITH (publish = 'insert, update')

下一步需要注冊 Debezium PostgreSQL 連接器以捕獲數(shù)據(jù)庫中的更改

curl -i -X POST -H "Accept:application/json" -H  "Content-Type:application/json" http://localhost:8083/connectors/ -d @register-timescaledb.yaml

注冊請求文件與常規(guī)文件不同,增加了這些行

{
    "name": "inventory-connector",
    "config": {
...
        "schema.include.list": "_timescaledb_internal",
        "transforms": "timescaledb",
        "transforms.timescaledb.type": "io.debezium.connector.postgresql.transforms.timescaledb.TimescaleDb",
        "transforms.timescaledb.database.hostname": "timescaledb",
        "transforms.timescaledb.database.port": "5432",
        "transforms.timescaledb.database.user": "postgres",
        "transforms.timescaledb.database.password": "postgres",
        "transforms.timescaledb.database.dbname": "postgres"
    }
}

三、Hypertables

連接器將捕獲內(nèi)部 TimescaleDB 架構(gòu)以及包含原始數(shù)據(jù)的物理表,并且將應(yīng)用 TimescaleDb SMT 來豐富消息并根據(jù)邏輯名稱將它們路由到正確命名的主題。 SMT 配置選項包含連接到數(shù)據(jù)庫所需的信息。在這種情況下,條件超表將物理存儲在 _timescaledb_internal._hyper_1_1_chunk 中,并且當(dāng)由 SMT 處理時,它將重新路由到根據(jù)固定配置的前綴 timescaledb 和邏輯名稱 public.conditions 命名的 timescaledb.public.conditions 主題符合超表名稱。

讓我們在表中添加更多測量值

 docker-compose -f docker-compose-timescaledb.yaml exec timescaledb env PGOPTIONS="--search_path=public" bash -c 'psql -U $POSTGRES_USER postgres'
postgres=# INSERT INTO conditions VALUES (now(), 'Prague', 30, 50);
postgres=# INSERT INTO conditions VALUES (now(), 'Brno', 35, 55);
postgres=# INSERT INTO conditions VALUES (now(), 'Prague', 40, 60);

并讀取捕獲的主題消息(在命令中啟用打印密鑰和標(biāo)題)

docker-compose -f docker-compose-timescaledb.yaml exec kafka /kafka/bin/kafka-console-consumer.sh \
    --bootstrap-server kafka:9092 \
    --from-beginning \
    --property print.key=true \
    --property print.headers=true \
    --topic timescaledb.public.conditions

這些消息包含兩個標(biāo)頭 debezium_timescaledb_chunk_table:_hyper_1_1_chunk、debezium_timescaledb_chunk_schema:_timescaledb_internal,它們描述了邏輯超表名稱與從中捕獲它們的物理源表之間的映射。

四、Continuous aggregates

連續(xù)聚合對存儲在超表中的數(shù)據(jù)提供自動統(tǒng)計計算。聚合被定義為物化視圖,由其自己的超表支持,而超表又由一組物理表支持。重新計算聚合后(手動或自動),新值將存儲在超表中,可以從中捕獲和流式傳輸這些值。連接器捕獲物理表中的新值,SMT 通過將物理目標(biāo)重新映射回聚合邏輯名稱來再次解決路由問題。還添加了帶有原始超表和物理表名稱的 Kafka Connect 標(biāo)頭。

讓我們創(chuàng)建一個名為conditions_summary的連續(xù)聚合,用于計算每個位置和時間間隔的平均、最低和最高溫度

postgres=# CREATE MATERIALIZED VIEW conditions_summary WITH (timescaledb.continuous) AS
  SELECT
    location,
    time_bucket(INTERVAL '1 hour', time) AS bucket,
    AVG(temperature),
    MAX(temperature),
    MIN(temperature)
  FROM conditions
  GROUP BY location, bucket;

并閱讀捕獲的主題消息

docker-compose -f docker-compose-timescaledb.yaml exec kafka /kafka/bin/kafka-console-consumer.sh \
    --bootstrap-server kafka:9092 \
    --from-beginning \
    --property print.key=true \
    --property print.headers=true \
    --topic timescaledb.public.conditions_summary

這些消息包含兩個標(biāo)頭 debezium_timescaledb_hypertable_table:_materialized_hypertable_2,debezium_timescaledb_hypertable_schema:_timescaledb_internal 公開哪個支持超表用于存儲聚合,以及兩個附加標(biāo)頭 debezium_timescaledb_chunk_table:_hyper_2_2_chunk,debezium_timescaledb_chunk_schema:_timescaledb_internal 公開存儲聚合的物理表。

`__debezium_timescaledb_chunk_table:_hyper_1_1_chunk,__debezium_timescaledb_chunk_schema:_timescaledb_internal` that describes the mapping between the logical hypertable name and the physical source table from which they were captured.

如果添加新的測量并觸發(fā)聚合重新計算,則更新的聚合將發(fā)送到主題

postgres=# INSERT INTO conditions VALUES (now(), 'Ostrava', 10, 50);
postgres=# CALL refresh_continuous_aggregate('conditions_summary', CURRENT_DATE, CURRENT_DATE + 1);

看起來像

{
   "schema":{
...
   },
   "payload":{
      "before":null,
      "after":{
         "location":"Ostrava",
         "bucket":"2024-01-09T13:00:00.000000Z",
         "avg":10.0,
         "max":10.0,
         "min":10.0
      },
      "source":{
         "version":"2.5.0.Final",
         "connector":"postgresql",
         "name":"dbserver1",
         "ts_ms":1704806938840,
         "snapshot":"false",
         "db":"postgres",
         "sequence":"[\"29727872\",\"29728440\"]",
         "schema":"public",
         "table":"conditions_summary",
         "txId":764,
         "lsn":29728440,
         "xmin":null
      },
      "op":"c",
      "ts_ms":1704806939163,
      "transaction":null
   }
}

因此,該主題包含針對兩個不同位置計算的兩條或多條消息。

五、Compression

TimescaleDB SMT 不會增強壓縮數(shù)據(jù)塊(物理表記錄),而只是將其作為存儲在超表中的副產(chǎn)品。壓縮后的數(shù)據(jù)被捕獲并存儲在 Kafka 主題中。通常,帶有壓縮塊的消息會被丟棄,并且不會被管道中的后續(xù)作業(yè)處理。

讓我們?yōu)槌韱⒂脡嚎s并壓縮它

postgres=# ALTER TABLE conditions SET (timescaledb.compress, timescaledb.compress_segment by = 'location');
postgres=# SELECT show_chunks('conditions');
              show_chunks
----------------------------------------
 _timescaledb_internal._hyper_1_1_chunk
(1 row)

postgres=# SELECT compress_chunk( '_timescaledb_internal._hyper_1_1_chunk');

消息寫入 timescaledb._timescaledb_internal._compressed_hypertable_3。

停止服務(wù)

docker-compose -f docker-compose-timescaledb.yaml down

六、結(jié)論

在這篇文章中,我們演示了從 TimescaleDB 時間序列數(shù)據(jù)庫捕獲數(shù)據(jù)以及通過 TimescaleDb SMT 對其進(jìn)行處理。我們已經(jīng)展示了如何根據(jù)作為數(shù)據(jù)源的超表和連續(xù)聚合來路由和豐富消息。

深入了解Debezium請閱讀博主專欄:文章來源地址http://www.zghlxwxcb.cn/news/detail-798894.html

  • Debezium專欄

到了這里,關(guān)于Debezium日常分享系列之:Debezium and TimescaleDB的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Debezium日常分享系列之:使用 Debezium 連接器實現(xiàn)密鑰外部化

    隱藏數(shù)據(jù)庫的賬號和密碼 當(dāng) Debezium 連接器部署到 Kafka Connect 實例時,有時需要對 Connect API 的其他用戶隱藏數(shù)據(jù)庫憑據(jù)。 讓我們回顧一下 MySQL Debezium connector的連接器注冊請求: 用戶名和密碼以純字符串形式傳遞給 API。更糟糕的是,任何有權(quán)訪問 Kafka Connect 集群及其 REST AP

    2024年02月16日
    瀏覽(21)
  • Debezium日常分享系列之:流式傳輸Cassandra第二部分

    在本博客文章系列的前半部分中,解釋了Cassandra 設(shè)計流數(shù)據(jù)管道的決策過程。在這篇文章中,我們將把管道分為三個部分,并更詳細(xì)地討論每個部分: Cassandra 到 Kafka 與 CDC 代理 Kafka 與 BigQuery 和 KCBQ 使用 BigQuery 視圖進(jìn)行轉(zhuǎn)換 相關(guān)技術(shù)博客: Debezium日常分享系列之:流式傳輸

    2024年02月16日
    瀏覽(21)
  • Debezium系列之:監(jiān)控 Debezium

    Debezium JMX相關(guān)的技術(shù)博客: Debezium系列之:安裝jmx導(dǎo)出器監(jiān)控debezium指標(biāo) Debezium系列之:為Debezium集群JMX頁面增加監(jiān)控,JMX頁面出現(xiàn)異常時發(fā)送飛書告警,確保任務(wù)能夠獲取debezium集群指標(biāo) Debezium系列之:深入解讀Debezium重要的jmx指標(biāo) Debezium系列之:mysql JMX metrics指標(biāo)詳細(xì)解讀

    2024年02月11日
    瀏覽(27)
  • Debezium系列之:在 Kubernetes 上部署 Debezium

    K8s相關(guān)知識可以閱讀博主以下幾篇技術(shù)博客: K8s系列之:搭建高可用K8s v1.23.5集群詳細(xì)步驟,3個master節(jié)點,3個Node節(jié)點 K8s系列之:Pod的基本用法 k8s系列之:kubectl子命令詳解一 k8s系列之:kubectl子命令詳解二 更多K8s知識點詳見博主K8s系列文章 更多Debezium內(nèi)容請閱讀博主Debezi

    2024年02月11日
    瀏覽(28)
  • Debezium系列之:使用 Strimzi 將 Kafka 和 Debezium 遷移到 Kubernetes

    在本文中,將探討在生產(chǎn)中實現(xiàn)debezium與K8s的結(jié)合: 在 Kubernetes 集群中安裝和管理 Apache Kafka 集群。 在 Kubernetes 集群中部署 Debezium Kafka Connect。 Kubernetes 是一個開源容器編排器,本文使用 minikube 作為 Kubernetes 集群,但相同的步驟在任何其他實現(xiàn)中都應(yīng)該有效。 啟動集群 在終

    2024年02月15日
    瀏覽(21)
  • Debezium系列之:記錄變更事件

    Debezium 數(shù)據(jù)更改事件具有復(fù)雜的結(jié)構(gòu),可提供豐富的信息。 但是,在某些情況下,在下游消費者可以處理 Debezium 更改事件消息之前,它需要有關(guān)原始數(shù)據(jù)庫更改導(dǎo)致的字段級更改的其他信息。 為了使用有關(guān)數(shù)據(jù)庫操作如何修改源數(shù)據(jù)庫中的字段的詳細(xì)信息來增強事件消息,

    2024年02月09日
    瀏覽(19)
  • Debezium系列之:prometheus采集debezium的jmx數(shù)據(jù),grafana通過dashboard展示debezium的jmx數(shù)據(jù)

    需要采集debezium的jmx數(shù)據(jù),并把重要的指標(biāo)展示出來 采取的方案是prometheus采集debezium的jmx數(shù)據(jù),通過grafana展示出來,可以快速查看某個連接器重要的指標(biāo)信息

    2024年02月13日
    瀏覽(34)
  • Debezium系列之:詳細(xì)整理Debezium和Kafka的Transforms類型和全部功能

    Kafka Connect 是一個在 Apache Kafka 與外部系統(tǒng)之間進(jìn)行數(shù)據(jù)傳輸?shù)目蚣埽渲饕饔檬菍崿F(xiàn)可靠的數(shù)據(jù)集成和流轉(zhuǎn)。 Transforms 是 Kafka Connect 中用于對數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)換的一個重要特性。 通過使用 Transforms,用戶可以對 Kafka Connect 中傳輸?shù)臄?shù)據(jù)進(jìn)行一些處理和轉(zhuǎn)換,例如過濾、格

    2024年02月10日
    瀏覽(32)
  • Debezium系列之:詳細(xì)介紹Debezium2.X版本導(dǎo)出Sqlserver數(shù)據(jù)庫Debezium JMX指標(biāo)的方法

    Debezium2.X版本sqlserver數(shù)據(jù)庫JMX指標(biāo)導(dǎo)出的方式與Debezium1.X版本不同 需要根據(jù)Debezium2.X版本sqlserver數(shù)據(jù)庫jmx的格式,導(dǎo)出sqlserver數(shù)據(jù)庫的JMX指標(biāo)

    2024年02月01日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包