久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

分布式數據庫如何玩轉HTAP場景

185次閱讀
沒有評論

共計 4281 個字符,預計需要花費 11 分鐘才能閱讀完成。

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

傳統數據庫架構面臨的痛點

1.  集群分散不利于整合,數據結構同步工作量大

第一招:數據源的數據同步  

通過開發消費 kafka 的程序將數據同步到 SequoiaDB 數據中,保持和生產實時同步。以下為數據同步加載架構圖:

第二招:彈性擴容

第三招:多模數據引擎使用

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

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

Spark 實例為分布式集群,SparkSQL 適合報表分析、大表關聯查詢和 OLAP 場景。跨庫關聯查詢比較友好,支持標準 SQL、支持 JDBC 訪問、支持 Python 對接查詢。

第四招:多種 SQL 引擎關聯使用方法  

4.1 MySQL 創建表

創建 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

更新后再次查詢,顯示更新已經成功

 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 客戶端創建映射表,能夠查詢出數據

 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 客戶端創建映射表,能夠查詢出數據

 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 三者之間數據是通的,數據可以共用。

4.2  使用 Spark 生成子表

連接 Spark 客戶端,使用 create table as 的方式創建新表 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 創建的新表能夠查詢出同步的數據

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 同城三副本高可用架構

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

5.2 主備一致性設置

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

1)強一致性

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

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

2)最終一致性

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

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

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

第六招:多樣化的監控工具

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

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

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

小結

1. 數據庫在數據管理中的突出能力

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

完全兼容傳統關系型數據,數據分片對應用程序完全透明

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

分布式事務與 ACID 能力

同時支持結構化、半結構化與非結構化數據

金融級安全特性,多數據中心間容災做到 RPO = 0

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

多租戶能力,云環境下支持多種級別的物理與邏輯隔離  

2. 實踐成果

數據庫完美解決目前傳統數據庫面臨的痛點,降低了 IT 成本、提高運維效率,使數據能夠有效給企業提供服務。其優勢如下:

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

容量多,合并同步了多個生產庫、歷史庫的全部數據。

模式新,支持多種數據類型、結構化和非結構化。

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

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

查詢引擎豐富,支持多種 SQL 查詢引擎,豐富業務使用。

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

系統完備,有新的業務系統隨時可以接入。

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

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計4281字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 长宁县| 沙河市| 陈巴尔虎旗| 珲春市| 运城市| 重庆市| 敦煌市| 阜康市| 同心县| 西林县| 淮南市| 思南县| 高清| 本溪| 西峡县| 外汇| 厦门市| 台江县| 白山市| 沂南县| 渝中区| 宾川县| 涿州市| 锡林郭勒盟| 新蔡县| 崇阳县| 沈丘县| 乾安县| 怀安县| 万荣县| 陇西县| 洞口县| 江都市| 于田县| 岢岚县| 钦州市| 丹阳市| 华宁县| 乌海市| 铜鼓县| 宣武区|