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

RisingWave分布式SQL流處理數(shù)據(jù)庫調(diào)研

這篇具有很好參考價值的文章主要介紹了RisingWave分布式SQL流處理數(shù)據(jù)庫調(diào)研。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

概述

RisingWave是一款分布式SQL流處理數(shù)據(jù)庫,旨在幫助用戶降低實時應(yīng)用的的開發(fā)成本。作為專為云上分布式流處理而設(shè)計的系統(tǒng),RisingWave為用戶提供了與PostgreSQL類似的使用體驗,官方宣稱具備比Flink高出10倍的性能(指throughput)以及更低的成本。RisingWave開發(fā)只需要關(guān)注SQL開發(fā),而不需要像Flink那樣去關(guān)注

  • RisingWave與Flink不同的是,RisingWave既可以做流處理也可以存儲;而Flink只是流處理框架,而不能存儲數(shù)據(jù),計算后的數(shù)據(jù)需要存儲到外部系統(tǒng)中。官方宣稱可以完全替代FlinkSQL。
  • RisingWave與批數(shù)據(jù)庫不同的是,RisingWave可以做流處理,按預(yù)定義邏輯實時處理數(shù)據(jù),官網(wǎng)宣稱可以做到流批一體,批數(shù)據(jù)庫只能處理批數(shù)據(jù)。

使用場景

RisingWave 的強項是流處理,底層存儲為行存,更加適合對已存儲的數(shù)據(jù)高并發(fā)點查,而并非全表掃描。RisingWave 的主要使用場景包括了監(jiān)控、報警、實時動態(tài)報表、流式 ETL、機器學(xué)習(xí)特征工程等。其已經(jīng)運用到金融交易、制造業(yè)、新媒體、物流等領(lǐng)域。
但是,RisingWave 不適合做分析型隨機查詢。為支持分析型隨機查詢,用戶還需將數(shù)據(jù)導(dǎo)入到實時分析數(shù)據(jù)庫中進(jìn)行操作。不少用戶將 RisingWave 與 ClickHouse、Apache Doris 等實時分析數(shù)據(jù)庫組合使用:他們使用 RisingWave 做流計算,同時使用實時分析數(shù)據(jù)庫進(jìn)行分析型隨機查詢。RisingWave 已經(jīng)支持到sink ClickHouse、Apache Doris等OLTP中,具體可以參考RisingWave Sink

注意:
RisingWave 不支持讀寫事務(wù)處理,但其支持只讀事務(wù)。在生產(chǎn)中,使用 RisingWave 的最佳實踐是將 RisingWave 放在事務(wù)型數(shù)據(jù)庫的下游。RisingWave 通過 CDC 從事務(wù)型數(shù)據(jù)庫中讀取已經(jīng)被序列化過的數(shù)據(jù)。

RisingWave 應(yīng)用

部署

RisingWave 單機試玩模式

docker run -itd \
-p 4566:4566 \
-p 5691:5691 \
--privileged \
--name=risingwave \
risingwavelabs/risingwave:latest playground

RisingWave 單機 Docker Compose 部署模式(測試推薦這種模式部署,以下測試基于此種模式)

clone the risingwave repository.

git clone https://github.com/risingwavelabs/risingwave.git

進(jìn)入docker目錄

cd docker

啟動RisingWave集群

#使用MinIO存儲狀態(tài)后端,standalone模式啟動
export RW_IMAGE=risingwavelabs/risingwave:latest
export ENABLE_TELEMETRY=true
docker compose up -d

安裝postgresql客戶端

由于RisingWave兼容postgresql協(xié)議,所以通過postgresql客戶端可以直接操作RisingWave
安裝postgresql客戶端

yum install -y postgresql

使用 psql 連接

psql -h localhost -p 4566 -d dev -U root

啟動mysql并開啟binlog

  • 啟動mysql
# 查看詳細(xì)默認(rèn)配置
 docker run -it --rm mysql:5.7 --verbose --help
 #啟動mysql server
docker run -d \
--name mysql5.7 \
--restart=always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql5.7/data:/var/lib/mysql \#數(shù)據(jù)文件
-v /data/mysql5.7/conf:/etc/mysql/conf.d \#配置文件
-v /data/mysql5.7/log:/var/log \#日志文件
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--log-bin=/var/lib/mysql/mysql-bin \#開啟binlog配置
--server-id=2 #開啟binlog配置

  • 鏈接mysql

docker exec -it mysql5.7 mysql -h127.0.0.1 -P3306 -p’123456’

  • 驗證是否開啟 binlog

show variables like ‘%log_bin%’;

  • 授權(quán)
--授權(quán)RisingWave作為slave訪問mysql binlog
grant RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT, SELECT on *.* to 'root'@'%' IDENTIFIED BY '123456';
--grant ALL PRIVILEGES on db01.* to 'root'@'%' IDENTIFIED BY '123456';
flush  privileges;
--取消授權(quán),如有需要
REVOKE  GRANT OPTION on *.* FROM 'root'@'%';
REVOKE  ALL PRIVILEGES on *.* FROM 'root'@'%';
REVOKE  ALL PRIVILEGES on db01.* FROM 'root'@'%';
flush  privileges;
--查看授權(quán)
show grants for root@'%';

部署kafka

  • 啟動kafka
# step-1
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper:latest
# step-2
# 啟動Kafka,將以下的倆個192.168.1.100換為本身的IP地址bash
docker run  -d \
--name kafka \
--restart=always \
-p 8092:8092 \
-e KAFKA_BROKER_ID=1 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.1.100:2181/kafka \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.100:8092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:8092 \
-t wurstmeister/kafka
  • 與kafka交互
#list
docker run -it --rm wurstmeister/kafka kafka-topics.sh --bootstrap-server 192.168.1.100:8092 --list
#create topic
docker run -it --rm wurstmeister/kafka kafka-topics.sh --bootstrap-server 192.168.1.100:8092 --create --replication-factor 1 --partitions 1 --topic test2
#producer
docker run -it --rm wurstmeister/kafka kafka-console-producer.sh --bootstrap-server 192.168.1.100:8092 --topic test1
#consumer
docker run -it --rm wurstmeister/kafka kafka-console-consumer.sh --bootstrap-server 192.168.1.100:8092 --topic test1

  • 或通過kcat與kafka交互
docker pull edenhill/kcat:1.7.1
docker run -it --rm edenhill/kcat:1.7.1 kcat -b 192.168.1.100:8092 -t test_sink_topic -C -J
docker run -it --rm edenhill/kcat:1.7.1 kcat -b 192.168.1.100:8092 -t test_sink_topic -C

RisingWave 使用demo

  1. 數(shù)據(jù)導(dǎo)出sink demo
-- create table
CREATE TABLE t1 (v1 int, v2 int) 
WITH (
     connector = 'datagen',

     fields.v1.kind = 'sequence',
     fields.v1.start = '1',
  
     fields.v2.kind = 'random',
     fields.v2.min = '-10',
     fields.v2.max = '10',
     fields.v2.seed = '1',
  
     datagen.rows.per.second = '10'
 ) ROW FORMAT JSON;
-- create sink
CREATE SINK test_sink_1
FROM t1 
WITH (
        properties.bootstrap.server = '192.168.1.100:8092',
        topic = 'test_sink_topic',
        connector = 'kafka',
        primary_key = 'v1'
)
FORMAT UPSERT ENCODE JSON;
 

查看kafka sink 結(jié)果

docker run -it --rm edenhill/kcat:1.7.1 kcat -b 192.168.1.100:8092 -t test_sink_topic -C -J

  1. 連接器 source
--source 連接器
CREATE SOURCE IF NOT EXISTS source_1 (
   v1 integer,
   v2 integer,
)
WITH (
   connector='kafka',
   topic='test_sink_topic',
   properties.bootstrap.server='192.168.1.100:8092',
   scan.startup.mode='latest',
) FORMAT PLAIN ENCODE JSON;
-- table連接器
CREATE TABLE IF NOT EXISTS table_1 (
   v1 integer,
   v2 integer,
)
WITH (
   connector='kafka',
   topic='test_sink_topic',
   properties.bootstrap.server='192.168.1.100:8092',
   scan.startup.mode='latest',
) FORMAT PLAIN ENCODE JSON;
  1. Change Data Capture (CDC) 直連 MySQL CDC
    --mysql ddl:
    create database db01;
    use db01;
    CREATE TABLE orders (
       order_id int(11) NOT NULL AUTO_INCREMENT,
       price decimal(11),
       PRIMARY KEY (order_id)
    );
    
   -- risingwave ddl
    CREATE TABLE orders (
       order_id int,
       price decimal,
       PRIMARY KEY (order_id)
    ) WITH (
     connector = 'mysql-cdc',
     hostname = '192.168.1.100',
     port = '3306',
     username = 'root',
     password = '123456',
     database.name = 'db01',
     table.name = 'orders',
    );
    
    --mysql dml
    insert into orders(price) values(12),(10),(23);
    insert into orders(price) values(12),(10);
    update orders set price=100  where order_id=1;
    delete from orders where order_id=3;

	  -- risingwave驗證數(shù)據(jù)
	  select * from orders ;
  1. 直接導(dǎo)出物化視圖/表數(shù)據(jù) (CREATE SINK FROM)
CREATE TABLE t11 (v1 int, v2 int) 
WITH (
     connector = 'datagen',

     fields.v1.kind = 'sequence',
     fields.v1.start = '1',
  
     fields.v2.kind = 'random',
     fields.v2.min = '-10',
     fields.v2.max = '10',
     fields.v2.seed = '1',
  
     datagen.rows.per.second = '10'
 ) ROW FORMAT JSON;

create materialized view mv_t11 as select count(*) from t11;

CREATE SINK sink1 FROM mv_t11 
WITH (
   connector='kafka',
   properties.bootstrap.server='192.168.1.100:8092',
   topic='t_sink1'
)
FORMAT PLAIN ENCODE JSON(
   force_append_only='true'
);

check結(jié)果

docker run -it --rm edenhill/kcat:1.7.1 kcat -b 192.168.1.100:8092 -t t_sink1 -C -J

  1. 導(dǎo)出 Query 的數(shù)據(jù)(CREATE SINK AS)
CREATE TABLE t11 (v1 int, v2 int) 
WITH (
     connector = 'datagen',

     fields.v1.kind = 'sequence',
     fields.v1.start = '1',
  
     fields.v2.kind = 'random',
     fields.v2.min = '-10',
     fields.v2.max = '10',
     fields.v2.seed = '1',
  
     datagen.rows.per.second = '10'
 ) ROW FORMAT JSON;

CREATE SINK sink2 AS 
SELECT 
   avg(v1) as avg_v1, 
   avg(v2) as avg_v2 
FROM t1
WITH (
   connector='kafka',
   properties.bootstrap.server='192.168.1.100:8092',
   topic='t_sink2'
)
FORMAT PLAIN ENCODE JSON(
   force_append_only='true'
);

check結(jié)果

docker run -it --rm edenhill/kcat:1.7.1 kcat -b 192.168.1.100:8092 -t t_sink1 -C -J

總結(jié)

RisingWave 提供與 PostgreSQL 兼容的標(biāo)準(zhǔn)SQL接口。用戶可以像使用 PostgreSQL 一樣處理數(shù)據(jù)流。屏蔽了實時處理底層需要遇到的一些技術(shù)細(xì)節(jié)(狀態(tài)存儲,數(shù)據(jù)一致性,分布式集群擴展等),供應(yīng)用方快速的開發(fā)實時數(shù)據(jù)流,進(jìn)行流式ETL。具有以下特性:同步的實時性(可以保證實時的新鮮度,doris等OLAP引擎采用異步實時)、強一致性(doris等OLAP引擎僅提供最終一致性)、高可用、高并發(fā)、流處理語義、資源隔離??梢詰?yīng)用在一些數(shù)據(jù)看版,監(jiān)控,實時指標(biāo)等場景。

相關(guān)文章

github 倉庫
官方文檔
中文文檔
創(chuàng)始人知乎主頁
Slack文章來源地址http://www.zghlxwxcb.cn/news/detail-832812.html

到了這里,關(guān)于RisingWave分布式SQL流處理數(shù)據(jù)庫調(diào)研的文章就介紹完了。如果您還想了解更多內(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)文章

  • 聊聊分布式 SQL 數(shù)據(jù)庫Doris(九)

    優(yōu)化器的作用是優(yōu)化查詢語句的執(zhí)行效率,它通過評估不同的執(zhí)行計劃并選擇最優(yōu)的執(zhí)行計劃來實現(xiàn)這一目標(biāo)。 CBO: 一種基于成本的優(yōu)化器,它通過評估不同查詢執(zhí)行計劃的成本來選擇最優(yōu)的執(zhí)行計劃。CBO會根據(jù)數(shù)據(jù)庫系統(tǒng)定義的統(tǒng)計信息以及其他因素,對不同的執(zhí)行計劃進(jìn)

    2024年02月05日
    瀏覽(29)
  • 聊聊分布式 SQL 數(shù)據(jù)庫Doris(六)

    此處的負(fù)載均衡指的是FE層的負(fù)載均衡. 當(dāng)部署多個 FE 節(jié)點時,用戶可以在多個 FE 之上部署負(fù)載均衡層來實現(xiàn) Doris 的高可用。官方文檔描述: 負(fù)載均衡 。 實現(xiàn)方式 實現(xiàn)方式有多種,如下列舉。 開發(fā)者在應(yīng)用層自己進(jìn)行重試與負(fù)載均衡。 JDBC Connector 發(fā)現(xiàn)一個連接掛掉,就自

    2024年02月05日
    瀏覽(25)
  • 聊聊分布式 SQL 數(shù)據(jù)庫Doris(七)

    Doris的存儲結(jié)構(gòu)是類似LSM-Tree設(shè)計的,因此很多方面都是通用的,先閱讀了解LSM相關(guān)的知識,再看Doris的底層存儲與讀取流程會清晰透徹很多,LSM基本知識如下: 原理:把各種數(shù)據(jù)先用log等形式組織在內(nèi)存中(該數(shù)據(jù)結(jié)構(gòu)稱為MemTable,且有序);到達(dá)一定數(shù)據(jù)量后再批量merge寫入磁

    2024年02月05日
    瀏覽(29)
  • 聊聊分布式 SQL 數(shù)據(jù)庫Doris(三)

    在 Doris 的存儲引擎規(guī)則: 表的數(shù)據(jù)是以分區(qū)為單位存儲的,不指定分區(qū)創(chuàng)建時,默認(rèn)就一個分區(qū). 用戶數(shù)據(jù)首先被劃分成若干個分區(qū)(Partition),劃分的規(guī)則通常是按照用戶指定的分區(qū)列進(jìn)行范圍劃分,比如按時間劃分。 在每個分區(qū)內(nèi),數(shù)據(jù)被進(jìn)一步的按照Hash的方式分桶,分

    2024年02月05日
    瀏覽(18)
  • 聊聊分布式 SQL 數(shù)據(jù)庫Doris(四)

    聊聊分布式 SQL 數(shù)據(jù)庫Doris(四)

    FE層的架構(gòu)都能在網(wǎng)上找到說明. 但BE層的架構(gòu)模式、一致性保障、與FE層之間的請求邏輯,數(shù)據(jù)傳輸邏輯等,我個人暫時沒有找到相應(yīng)的博客說明這些的。當(dāng)然這些是我個人在學(xué)習(xí)與使用Doris過程中,對內(nèi)部交互邏輯與實現(xiàn)感興趣才有這些疑問. 還好現(xiàn)在有GPT這類大模型,有了

    2024年02月05日
    瀏覽(30)
  • 解釋什么是分布式數(shù)據(jù)庫,列舉幾種常見的分布式數(shù)據(jù)庫系統(tǒng)

    敏感信息和隱私保護是指在收集、存儲和使用個人數(shù)據(jù)時,需要采取一系列措施來保護這些數(shù)據(jù)的安全和機密性,防止數(shù)據(jù)被未經(jīng)授權(quán)的第三方訪問、使用或泄露。這些措施包括加密、訪問控制、數(shù)據(jù)脫敏、數(shù)據(jù)加密、隱私政策等。 在隱私保護的技術(shù)手段方面,常用的技術(shù)包

    2024年02月08日
    瀏覽(32)
  • 分布式數(shù)據(jù)庫架構(gòu)

    分布式數(shù)據(jù)庫架構(gòu)

    對于mysql架構(gòu),一定會使用到讀寫分離,在此基礎(chǔ)上有五種常見架構(gòu)設(shè)計:一主一從或多從、主主復(fù)制、級聯(lián)復(fù)制、主主與級聯(lián)復(fù)制結(jié)合。 1.1、主從復(fù)制 這種架構(gòu)設(shè)計是使用的最多的。在讀寫分離的基礎(chǔ)上,會存在一臺master作為寫機,一個或多個slave作為讀機。因為在實際的

    2024年02月10日
    瀏覽(32)
  • 【大數(shù)據(jù)】分布式數(shù)據(jù)庫HBase

    【大數(shù)據(jù)】分布式數(shù)據(jù)庫HBase

    目錄 1.概述 1.1.前言 1.2.數(shù)據(jù)模型 1.3.列式存儲的優(yōu)勢 2.實現(xiàn)原理 2.1.region 2.2.LSM樹 2.3.完整讀寫過程 2.4.master的作用 本文式作者大數(shù)據(jù)系列專欄中的一篇文章,按照專欄來閱讀,循序漸進(jìn)能更好的理解,專欄地址: https://blog.csdn.net/joker_zjn/category_12631789.html?spm=1001.2014.3001.5482 當(dāng)

    2024年04月27日
    瀏覽(29)
  • 分布式數(shù)據(jù)庫HBase

    分布式數(shù)據(jù)庫HBase

    HBase是一個高可靠、高性能、 面向列 、可伸縮的分布式數(shù)據(jù)庫,是谷歌BigTable的開源實現(xiàn),主要用來存儲非結(jié)構(gòu)化和把結(jié)構(gòu)化的松散數(shù)據(jù)。 HBase的目標(biāo)是處理非常龐大的表,可以通過水平擴展的方式,利用 廉價計算機集群 處理由超過10億行數(shù)據(jù)和數(shù)百萬列元素組成的數(shù)據(jù)表。

    2024年02月09日
    瀏覽(25)
  • 分析型數(shù)據(jù)庫:分布式分析型數(shù)據(jù)庫

    分析型數(shù)據(jù)庫:分布式分析型數(shù)據(jù)庫

    分析型數(shù)據(jù)庫的另外一個發(fā)展方向就是以分布式技術(shù)來代替MPP的并行計算,一方面分布式技術(shù)比MPP有更好的可擴展性,對底層的異構(gòu)軟硬件支持度更好,可以解決MPP數(shù)據(jù)庫的幾個關(guān)鍵架構(gòu)問題。本文介紹分布式分析型數(shù)據(jù)庫。 — 背景介紹— 目前在分布式分析型數(shù)據(jù)庫領(lǐng)域,

    2023年04月14日
    瀏覽(52)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包