
作者:陸豪
在對Mysql,MongoDB等資料庫系統進行分析時,經常面臨的一個問題是在進行分析查詢時如何避免對實時業務産生影響,也就是OLAP負載和OLTP負載隔離的問題。針對這個問題,阿裡雲資料湖團隊一直在努力優化,提供滿足不同場景的解決方案。
最近,我們支援了對MongoDB和RDS隻讀執行個體的分析,做到了完全不影響源庫、資料完全實時,為對負載隔離有更高要求的使用者提供了更好的選擇。
場景分析
OLAP負載和OLTP負載隔離的問題,常常會和資料的實時性、成本等因素做權衡,綜合考慮。過去,資料湖針對不同的隔離性要求和成本,提供過一些方案:
- 針對直接查詢RDS的使用者,可以通過jdbc-scan-splits這個hint來調整SQL的并發度。使用者可以根據業務的特點設定合理的并發度,控制OLAP查詢産生的影響。jdbc-scan-splits關鍵字的用法參見 幫助文檔 。
- 通過一鍵建倉功能在業務低峰期把資料拖到DLA,避免直接分析源庫。具體介紹參見 文章
但是,仍然有一些場景是這些方案覆寫不到的,例如:
- 一鍵建倉目前暫時不支援MongoDB。同樣,MongoDB也不能使用jdbc-scan-splits這個hint。
- 以上提到的兩種方法對源庫仍然會産生一定的影響,如果業務沒有明顯的低峰,這種影響仍然不能忽略。
- 一鍵建倉不能滿足對資料實時進行分析的需求。
考慮到這些因素,我們針對對分析的實時性有較高要求又可以接受一定的成本的使用者,通過支援分析隻讀執行個體來實作OLAP負載隔離。這樣我們就比較完整的支援了大部分場景:
分析方案 | 對源庫影響 | 資料實時性 | 是否支援MongoDB | 成本 |
---|---|---|---|---|
直接查詢源庫 | 較大 | 實時 | 支援 | 低 |
一鍵建倉 | 較小 | 非實時 | 不支援 | 較低 |
查詢隻讀執行個體 | 幾乎無影響 | 較高 |
以下描述使用DLA分析MongoDB和RDS隻讀執行個體的具體步驟。
使用DLA分析MongoDB隻讀節點
添加MongoDB隻讀節點
MongoDB副本集執行個體在建立時可以指定隻讀節點的個數:
如果建立時沒有選擇隻讀節點,在建立之後也可以在執行個體基本資訊頁面添加隻讀節點:
添加了隻讀節點之後,可以在頁面上看到隻讀節點的連接配接位址:
關于隻讀節點參見
MongoDB幫助文檔建立資料庫
CREATE DATABASE mongo_ro WITH DBPROPERTIES (
catalog = 'mongodb',
location = '隻讀節點連接配接位址,見上圖',
database = 'mongo_test',
INSTANCE_ID = 'mongodb_instance_id',
vpc_id = 'vpc-*******'
);
隻要這裡的location寫上MongoDB隻讀節點的連接配接位址,後續通過DLA進行的查詢都隻會連接配接MongoDB的隻讀節點。
使用DLA分析RDS隻讀執行個體
添加RDS隻讀執行個體
參見
RDS幫助文檔,可以在執行個體詳情頁面右側“添加隻讀執行個體”建立一個隻讀執行個體。
隻讀執行個體擁有獨立的執行個體ID和連接配接位址:
CREATE SCHEMA hello_mysql_vpc_rds WITH DBPROPERTIES (
CATALOG = 'mysql',
LOCATION = 'jdbc:mysql://rm-******fofake.mysql.rds.aliyuncs.com:3306/rds_mysql_dbname',
USER = 'rds_mysqldb_username',
PASSWORD = 'rds_mysqldb_password',
INSTANCE_ID = '隻讀執行個體ID',
VPC_ID = 'rds_mysqldb_vpcid'
);
這樣,後續通過DLA進行的查詢都會落在隻讀執行個體上面,不會對源庫産生任何影響。
關于我們
資料湖分析Data Lake Analytics簡介
歡迎大家使用資料湖分析(DLA),DLA不僅僅便宜,且快,且友善,專為阿裡雲資料湖分析方案而生
- 支援自建、托管RDS、NoSQL、OSS(JSON、CSV、Parquet等格式)多種資料源分析
- 支援按量 按照掃描量 的計費方式,準入門檻0元,提供的Serverless的彈性服務為按需收費,不需要購買固定的資源,完全契合業務潮汐帶來的資源波動,滿足彈性的分析需求,同時極大地降低了運維成本和使用成本
- 平台底層托管大叢集且自動彈性,在一定資料量情況下,分析性能比自建小叢集高出400%
- 支援一鍵 把 MySQL、PG、SqlServer、PolarDb資料庫 拖到DLA,再分析,解決原MySQL不敢分析的問題。 DLA 分析性能TPC-H 10G情況 比原MySQL 8c16g 等高出10倍,資料量越大,MySQL性能越差,在1TB資料量下,原MySQL基本跑不出來
- 産品文檔: https://www.aliyun.com/product/datalakeanalytics
- 幫助文檔: https://help.aliyun.com/document_detail/70378.html
- MySQL&PG&SqlServer一鍵同步資料到DLA: https://help.aliyun.com/document_detail/126559.html
- 新客戶1元試用: https://common-buy.aliyun.com/?commodityCode=openanalytics_post