新聞中心
在現代企業(yè)信息化建設領域中,數據一直是其中最為核心的資產之一。而為了滿足不同業(yè)務場景下的不同需求,經常會引入多種不同的數據庫,使得企業(yè)的數據存儲環(huán)境變得十分復雜和異構。如何有效地管理和使用這些異構的數據庫已經成為了眾多企業(yè)管理者和DBA面臨的重要挑戰(zhàn)之一。tddl數據庫異構性是一種解決多種數據庫兼容問題的技術,本文將對TDDL數據庫異構性進行詳細的介紹和分析。

創(chuàng)新互聯專注于高唐網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供高唐營銷型網站建設,高唐網站制作、高唐網頁設計、高唐網站官網定制、小程序設計服務,打造高唐網絡公司原創(chuàng)品牌,更為您提供高唐網站排名全網營銷落地服務。
一、TDDL數據庫異構性的定義
TDDL(Taobao Distributed Data Layer)是阿里巴巴集團的開源數據庫中間件,是一種輕量級、高性能、可擴展的分庫分表解決方案。TDDL數據庫異構性是指TDDL在支持MySQL、Oracle、SqlServer等多種數據庫的同時,可以實現這些不同類別的數據庫之間的無縫兼容,大大降低了跨種類數據庫訪問的難度和復雜性。
通過TDDL分庫分表可以水平擴展表數據,自動管理分庫分表的邏輯,降低數據處理的成本。同時,TDDL提供了數據源路由和可插拔式的數據源適配器,支持多種數據源,這些特性能夠很好的解決異構數據庫帶來的兼容性問題。
在具體應用中,用戶可以將TDDL與各種ORM框架(如MyBatis、Hibernate等)相結合,通過ORM框架的SQL語句來操作數據庫,而TDDL則負責對SQL進行解析、路由、日志打印等操作,避免了手動多數據源的麻煩。
二、TDDL數據庫異構性的優(yōu)勢
1. 降低系統的復雜度
TDDL的異構性可以幫助企業(yè)降低多個異類數據庫的管理難度,減少數據庫帶來的管理復雜度,提高系統的可維護性和穩(wěn)定性。
2. 支持分庫分表,強大的擴展性
TDDL支持分庫分表,可以將數據分散到不同的存儲節(jié)點,同時提供waterfall/sharding兩種分表算法,而且可以根據實際需求動態(tài)調整分庫分表配置,這使得系統具有強大的可擴展性。
3. 路由規(guī)則自定義,高性能的數據讀取
TDDL支持按照一定規(guī)則自定義路由規(guī)則,并采用對數據讀取進行分片的方式,可以實現對數據的快速訪問。另外,TDDL還支持讀寫分離,可以根據負載情況自行切換主備庫,提高系統的讀寫性能。
三、TDDL數據庫異構性的應用
TDDL適用于具有數據庫異構性的中大型企業(yè)和應用系統,不僅兼容多種不同類型的數據庫,又支持強大的分庫分表功能和路由規(guī)則自定義,可以實現高性能、可擴展的數據存儲和管理。
TDDL的典型應用場景包括:
1. 異構數據庫的混合應用
許多企業(yè)在不同的業(yè)務中會使用不同類型的數據庫,比如Oracle、MySQL、SQLserver等,此時,TDDL通過路由規(guī)則的定制和數據源適配器的靈活應用,可以實現這些不同數據庫之間的混合應用,從而解決數據庫兼容問題,提高系統的可靠性和穩(wěn)定性。
2. 分庫分表的存儲和數據管理
在數據量極大的應用系統中,數據存儲和管理往往成為性能瓶頸,此時,TDDL可以通過路由規(guī)則來將數據分散到不同的節(jié)點上,實現分庫分表和數據管理,從而提高系統的性能和穩(wěn)定性,以及數據的可擴展性。
3. 高可用性和冗余性的維護
TDDL支持讀寫分離,可根據負載情況自行切換主備庫,從而實現高可用性和冗余性的維護,提高系統的穩(wěn)定性和可靠性。
四、TDDL數據庫異構性的使用前提
1. 跨異種數據庫的需求
使用TDDL的前提是存在多種不同類別的數據庫需求,從而需要跨異種數據庫的引用。
2. 大數據量的存儲和管理
TDDL的分庫分表適用于大數據量的存儲和管理,因此需要存儲和管理的數據量較大,且數據規(guī)??焖僭鲩L。
3. 系統中使用ORM框架
TDDL主要配合ORM框架使用,需要系統中使用ORM框架并對自定義路由規(guī)則、數據源適配器和三層架構等有深入的理解。
五、TDDL數據庫異構性的未來
TDDL數據庫異構性可以解決多種異構數據庫兼容性問題,從而提高系統的性能和可靠性。在未來,TDDL將會繼續(xù)加強功能個性化定制和面向云計算、大數據、等創(chuàng)新應用的支持能力,使得TDDL的應用場景更加廣泛,性能更加優(yōu)越。
TDDL數據庫異構性是實現多種異構數據庫兼容的一種解決方案。在實際應用中,通過TDDL可以方便地進行分庫分表、路由規(guī)則匹配和數據源適配等操作,從而提高系統的可擴展性和可維護性,同時實現數據的高性能存儲和管理。未來,隨著云計算、大數據和等新技術的推廣和應用,TDDL的應用前景將更加廣泛,帶來更加優(yōu)越的性能和效果。
相關問題拓展閱讀:
- mysql中間件有哪些
- 阿里巴巴采用自己研發(fā)的分布式數據庫系統叫什么,它有哪些特點
mysql中間件有哪些
mysql-proxy是官方提供的mysql中間件產品可以實現負載平衡,讀寫分離,failover等,但其不支持大數據量的分庫分表且性能較差。下面介紹幾款能代替其的mysql開源中間件產品,Atlas,cobar,tddl,讓我們看看它們各自有些什么優(yōu)點和新特性吧。
Atlas
Atlas是由 Qihoo 360, Web平臺部基礎架構行喊兆團隊開發(fā)維護的一個基于MySQL協議的數據中間層項目。它是在mysql-proxy 0.8.2版本的基礎上,對其進行了優(yōu)化,增加了一些新的功能特性。360內部使用Atlas運行的mysql業(yè)務,每天承載的讀寫請求數達幾十億條。
Altas架構:
Atlas是一個位于應用程序與MySQL之間,它實現了MySQL的客戶端與服務端協議,作為服務端與應用程序通訊,同時作為客戶端與MySQL通訊。它對應用程序屏蔽了DB的細節(jié),同時為了降低MySQL負擔,它還維護了連接池。
以下是一個可以參考的整體架構,LVS前端做負載均衡,兩個Altas做HA,防止單點故障。
Altas的一些新特性:
1.主庫宕機不影響讀
主庫宕機,Atlas自動將宕機的主庫摘除,寫操作會失敗,讀操作不受影響。從庫宕機,Atlas自動將宕機的從庫摘除,對應用沒有影響。在mysql官方的proxy中主庫宕機,從庫亦不可用。
2.通過管理接口,簡化管理工作,DB的上下線對應用完全透明,同時可以手動上下線。
3.自己實現讀寫分離
(1)為了解決讀寫分離存在寫完馬上就想讀而這時可能存在主從同步延遲的情況,Altas中可以在SQL語句前增加 /*master*/ 就可以將讀請求強制發(fā)往主庫。
主庫可設置多項,用逗號分隔,從庫可設置多項和權重,達到負載均衡。
4.自己實現分表
(1)需帶有分表字段。
(2)支持SELECT、INSERT、UPDATE、DELETE、REPLACE語句。
(3)支持多個子表查詢結果的合并和排序。
這里不得不吐槽Atlas的分表功能,不能實現分布式分表,所有的子表必須在同一臺DB的同一個database里且所有的子表必須事先建好,Atlas沒有自動建表的功能。
5.之前官方滲褲主要功能邏輯由使用lua腳本編寫,效率低,Atlas用C改寫,QPS提高,latency降低。
6.安全方面的提升
(1)通過配置文件中的pwds參數進行連接Atlas的用戶的權限控制。
(2)通過client-ips參數對有權限連接Atlas的ip進行過濾。
(3)日志中記錄所有通過Altas處理的SQL語句,包括客戶端IP、實際執(zhí)行該語句的DB、執(zhí)行成功與否、執(zhí)行所耗費的時間 ,如下面例子。
圖4
7.平滑重啟
通過配置文件中設置lvs-ips參數實現平滑重啟功能,否則重啟Altas的瞬間那些SQL請求都會失敗。該參數前面掛接的lvs的物理網卡的ip,注意不是虛ip。平滑重啟的條件是至少有兩臺配置相同的Atlas且掛在lvs之后。
source:
alibaba.cobar
Cobar是阿里巴巴(B2B)部門開發(fā)的一種關系型數據的分布式處理系統,它可以在分布式的環(huán)境下看上去像傳統數據庫一樣為您提供海量數據服務。那么具體說說我們?yōu)槭裁匆盟?,或說cobar–能干什么?以下是我們業(yè)務運行中會存在的一些問題:
1.隨著業(yè)務檔租的進行數據庫的數據量和訪問量的劇增,需要對數據進行水平拆分來降低單庫的壓力,而且需要高效且相對透明的來屏蔽掉水平拆分的細節(jié)。
2.為提高訪問的可用性,數據源需要備份。
3.數據源可用性的檢測和failover。
4.前臺的高并發(fā)造成后臺數據庫連接數過多,降低了性能,怎么解決。
針對以上問題就有了cobar施展自己的空間了,cobar中間件以proxy的形式位于前臺應用和實際數據庫之間,對前臺的開放的接口是mysql通信協議。將前臺SQL語句變更并按照數據分布規(guī)則轉發(fā)到合適的后臺數據分庫,再合并返回結果,模擬單庫下的數據庫行為。
Cobar應用舉例
應用架構:
應用介紹:
1.通過Cobar提供一個名為test的數據庫,其中包含t1,t2兩張表。后臺有3個MySQL實例(ip:port)為其提供服務,分別為:A,B,C。
2.期望t1表的數據放置在實例A中,t2表的數據水平拆成四份并在實例B和C中各自放兩份。t2表的數據要具備HA功能,即B或者C實例其中一個出現故障,不影響使用且可提供完整的數據服務。
cabar優(yōu)點總結:
1.數據和訪問從集中式改變?yōu)榉植迹?/p>
(1)Cobar支持將一張表水平拆分成多份分別放入不同的庫來實現表的水平拆分
(2)Cobar也支持將不同的表放入不同的庫
(3) 多數情況下,用戶會將以上兩種方式混合使用
注意?。篊obar不支持將一張表,例如test表拆分成test_1,test_2, test_3…..放在同一個庫中,必須將拆分后的表分別放入不同的庫來實現分布式。
2.解決連接數過大的問題。
3.對業(yè)務代碼侵入性少。
4.提供數據節(jié)點的failover,HA:
(1)Cobar的主備切換有兩種觸發(fā)方式,一種是用戶手動觸發(fā),一種是Cobar的心跳語句檢測到異常后自動觸發(fā)。那么,當心跳檢測到主機異常,切換到備機,如果主機恢復了,需要用戶手動切回主機工作,Cobar不會在主機恢復時自動切換回主機,除非備機的心跳也返回異常。
(2)Cobar只檢查MySQL主備異常,不關心主備之間的數據同步,因此用戶需要在使用Cobar之前在MySQL主備上配置雙向同步。
cobar缺點:
開源版本中數據庫只支持mysql,并且不支持讀寫分離。
source:
TDDL
淘寶根據自己的業(yè)務特點開發(fā)了TDDL(Taobao Distributed Data Layer 外號:頭都大了 ?_Ob)框架,主要解決了分庫分表對應用的透明化以及異構數據庫之間的數據復制,它是一個基于集中式配置的 jdbc datasource實現,具有主備,讀寫分離,動態(tài)數據庫配置等功能。
TDDL所處的位置(tddl通用數據訪問層,部署在客戶端的jar包,用于將用戶的SQL路由到指定的數據庫中):
淘寶很早就對數據進行過分庫的處理, 上層系統連接多個數據庫,中間有一個叫做DBRoute的路由來對數據進行統一訪問。DBRoute對數據進行多庫的操作、數據的整合,讓上層系統像操作一個數據庫一樣操作多個庫。但是隨著數據量的增長,對于庫表的分法有了更高的要求,例如,你的商品數據到了百億級別的時候,任何一個庫都無法存放了,于是分成2個、4個、8個、16個、32個……直到1024個、2023個。好,分成這么多,數據能夠存放了,那怎么查詢它?這時候,數據查詢的中間件就要能夠承擔這個重任了,它對上層來說,必須像查詢一個數據庫一樣來查詢數據,還要像查詢一個數據庫一樣快(每條查詢在幾毫秒內完成),TDDL就承擔了這樣一個工作。在外面有些系統也用DAL(數據訪問層) 這個概念來命名這個中間件。
下圖展示了一個簡單的分庫分表數據查詢策略:
主要優(yōu)點:
1.數據庫主備和動態(tài)切換
2.帶權重的讀寫分離
3.單線程讀重試
4.集中式數據源信息管理和動態(tài)變更
5.剝離的穩(wěn)定jboss數據源
6.支持mysql和oracle數據庫
7.基于jdbc規(guī)范,很容易擴展支持實現jdbc規(guī)范的數據源
8.無server,client-jar形式存在,應用直連數據庫
9.讀寫次數,并發(fā)度流程控制,動態(tài)變更
10.可分析的日志打印,日志流控,動態(tài)變更
mysql-proxy是官方提供的mysql中間件產品可以實現負載平衡,讀寫分離,failover等,但其不支持大數據量的分庫分表且性能較差。下面介紹幾款能代替其的mysql開源中間件產品,含清Atlas,明圓cobar,tddl,讓我們看看它們各自有些什么優(yōu)點和新特性吧。
Atlas
Atlas是由 Qihoo 360, Web平臺部基礎架構團隊開發(fā)維護的一個基于MySQL協議的數據中間層項目。它是在mysql-proxy 0.8.2版本的基礎上,對其進行了優(yōu)化,增加了一些新的功能特性。360內部使用Atlas運行的mysql業(yè)務,每天承載的讀寫請求數達幾十億條。
Altas架構:
Atlas是一個位于應用程序與MySQL之間激老塌,它實現了MySQL的客戶端與服務端協議,作為服務端與應用程序通訊,同時作為客戶端與MySQL通訊。它對應用程序屏蔽了DB的細節(jié),同時為了降低MySQL負擔,它還維護了連接池。
以下是一個可以參考的整體架構,LVS前端做負載均衡,兩個Altas做HA,防止單點故障。
Altas的一些新特性:
1.主庫宕機不影響讀
主庫宕機,Atlas自動將宕機的主庫摘除,寫操作會失敗,讀操作不受影響。從庫宕機,Atlas自動將宕機的從庫摘除,對應用沒有影響。在mysql官方的proxy中主庫宕機,從庫亦不可用。
2.通過管理接口,簡化管理工作,DB的上下線對應用完全透明,同時可以手動上下線。
3.自己實現讀寫分離
(1)為了解決讀寫分離存在寫完馬上就想讀而這時可能存在主從同步延遲的情況,Altas中可以在SQL語句前增加 /*master*/ 就可以將讀請求強制發(fā)往主庫。
主庫可設置多項,用逗號分隔,從庫可設置多項和權重,達到負載均衡。
4.自己實現分表
(1)需帶有分表字段。
(2)支持SELECT、INSERT、UPDATE、DELETE、REPLACE語句。
(3)支持多個子表查詢結果的合并和排序。
這里不得不吐槽Atlas的分表功能,不能實現分布式分表,所有的子表必須在同一臺DB的同一個database里且所有的子表必須事先建好,Atlas沒有自動建表的功能。
5.之前官方主要功能邏輯由使用lua腳本編寫,效率低,Atlas用C改寫,QPS提高,latency降低。
6.安全方面的提升
(1)通過配置文件中的pwds參數進行連接Atlas的用戶的權限控制。
(2)通過client-ips參數對有權限連接Atlas的ip進行過濾。
(3)日志中記錄所有通過Altas處理的SQL語句,包括客戶端IP、實際執(zhí)行該語句的DB、執(zhí)行成功與否、執(zhí)行所耗費的時間 ,如下面例子。
阿里巴巴采用自己研發(fā)的分布式數據庫系統叫什么,它有哪些特點
搜一下:阿里巴巴采用自己研發(fā)的分布式數據庫系統叫什么,它有哪些特點
上層的是分布式數據庫分表分庫中間件,負責和上層應用打交道,對應用可表現為一個獨立的數據庫,而屏蔽底層復雜的系統細節(jié)。分布式數據庫中間件除了基襪腔虧本的分表分庫功能,還可以豐富一下,比如講讀寫分離或者水平擴容功能集成在一起,或者比如讀寫分離本身也可以作為一個獨立的中間件。(Cobar, MyCAT, TDDL, DRDS, DDB)
增量數據訂閱和消費告神,用戶對數據庫操作,比如DML, DCL, DDL等,這些操作會產生增量數據,下層應用可以通過監(jiān)測這些增量數據進行相應的處理。典型代表C,根據MySQL的binlog實現。也有針對Oracle(redolog)的增量數據訂閱與消費圓陵的中間件。(C, Erosa)
數據庫同步中間件涉及數據庫之間的同步操作,可以實現跨(同)機房同步以及異地容災備份、分流等功能??梢陨婕岸喾N數據庫,處理之后的數據也可以以多種形式存儲。(Otter, JingoBus, DRC)
數據庫與數據庫之間會有數據遷移(同步)的動作,同款數據同步原理比較簡單,比如MySQL主備同步,只要在數據庫層進行相應的配置既可,但是跨數據庫同步就比較復雜了,比如Oracle->MySQL. 數據遷移一般包括三個步驟:全量復制,將原數據庫的數據全量遷移到新數據庫,在這遷移的過程中也會有新的數據產生;增量同步,對新產生的數據進行同步,并持續(xù)一段時間以保證數據同步;原庫停寫,切換新庫。將“跨數據庫”這個含義擴大一下——“跨數據源”,比如HDFS, HBase, FTP等都可以相互同步。(yugong, DataX)
AanlyticDB,可以兼容Mysql5.x系列和SQL等,阿里巴巴自主團李乎研發(fā)、唯一經過超大規(guī)模以及核心業(yè)務驗證的PB級實時數據倉庫。自2023年之一次在集團發(fā)布上線以來,至今已累計迭代發(fā)布近百個版本,支撐起集團內的電商、廣告、菜鳥、文娛、飛豬等眾多在線分析業(yè)務。阿里巴巴最初通過單節(jié)點Oracle進行準實時分析, 后來轉到Oracle RAC,隨著業(yè)務的飛速發(fā)展, 集中式的Shared Storage架構需要快速轉向分布式,遷移到了Greenplum,但不到一年時間便遇到擴展性和并發(fā)的嚴重瓶頸。為了迎接更大數據集、更高并發(fā)、更高可用擾廳、更實時的數據應用發(fā)展趨勢,從2023年開始,在線分析這個技術領域,阿里實時塌悉數倉堅定的走上了自研之路。特點和性能參考這個百度
網頁鏈接
tddl數據庫異構性的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于tddl數據庫異構性,TDDL數據庫異構性:解決多種數據庫兼容問題,mysql中間件有哪些,阿里巴巴采用自己研發(fā)的分布式數據庫系統叫什么,它有哪些特點的信息別忘了在本站進行查找喔。
香港服務器選創(chuàng)新互聯,2H2G首月10元開通。
創(chuàng)新互聯(www.cdcxhl.com)互聯網服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網站系統開發(fā)經驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
當前標題:TDDL數據庫異構性:解決多種數據庫兼容問題(tddl數據庫異構性)
新聞來源:http://m.5511xx.com/article/codihes.html


咨詢
建站咨詢
