成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數據庫中間件TDDL調研筆記

開發 開發工具
TDDL“最佳實踐”與“存儲模型”更具啟發與價值。13年底負責數據庫中間件設計時的調研筆記,拿出來和大家分享,輕拍。

前篇:《數據庫中間件cobar調研筆記

13年底負責數據庫中間件設計時的調研筆記,拿出來和大家分享,輕拍。

一、TDDL是什么

  • TDDL是Taobao Distribute Data Layer的簡稱
  • 淘寶一個基于客戶端的數據庫中間件產品
  • 基于JDBC規范,沒有server,以client-jar的形式存在

畫外音:數據庫中間件有基于服務端的,也有基于客戶端的,TDDL屬于后者;而cobar是一個中間層服務,使用mysql協議,屬于前者。

二、TDDL不支持什么SQL

  • 不支持各類join
  • 不支持多表查詢
  • 不支持between/and
  • 不支持not(除了支持not like)
  • 不支持comment,即注釋
  • 不支持for update
  • 不支持group by中having后面出現集函數
  • 不支持force index
  • 不支持mysql獨有的大部分函數

畫外音:分布式數據庫中間件,join都是很難支持的,cobar號稱的對join的支持即有限,又低效。

三、TDDL支持什么SQL

  • 支持CURD基本語法
  • 支持as
  • 支持表名限定,即"table_name.column"
  • 支持like/not like
  • 支持limit,即mysql的分頁語法
  • 支持in
  • 支持嵌套查詢,由于不支持多表,只支持單表的嵌套查詢

畫外音:分布式數據庫中間件,支持的語法都很有限,但對于與聯網的大數據/高并發應用,足夠了,服務層應該做更多的事情。

四、TDDL其他特性

  • 支持oracle和mysql
  • 支持主備動態切換
  • 支持帶權重的讀寫分離
  • 支持分庫分表
  • 支持主鍵生成:oracle用sequence來生成,mysql則需要建立一個用于生成id的表
  • 支持單庫事務,不支持夸庫事務
  • 支持多庫多表分頁查詢,但會隨著翻頁,性能降低

畫外音:可以看到,其實TDDL很多東西都不支持,那么為什么它還如此流行呢?它解決的根本痛點是“分布式”“分庫分表”等。

加入了解決“分布式”“分庫分表”的中間件后,SQL功能必然受限,但是,我們應該考慮到:MYSQL的CPU和MEM都是非常珍貴的,我們應該將MYSQL從復雜的計算(事務,JOIN,自查詢,存儲過程,視圖,用戶自定義函數,,,)中釋放解脫出來,將這些計算遷移到服務層。

當然,有些后臺系統或者支撐系統,數據量小或者請求量小,沒有“分布式”的需求,為了簡化業務邏輯,寫了一些復雜的SQL語句,利用了MYSQL的功能,這類系統并不是分布式數據庫中間件的潛在用戶,也不可能強行讓這些系統放棄便利,使用中間件。

五、TDDL層次結構

TDDL層次結構

TDDL是一個客戶端jar,它的結構分為三層:

TDDL是一個客戶端jar,它的結構分為三層

對應上面圖例:matrix數據水平分為了兩個group,每個group有主備atom組成。

matrix層

  • 核心是規則引擎
  • 實現分庫分表
  • 主要路徑:sql解析 => 規則引擎計算(路由) => 執行 => 合并結果

group層

  • 讀寫分離
  • 權重計算
  • 寫HA切換
  • 讀HA切換
  • 動態新增slave(atom)節點

atom層

  • 單個數據庫的抽象;
  • ip /port /user /passwd /connection 動態修改,動態化jboss數據源
  • thread count(線程計數):try catch模式,保護業務處理線程
  • 動態阻止某些sql的執行
  • 執行次數的統計和限制

整個SQL執行過程

  • BEGIN(sql+args),輸入是sql和參數
  • sql解析
  • 規則計算
  • 表名替換
  • 選擇groupDS執行sql
  • 根據權重選擇atomDS
  • 具備重試策略的在atomDS執行sql
  • 讀寫控制,并發控制,執行sql,返回結果
  • 合并結果集
  • END(ResultSet),輸出是結果集

畫外音:感覺難點在SQL的解析上。

六、TDDL***實踐

  • 盡可能使用1對多規則中的1進行數據切分(patition key),例如“用戶”就是一個簡單好用的緯度
  • 買家賣家的多對多問題,使用數據增量復制的方式冗余數據,進行查詢
  • 利用表結構的冗余,減少走網絡的次數,買家賣家都存儲全部的數據

畫外音:這里我展開一下這個使用場景。

以電商的買家賣家為例,業務方既有基于買家的查詢需求,又有基于賣家的查詢需求,但通常只能以一個緯度進行數據的分庫(patition),假設以買家分庫, 那賣家的查詢需求如何實現呢?

TDDL***實踐

如上圖所示:查詢買家所有買到的訂單及商品可以直接定位到某一個分庫,但要查詢賣家所有賣出的商品,業務方就必須遍歷所有的買家庫,然后對結果集進行合并,才能滿足需求。

所謂的“數據增量復制”“表結構冗余”“減少網絡次數”,是指所有的數據以買家賣家兩個緯度冗余存儲兩份,如下圖:

TDDL***實踐

采用一個異步的消息隊列機制,將數據以另一個緯度增量復制一份,在查詢的時候,可以直接以賣家直接定位到相應的分庫。

這種方式有潛在的數據不一致問題。

繼續tddl***實踐:

(1) 利用單機資源:單機事務,單機join

(2) 存儲模型盡量做到以下幾點:

  • 盡可能走內存
  • 盡可能將業務要查詢的數據物理上放在一起
  • 通過數據冗余,減少網絡次數
  • 合理并行,提升響應時間
  • 讀瓶頸通過增加slave(atom)解決
  • 寫瓶頸通過切分+路由解決

畫外音:相比數據庫中間件內核,***實踐與存儲模型,對我們有更大的借鑒意義。

七、TDDL的未來?

  • kv是一切數據存取最基本的組成部分
  • 存儲節點少做一點,業務代碼就要多做一點
  • 想提升查詢速度,只有冗余數據一條路可走
  • 類結構化查詢語言,對查詢來說非常方便

畫外音:潛臺詞是,在大數據量高并發下,SQL不是大勢所趨,no-sql和定制化的協議+存儲才是未來方向?

13年底的調研筆記,文中的“畫外音”是我當時的批注,希望能讓大家對TDDL能有一個初步的認識,有疑問之處,歡迎交流。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-11-27 05:06:42

數據庫中間件cobar

2017-12-01 05:04:32

數據庫中間件Atlas

2018-02-24 19:37:33

Java8數據庫中間件

2017-05-23 18:55:05

mysql-proxy數據庫架構

2011-08-10 13:03:58

CJDBC數據庫集群

2017-07-26 09:41:28

MyCATSQLMongoDB

2017-07-18 17:35:16

數據庫MyCATPreparedSta

2017-11-03 11:02:08

數據庫中間件

2017-11-30 08:56:14

數據庫中間件架構師

2017-11-27 06:01:37

數據庫中間件中間層

2017-12-01 05:40:56

數據庫中間件join

2017-12-11 13:30:49

Go語言數據庫中間件

2024-12-06 08:29:29

2017-07-18 17:07:40

數據庫 MyCATJoin

2009-01-20 10:45:55

Oracle數據庫中間件

2020-10-15 08:34:32

數據庫中間件漫談

2021-07-27 05:49:59

MySQL數據庫中間件

2018-11-07 15:30:19

數據庫NewSQLNoSQL

2018-08-28 12:37:27

數據庫數據庫中間件MySQL

2009-11-10 16:48:23

中間件操作系統數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av在线一区二区三区 | 成人精品一区二区 | 国产精品免费在线 | 午夜寂寞福利视频 | 国产99久久久久 | 国内精品久久影院 | 大伊人久久 | 三级黄色网址 | 美女天天操 | 日韩二区三区 | 国户精品久久久久久久久久久不卡 | 国产清纯白嫩初高生视频在线观看 | 欧美亚洲国产一区二区三区 | 成人av在线播放 | av天空| 国产精品不卡一区 | 国产综合视频 | 中文字幕一区二区三区在线观看 | 亚洲精品乱码8久久久久久日本 | 成人免费视频网站在线观看 | 成年网站在线观看 | 亚洲国产一区二区三区在线观看 | 一级无毛片 | 久久久久国产 | 国产一级片一区二区 | 男人阁久久 | 99热激情 | 亚洲 精品 综合 精品 自拍 | 成人三级视频在线观看 | 国产一区二区在线看 | 久久91精品国产一区二区 | 欧美精品片 | 日韩一区二区三区在线观看 | 国产精品无码久久久久 | 97国产精品视频 | h视频免费在线观看 | 污视频在线免费观看 | 毛片一级片 | 天堂成人国产精品一区 | 懂色av一区二区三区在线播放 | 999久久久久久久 |