溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

分布式數(shù)據(jù)庫如何玩轉(zhuǎn)HTAP場景

發(fā)布時間:2022-01-19 09:24:05 來源:億速云 閱讀:198 作者:柒染 欄目:數(shù)據(jù)庫

這篇文章給大家介紹分布式數(shù)據(jù)庫如何玩轉(zhuǎn)HTAP場景,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

傳統(tǒng)數(shù)據(jù)庫架構(gòu)面臨的痛點

1. 集群分散不利于整合,數(shù)據(jù)結(jié)構(gòu)同步工作量大

第一招:數(shù)據(jù)源的數(shù)據(jù)同步 

通過開發(fā)消費kafka的程序?qū)?shù)據(jù)同步到SequoiaDB數(shù)據(jù)中,保持和生產(chǎn)實時同步。以下為數(shù)據(jù)同步加載架構(gòu)圖:

第二招:彈性擴容

第三招:多模數(shù)據(jù)引擎使用

MySQL 實例適用于比較熟悉 MySQL 的操作人員,適合精準查詢、業(yè)務數(shù)據(jù)寫入、柜面查詢、OLTP場景。增刪查改操作和 MySQL 完全一致,底層數(shù)據(jù)保存在 SequoiaDB。

  • PostgreSQL 實例適用于比較熟悉 PostgreSQL 的操作人員,適合精準查詢和OLAP場景。支持增刪查改等功能和 PostgreSQL 使用完全一致,采用外表的方式將數(shù)據(jù)保存在 SequoiaDB 中。

  • Spark 實例為分布式集群,SparkSQL 適合報表分析、大表關(guān)聯(lián)查詢和 OLAP 場景??鐜礻P(guān)聯(lián)查詢比較友好,支持標準 SQL、支持 JDBC 訪問、支持 Python 對接查詢。

第四招:多種 SQL 引擎關(guān)聯(lián)使用方法 

4.1 MySQL 創(chuàng)建表

  • 創(chuàng)建 temp.test 這張表 ,其中字段信息如下所示 :

create  table temp.test
  (    
    numcode smallint,    
    agentcode char(12),    
    bankname varchar(120),    
    flag decimal(8,4),    
    timecode datetime
  );
  •  給 temp.test 這個表插入下面的4條記錄:

insert into  temp.test (numcode,agentcode,bankname,flag,timecode)values(1,'test1','beijingbank1',10.1,'2019-06-21 10:07:52’);
insert into  temp.test (numcode,agentcode,bankname,flag,timecode)values(2,'test2','beijingbank2',10.2,'2019-06-22 10:07:52’);
insert into  temp.test (numcode,agentcode,bankname,flag,timecode)values(3,'test3','beijingbank3',10.3,'2019-06-23 10:07:52’);
insert into  temp.test (numcode,agentcode,bankname,flag,timecode)values(4,'test4','beijingbank4',10.4,'2019-06-24 10:07:52');

更新 temp.test 中 numcode=1 的記錄中 bankname 為 "guangzhoubank" 

  mysql> update  temp.test  set  bankname="guangzhoubank"  where  numcode=1;                    
  Query OK, 0 rows affected (0.00 sec)Rows matched: 0  Changed: 0  Warnings: 0
  • 更新后再次查詢,顯示更新已經(jīng)成功

 mysql> select * from   temp.test;

刪除 temp.test 表中 numcode=1 的這條記錄

  mysql> delete  from  temp.test where  numcode=1;
  Query OK, 0 rows affected (0.01 sec)
  mysql> select * from   temp.test;

在 PostgreSQL 客戶端創(chuàng)建映射表,能夠查詢出數(shù)據(jù)

  temp=# create foreign table test
  temp-# (
  temp(# numcode int,
  temp(# agentcode text,
  temp(# bankname  text,
  temp(# flag decimal(8,4),
  temp(# timecode  text
  temp(# )
  temp-# server sdb_server
  temp-# options ( collectionspace 'temp', collection 'test', decimal 'on' );

連接 SparkSQL 客戶端創(chuàng)建映射表,能夠查詢出數(shù)據(jù)

  create table temp.test (    
    numcode int,    
    agentcode string,    
    bankname string,    
    flag decimal(8,4),    
    timecode string
  )USING com.sequoiadb.spark OPTIONS ( host '10.139.***.***:11810', collectionspace 'temp', collection 'test') ;

以上證明 MySQL 、PostgreSQL 和Spark 三者之間數(shù)據(jù)是通的,數(shù)據(jù)可以共用。

4.2 使用Spark生成子表

  • 連接 Spark 客戶端,使用 create table as 的方式創(chuàng)建新表 test2

 create table temp.test2 USING com.sequoiadb.spark OPTIONS ( 
    host '10.139.***.***:11810’,
    domain 'allDomain’, 
    collectionspace 'temp’, 
    collection 'test2’, 
    ignoreduplicatekey 'true'  , 
    shardingkey '{"_id":1}’, 
    shardingType 'hash’ , 
    compressiontype 'lzw’ , 
    autosplit 'true’
  )as select * from temp.test ;

連接 MySQL 客戶端,映射 Spark 創(chuàng)建的新表能夠查詢出同步的數(shù)據(jù)

mysql> create  table temp.test2    
     -> (    
     ->     numcode smallint,    
     ->     agentcode char(12),    
     ->     bankname varchar(120),    
     ->     flag decimal(8,4),    
     ->     timecode datetime    
     -> ); 
  mysql> select * from temp.test2;

第五招:多副本機制的應用 

5.1 同城三副本高可用架構(gòu)

其中有主備兩個機房,其中主機房部署兩個節(jié)點,備機房部署一個節(jié)點。三臺機器共同組成一個數(shù)據(jù)組,其中選舉邏輯遵循 Raft 協(xié)議。

5.2 主備一致性設置

在分布式系統(tǒng)中,一致性是指數(shù)據(jù)在多個副本之間數(shù)據(jù)保持一致的特性。SequoiaDB 巨杉數(shù)據(jù)庫支持不同級別的主備一致性策略,以適配不同的應用場景。用戶可根據(jù)業(yè)務對數(shù)據(jù)安全性和服務可用性的要求,選擇不同的一致性策略。

1)強一致性

寫所有節(jié)點當發(fā)生寫操作時,數(shù)據(jù)庫會確保所有復制組節(jié)點都同步完成才返回。寫操作處理成功后,后續(xù)讀到的數(shù)據(jù)一定是當前復制組內(nèi)最新的。優(yōu)勢是能夠有效的保證數(shù)據(jù)的完整性和安全性,劣勢則是會降低復制組的寫入性能,并且當集群內(nèi)有一個節(jié)點故障或者異常時,無法寫入數(shù)據(jù),降低高可用性。

             在核心交易型業(yè)務中,為了保證數(shù)據(jù)安全性,同時可以犧牲一定的寫入性能時,推薦使用強一致性策略。

2)最終一致性

為了提升數(shù)據(jù)庫的高可用性,以及實現(xiàn)數(shù)據(jù)的讀寫分離,SequoiaDB 默認采用“最終一致性”策略。在讀寫分離時,讀取的數(shù)據(jù)在某一段時間內(nèi)可能不是最新的,但副本間的數(shù)據(jù)最終是一致的。

寫主節(jié)點在主節(jié)點執(zhí)行寫操作成功后,寫操作即可返回。對數(shù)據(jù)查詢一致性要求不高的業(yè)務,如歷史數(shù)據(jù)查詢平臺,夜間批量導入數(shù)據(jù)以及白天提供查詢業(yè)務,推薦使用寫主節(jié)點的最終一致性策略。

其中強一致還是最終一致創(chuàng)建集合時由 ReplSize 這個參數(shù)來指定,創(chuàng)建集合時如設置 ReplSize 為-1表示強一致,默認為 ReplSize 值為1表示最終一致。根據(jù)使用場景來選擇使用強一致還是最終一致,用戶可以通過 db.setAttributes() 修改 ReplSize 屬性。

第六招:多樣化的監(jiān)控工具

SequoiaPerf 工具除了能夠協(xié)助用戶對慢查詢快速定位分析,還能夠幫助用戶全面監(jiān)控 SequoiaDB 數(shù)據(jù)集群。在 SequoiaPerf 的首頁上,用戶可以對 SequoiaDB 數(shù)據(jù)庫集群運行情況做一個宏觀的瀏覽,快速查閱當前集群的運行情況。

在 SequoiaPerf 的服務器資源頁面上,用戶可以了解服務器更加詳細的信息。

例如服務器磁盤的I/O使用情況,可以通過放大圖表獲得更加詳細的數(shù)據(jù)。同時用戶也可以通過頁面右上角的時間欄,選擇查看近期一段時間的資源使用情況。

小結(jié)

1. 數(shù)據(jù)庫在數(shù)據(jù)管理中的突出能力

SequoiaDB 巨杉數(shù)據(jù)庫是一款金融級分布式關(guān)系型數(shù)據(jù)庫,產(chǎn)品引擎采用原生分布式架構(gòu),100%兼容 MySQL 語法和協(xié)議,支持完整的 ACID 和分布式事務。同時 SequoiaDB 還提供多模(multi-model)數(shù)據(jù)庫存儲引擎,原生支持多數(shù)據(jù)中心容災機制,是新一代分布式數(shù)據(jù)庫的首選。SequoiaDB 巨杉數(shù)據(jù)庫可以為用戶帶來如下價值:

  • 完全兼容傳統(tǒng)關(guān)系型數(shù)據(jù),數(shù)據(jù)分片對應用程序完全透明

  • 高性能與無限水平彈性擴展能力

  • 分布式事務與 ACID 能力

  • 同時支持結(jié)構(gòu)化、半結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)

  • 金融級安全特性,多數(shù)據(jù)中心間容災做到 RPO = 0

  • HTAP 混合負載,同時運行聯(lián)機交易與批處理任務且互不干擾

  • 多租戶能力,云環(huán)境下支持多種級別的物理與邏輯隔離 

2. 實踐成果

數(shù)據(jù)庫完美解決目前傳統(tǒng)數(shù)據(jù)庫面臨的痛點,降低了IT成本、提高運維效率,使數(shù)據(jù)能夠有效給企業(yè)提供服務。其優(yōu)勢如下:

  • 提高查詢效率,使用 Spark 大表查詢效率提高20倍。

  • 容量多,合并同步了多個生產(chǎn)庫、歷史庫的全部數(shù)據(jù)。

  • 模式新,支持多種數(shù)據(jù)類型、結(jié)構(gòu)化和非結(jié)構(gòu)化。

  • 擴容簡單,支持快速擴容和縮容,基本有機器就能擴容。

  • 上手簡單,一鍵部署使用,降低dba學習成本。

  • 查詢引擎豐富,支持多種 SQL 查詢引擎,豐富業(yè)務使用。

  • 接口豐富,除了 SQL 還支持 JDBC、ODBC 和 API 多種接口,靈活使用。

  • 系統(tǒng)完備,有新的業(yè)務系統(tǒng)隨時可以接入。

關(guān)于分布式數(shù)據(jù)庫如何玩轉(zhuǎn)HTAP場景就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI