精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

數據庫中間件cobar調研筆記

開發 開發工具
分庫后,join怎么實現,group by怎么實現?13年底負責數據庫中間件設計時的調研筆記,拿出來和大家分享,輕拍。

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

一、cobar是什么

  • 阿里開源的mysql的中間件服務
  • 使用mysql協議
  • 對上游,cobar就是傳統mysql數據庫
  • 對上游,它屏蔽后端分布式mysql集群

畫外音:數據庫中間件有基于服務端的,也有基于客戶端的,cobar屬于前者。

二、cobar應用場景舉例

obar應用場景舉例

邏輯上:

  • 數據庫dbtest(虛擬的)
  • 表tb1和tb2

物理上:

  • tb1表的數據在dbtest1(物理的)的tb1上
  • tb2表的一部分數據在dbtest2(物理的)的tb2上,另外一部分在dbtest3(物理的)的tb2上

三、cobar使用方式

  • 命令行:連dbtest虛擬庫
  • JDBC:也是連dbtest虛擬庫

cobar使用方式

查看db:

查看db

可看到dbtest1、dbtest2、dbtest3對用戶透明。

查看table:

查看table

可看到有tb1和tb2兩張表。

插入一些數據,對用戶而言,后端的分布式mysql是透明的:

  • 對tb1,數據實際上存在dbtest1的tb1中
  • 對tb2,數據實際上存儲在dbtest2和dbtest3的tb2中

畫外音:從其官網上看,自12年12月之后,cobar就沒有再更新過,官方微博也非常不活躍,不清楚現在它在阿里的使用情況,知道的同學請說一說。

四、cobar不支持什么

  • 不支持夸庫join,分頁,排序,子查詢
  • set語句會被忽略(事務和字符集設置除外)
  • 如果分庫,insert必須包含patition key(否則麻煩大了)
  • 如果分庫,patition key不能被update
  • 不支持讀寫分離
  • 不支持存儲過程
  • 如果使用JDBC,rewriteBatchedStatements,useServerPrepStmts,BLOB, BINARY, VARBINARY字段不能使用setBlob()或setBinaryStream()

五、cobar支持什么

1. 分布式數據庫:通過分庫實現

  • 支持一張表放到不同的庫
  • 支持不同的表放入不同的庫

需要注意:不支持將test拆分成test_1,test_2,test_3并放入同一個庫中這樣的拆分方式。

畫外音:后者正是360的atals的做法(atlas只支持單實例單庫分表)。

2. HA:通過到mysql的心跳實現

  • 主機掛了會自動切換回備機,但主機恢復,需要手動切回
  • 只檢測主備異常,不關心主備數據同步(需要dba手動配)

畫外音:需要注意,cobar是需要用戶自己來實現負載均衡的,方式有三種:

  • 自己使用軟件例如LVS
  • 自己使用硬件例如F5
  • cobar提供了命令獲取集群信息,用戶可以根據這些信息做負載均衡;當然,淘寶已經實現了一個具有負載均衡功能的cobar客戶端產品-cobar.driver

3. SQL路由

在分庫的情況下,cobar會從sql中提取partition key列,來判斷SQL被路由到哪一個分庫進行執行;如果沒有帶partition key,則會將SQL分發到所有分庫執行。

4. 示例

tb1(id INT)

假設以id切分數據,后端分了N個庫:

  1. insert into tb1 values(1); 
  2. => N個庫都會執行插入,因為沒有帶partition key; 
  1. insert into tb1(id) values(1); 
  2. => 只會路由到1個庫,帶了partition key; 
  1. update tb1 set id=2 where id=1
  2. => 不支持,不能修改partition key; 

畫外音:SQL帶上partition key對cobar來說,非常非常重要,并且partition key不支持修改(修改了庫就不對了喲)。

cobar不允許在同一個連接中切換庫。

畫外音:數據庫連接和庫是綁定關系。

不建議通過cobar來執行DDL語句。

畫外音:所以建庫,建索引什么的,還是直連mysql自己搞吧。

5. COBAR自定義語句

(1) 查詢cobar節點的狀態

cobar允許管理員通過管理命令上線和下線cobar節點。

(2) 查詢cobar集群的狀態

查詢cobar集群的狀態

被定義在一個cobar集群中的cobar節點之間都會發送心跳,所謂的心跳就是上面提到的show cobra_status; 這樣的話,就為每一個cobar節點提供了知道同一個集群內的所有cobar信息的機會。當然,被下線,或者心跳超時的cobar節點的信息不會被顯示出來。

(3) 查詢SQL語句的路由情況

查詢SQL語句的路由情況

SQL語句前加上explain即可知道SQL語句的路由情況。

6. 事務的支持

cobar對單庫保持事務的強一致性。

對分庫保持事務的弱一致性。

分庫后事務提交包含兩個階段:

  • 執行階段:SQL按照規則被路由到多個分庫,此時發生錯誤,還能回滾
  • 提交階段:提交階段出錯,無法正確回滾

事務的支持

兩個階段之間,執行與提交串行處理,階段內部各個分庫并行處理。

畫外音:額,基本就是不支持分布式事務。

六、cobar系統架構

1. 系統模塊圖

系統模塊圖

畫外音:從模塊圖來看,cobar的結構還是挺清晰的:

(1) 前端對上游的連接池

(2) 后端對下游mysql的連接池

(3) 對每一個請求,會經過:

  • SQL分析
  • SQL路由
  • SQL執行
  • 投遞給后端mysql

(4) 對每一個響應,需要做結果合并

2. 數據流圖

數據流圖和上述模塊圖對應:

數據流圖和上述模塊圖對應

3. 網絡模型

采用異步網絡模型:

采用異步網絡模型

4. 結果合并

會把多個物理庫的結果集合并,再返回給上游:

會把多個物理庫的結果集合并,再返回給上游

七、cobar路由算法

  • partition key是int時:好辦,直接取模
  • partition key是string時:f(string) = hash(string) % 1024

假設分4個庫:

  • 哈希結果0-255 -> 庫1
  • 哈希結果256-511 -> 庫2
  • 哈希結果512-767 -> 庫3
  • 哈希結果768-1024 -> 庫4

如何擴容:

  • 哈希結果0-255 -> 庫1

拆分后:

  • 哈希結果0-127 -> 庫1.1
  • 哈希結果128-255 -> 庫1.2

數據非均勻分布路由:

  • 哈希結果0-511(513范圍) -> 庫1
  • 哈希結果512-767(256范圍) -> 庫2
  • 哈希結果768-895(128范圍) -> 庫3
  • 哈希結果896-1023(128范圍) -> 庫4

八、cobar對于SQL的轉發

1. 帶partition key單記錄查詢

帶partition key單記錄查詢

直接根據partition key路由。

2. 帶partition key的IN查詢

帶partition key的IN查詢

將IN進行拆分,請求發到對應多個分庫,然后將結果集合并。

3. 不帶partition key的where查詢

不帶partition key的where查詢

假設partition key是user字段,在product字段上的where查詢,會將請求廣播到所有分庫,然后將結果集合并。

4. 二維partition key

一張表的多個字段同時作為定位庫的拆分字段,仍以上圖的visit(product, user, info)為例,可以以product和user兩個字段來同時來定位庫。

二維partition key

橫坐標product屬性取hash,縱坐標user屬性取hash。

二維partition key

 

  1. SELECT * FROM visit WHERE product=‘ColaCola’ AND user=‘A’ 

對于上述業務需求,同時帶有兩個列作為查詢條件,可以直接定位到庫7。

但是,此時如果只有其中的一個字段作為查詢條件,反而得查詢多個庫,再做聚合:

聚合

  1. SELECT * FROM visit WHERE product=‘ColaCola’ 

對于上述業務需求,就必須查詢庫3,7,11,15了。

畫外音:不懂為什么要按照雙key來做路由,單key路由,對于雙key的查詢,也沒有增加多少數據掃描量啊,加入雙key反而使得某些情況下策略復雜了,帶來的收益也不高。

5. 小結

對的,對于where,cobar就是這樣的處理方式:

  • 根據字段的一致性hash分布數據
  • 多維拆分
  • 根據where中的partition key分發查詢
  • SQL語句變換,分發至各個分庫執行,對結果進行合并

九、cobar的高級特性

1. JOIN有限的處理

JOIN有限的處理

如上,兩個表都進行了分庫,JOIN需求如下:

  1. SELECT * FROM tb1 INNER JOIN tb2 
  2.     ON tb1.MEMBER_ID=tb2.NAME 

結果集理應如下:

方案一:迭代查詢

  1. FOR row1 IN select * FROM tb1{ 
  2.     ADD( 
  3.         SELECT* FROM tb2 WHERE 
  4.           tb2.name = row1.member_id 
  5.     )TO RESULT 

畫外音:我去,外層循環是對tb1中的所有記錄,在tb2來一遍掃描,bt1數據量大的情況下,這哪里受得了?

方案二:夸庫索引

對于tb1和tb2存在的潛在JOIN需求,對JOIN列建立夸庫索引。

  • 直接JOIN查詢:建立了夸庫索引后,對于JOIN的直接查詢,就是idx索引表內的數據的合并就是結果
  • JOIN后帶WHERE條件:
    1. SELECT * FROM tb1 INNER JOIN tb2 
    2. ON tb1.MEMBER_ID=tb2.NAME 
    3.       WHEREtb1.id=5 

此時需要改寫SQL語句,直接在索引表上進行查詢:

  1. 此時需要改寫SQL語句,直接在索引表上進行查詢: 
  2. SELECT * FROM idx WHERE id1=5 

此處需要注意:

  • 索引表的partition key:WHERE條件所在表的partition key,作為索引表的partition key
  • 索引必須包含參與JOIN相關表的主鍵,JOIN字段,包含WHERE條件的字段
  • 索引的更新:需要分布式事務的支持

2. GROUP BY的處理

GROUP BY的處理

以上表為例,patition key是ID,要在C1上進行GROUP BY操作:

  1. SELECT SUM(price) FROM tb1 GROUP BY c1; 

改寫SQL語句,先在各個分庫上GROUP BY一次,并將sum計算出來:

  1. SELECT SUM(price), c1 FROM tb1 GROUP BY c1 ORDER BY c1; 

各分庫進行GROUP BY + ORDER BY + sum之后,根據排序后的c1及對應sum結果,歸并一遍后即得到最終結果。

3. 小結

對于復雜語句,可以這樣處理:

  • 對于JOIN,可以迭代查詢,或者使用分布式索引
  • 對于GROUP BY,需要增加查詢列,以及ORDER BY

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

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

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

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

2017-12-01 05:04:32

數據庫中間件Atlas

2017-11-27 05:36:16

數據庫中間件TDDL

2018-02-24 19:37:33

Java8數據庫中間件

2011-08-10 13:03:58

CJDBC數據庫集群

2017-05-23 18:55:05

mysql-proxy數據庫架構

2017-07-26 09:41:28

MyCATSQLMongoDB

2017-11-27 06:01:37

數據庫中間件中間層

2017-12-01 05:40:56

數據庫中間件join

2017-12-11 13:30:49

Go語言數據庫中間件

2017-07-18 17:35:16

數據庫MyCATPreparedSta

2017-11-03 11:02:08

數據庫中間件

2017-11-30 08:56:14

數據庫中間件架構師

2024-12-06 08:29:29

2017-07-18 17:07:40

數據庫 MyCATJoin

2021-07-27 05:49:59

MySQL數據庫中間件

2020-10-15 08:34:32

數據庫中間件漫談

2009-01-20 10:45:55

Oracle數據庫中間件

2018-11-07 15:30:19

數據庫NewSQLNoSQL

2022-04-01 10:55:30

數據庫混合云建設

2009-11-10 16:48:23

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

51CTO技術棧公眾號

国产在线视频欧美一区| 北岛玲日韩精品一区二区三区| 欧美日韩视频| 精品在线观看国产| 在线观看日本一区二区| 91精品久久| 26uuu精品一区二区三区四区在线| 国产精品18久久久久久麻辣| 中文字幕在线2021| 亚洲+变态+欧美+另类+精品| 欧美另类videos死尸| 你真棒插曲来救救我在线观看| 岛国最新视频免费在线观看| 国产激情91久久精品导航| 91干在线观看| 欧美三根一起进三p| 蜜桃国内精品久久久久软件9| 在线成人高清不卡| 毛片一区二区三区四区| 日本小视频在线免费观看| 久久久精品国产99久久精品芒果| 3d动漫精品啪啪一区二区三区免费 | 国产亚洲一区字幕| 99在线观看视频| 亚洲在线免费观看视频| 免费日韩av片| 91高清免费视频| 国产亚洲色婷婷久久99精品| 国产精品久久天天影视| 亚洲人a成www在线影院| 久久性爱视频网站| 日韩精品中文字幕一区二区| 911精品产国品一二三产区| 成人黄色一区二区| 亚洲日本天堂| 狠狠躁18三区二区一区| av网站手机在线观看| 18+激情视频在线| 亚洲视频1区2区| 亚洲午夜精品一区二区三区| 久蕉依人在线视频| 久久久久久99精品| 久热这里只精品99re8久| 欧美自拍偷拍第一页| 国产91高潮流白浆在线麻豆 | 99精品国产99久久久久久97| 美女网站色91| 国产精品免费久久久| 无码人妻精品一区二区蜜桃色欲| 99精品国产在热久久婷婷| 国产精品黄色在线观看| 欧美国产视频在线观看| 亚洲av电影一区| 91免费国产在线观看| 久久精品二区| 国产最新视频在线| 国产午夜精品美女毛片视频| 日韩av电影免费观看| 理论视频在线| 国产欧美一区二区精品性| 欧美日韩在线一区二区三区| 久草福利在线| 中文在线资源观看网站视频免费不卡| 亚洲v日韩v欧美v综合| 国产大片在线免费观看| 国产精品每日更新在线播放网址| 亚洲精品无人区| 黄色一级片在线观看| 一区二区在线观看视频| 日本阿v视频在线观看| 九色porny丨国产首页在线| 欧美性猛交xxxxx免费看| 中文字幕永久视频| www.久久热| 精品成人在线观看| a毛片毛片av永久免费| 欧美综合视频| 九九热精品视频| 久久99精品波多结衣一区| 日韩精品一卡二卡三卡四卡无卡| 国产日韩亚洲欧美| 亚洲精品国产手机| 久久综合狠狠综合久久激情 | 欧美久久久久| 欧美在线视频免费| 亚洲系列第一页| 成人精品国产一区二区4080| 日韩精品欧美在线| 天堂av中文在线| 日韩欧美一区二区三区久久| 国产色视频在线播放| 91精品啪在线观看国产爱臀 | 精品视频一区 二区 三区| 五月天婷婷在线观看视频| 老司机精品在线| 色偷偷偷亚洲综合网另类| 精品在线视频免费| 全部av―极品视觉盛宴亚洲| 国产精品久久久久久久免费大片| 极品白浆推特女神在线观看| 亚洲女同一区二区| 少妇高清精品毛片在线视频| 日韩激情精品| 中文字幕在线国产精品| 国产午夜小视频| 久久99精品久久久久久| 久热国产精品视频一区二区三区| 国内精品久久久久久野外| 欧美性xxxxx极品| 国产裸体视频网站| 日韩精品网站| 青草青草久热精品视频在线网站 | 日韩中文在线字幕| 桃花岛tv亚洲品质| 亚洲精品在线免费播放| 潘金莲一级黄色片| 久久中文精品| 精品久久久久久亚洲| 粗大黑人巨茎大战欧美成人| 色欧美乱欧美15图片| 日韩综合第一页| 亚洲综合自拍| 国产在线精品播放| 黄色美女网站在线观看| 午夜国产精品影院在线观看| 伊人精品视频在线观看| 日韩国产在线| 国产精品精品久久久久久| 手机亚洲第一页| 天涯成人国产亚洲精品一区av| 佐山爱在线视频| 国产精品久久久乱弄| 国产欧美精品xxxx另类| 亚洲精品网站在线| 一区二区三区在线看| 韩国三级丰满少妇高潮| 久久久久亚洲| 成人性教育视频在线观看| 五月香视频在线观看| 欧美日韩国产一区| 精品人体无码一区二区三区| 日韩精品每日更新| 日韩欧美精品久久| 成人在线视频播放| 亚洲色图第三页| 亚洲性猛交富婆| 国产精品国产精品国产专区不蜜| 五月婷婷丁香色| 99re6这里只有精品| 国产精品亚洲片夜色在线| 91精品国产综合久久久久久豆腐| 在线观看亚洲专区| 久久久久久久久福利| 麻豆极品一区二区三区| 在线亚洲美日韩| 欧美日韩国产一区二区在线观看| 久久99亚洲热视| 免费国产羞羞网站视频| 欧美性极品xxxx做受| 精品日韩在线视频| 久久精品99久久久| 热久久最新地址| 欧美日韩看看2015永久免费 | 日韩中文字幕在线观看| 国产情侣在线播放| 亚洲成精国产精品女| 欧美bbbbb性bbbbb视频| 日韩成人av影视| 国产又粗又硬又长| 国产福利一区二区精品秒拍| 欧美亚洲免费电影| 91在线观看| 日韩欧美一级二级| 国产精品人人人人| 国产精品久久毛片| 中文字幕第九页| 日韩极品在线观看| 国产精品h视频| 国产一区二区三区不卡av| 日本精品视频在线观看| 久久精品视频观看| 精品一区二区三区四区| 中文字幕+乱码+中文| 一区二区三区在线影院| 在线视频 日韩| 麻豆精品在线观看| 69sex久久精品国产麻豆| 国内精品久久久久久久影视简单| 91精品免费视频| 台湾佬中文娱乐网欧美电影| 色噜噜国产精品视频一区二区| 亚洲国产精品一| 色噜噜夜夜夜综合网| 久久精品黄色片| 久久蜜臀精品av| 好吊操视频这里只有精品| 丝袜亚洲另类欧美综合| 成人毛片100部免费看| 国产精品片aa在线观看| 不卡一区二区三区视频| www.精品国产| 91爱爱小视频k| 亚洲按摩av| 在线看国产精品| 神马午夜电影一区二区三区在线观看| 欧美日韩免费高清一区色橹橹 | 国产精品一区二区三区免费| 成人在线免费电影网站| 欧美性视频精品| 电影k8一区二区三区久久 | 希岛爱理中文字幕| 久久无码av三级| 性活交片大全免费看| 极品少妇xxxx精品少妇偷拍| 日本熟妇人妻中出| 国产亚洲成人一区| www.九色.com| 亚洲成人精品| 亚洲国产综合自拍| 国产精品一区二区av交换| 国产精品一区免费观看| 99久久999| 国产精品旅馆在线| 另类专区亚洲| 7m第一福利500精品视频| 在线观看wwwxxxx| 日韩一区二区av| 日本中文字幕在线2020| 中文字幕不卡在线视频极品| 国产特黄在线| 亚洲一区二区精品| 免费资源在线观看| 亚洲男人的天堂在线| 亚欧洲精品视频| 日韩成人黄色av| 香蕉视频成人在线| 亚洲精品电影网站| 少妇高潮久久久| 亚洲精品成人免费| 天堂在线中文| 亚洲欧美第一页| 国产在线一二| 在线精品播放av| 免费在线看a| 成年人精品视频| 中文字幕日日夜夜| 日本高清不卡aⅴ免费网站| 欧美性猛交bbbbb精品| 狠狠久久五月精品中文字幕| 精品91久久久| 欧美性猛交xxxx偷拍洗澡| 五月婷婷中文字幕| 欧美性猛交丰臀xxxxx网站| 天天爽夜夜爽人人爽| 欧美曰成人黄网| 国产露脸91国语对白| 日韩一区二区三区在线观看| www.xxx国产| 亚洲国产精品999| 日韩av资源站| 在线电影中文日韩| 免费黄网站在线播放| 欧美大学生性色视频| а√天堂8资源中文在线| 69视频在线免费观看| 美女色狠狠久久| 51国偷自产一区二区三区的来源| 亚洲精品一区二区三区中文字幕| 国产免费一区二区三区| 亚洲免费福利一区| 亚洲日本精品一区| 亚洲网站视频| 精品免费国产一区二区| 激情六月婷婷久久| 男人网站在线观看| 国产三级一区二区三区| 卡通动漫亚洲综合| 亚洲va国产va欧美va观看| 香蕉污视频在线观看| 在线播放中文字幕一区| 蜜桃视频久久一区免费观看入口| 国产丝袜视频一区| 精品孕妇一区二区三区| 国语自产精品视频在线看一大j8| 国产成人精品一区二三区在线观看 | 啦啦啦免费高清视频在线观看| 在线观看91精品国产入口| av高清一区二区| 亚洲免费中文字幕| 日本在线视频网址| 国产精品久久久亚洲| 国产一区 二区| 免费看污久久久| 欧美韩日精品| 91日韩视频在线观看| 懂色av一区二区夜夜嗨| 亚洲无人区码一码二码三码的含义 | 亚洲国产成人一区| 日本激情视频在线观看| 欧美高清自拍一区| 日韩精品影片| 翡翠波斯猫1977年美国| 成人aaaa| 欧美在线一区视频| 国产激情视频一区二区三区欧美 | 国产精品丝袜久久久久久高清 | 亚洲女人毛片| 国产美女精品| 国产吃瓜黑料一区二区| 国产精品剧情在线亚洲| 青青草免费观看视频| 精品剧情v国产在线观看在线| 婷婷成人激情| 国产精品电影网| 亚洲制服欧美另类| 久久国产精品网| 国产一级精品在线| 亚洲av熟女国产一区二区性色| 婷婷综合五月天| www日本高清视频| 理论片在线不卡免费观看| 欧美与亚洲与日本直播| 久久综合伊人77777麻豆| 亚洲久久在线| 国产+高潮+白浆+无码| 曰韩精品一区二区| 国产伦精品一区二区三区视频痴汉 | 亚洲视频在线播放免费| 一区二区三区日韩精品视频| 91av久久久| 中文字幕欧美在线| 国产成人精品一区二三区在线观看 | 午夜激情av在线| 国产精品无遮挡| 中文字幕一区二区三区人妻四季 | 在线观看中文| av噜噜色噜噜久久| 欧美激情亚洲| 亚洲欧美激情一区二区三区| 亚洲三级小视频| 国产免费视频一区二区三区| 久久久91精品国产| 国产高清视频一区二区| 黄色网址在线免费看| 国产在线不卡一卡二卡三卡四卡| 999精品在线视频| 欧美日韩精品一区二区天天拍小说 | 欧美成人精品一区二区| 成人在线视频区| 手机看片日韩国产| 国精产品一区一区三区mba桃花 | 91久久精品日日躁夜夜躁欧美| 免费在线观看污视频| 国产91精品最新在线播放| 亚洲精品国产精品粉嫩| 国产二区视频在线播放| 久久综合视频网| 潘金莲一级淫片aaaaaa播放| 国产亚洲精品高潮| 欧美高清你懂的| 狠狠干视频网站| av电影一区二区| 亚洲毛片一区二区三区| 中文字幕免费国产精品| 激情久久免费视频| 99在线免费视频观看| www国产精品av| 成人午夜精品视频| 久久天天躁狠狠躁老女人| 亚洲午夜免费| 干日本少妇首页| 中文字幕在线不卡| 性欧美8khd高清极品| 17婷婷久久www| 久久国产成人午夜av影院宅| 日韩精品――色哟哟| 五月天一区二区三区| 波多野结衣在线网站| 97视频中文字幕| 久久精品中文| 91精品国产闺蜜国产在线闺蜜| 亚洲国产精品资源| 国产精品美女午夜爽爽| 岛国大片在线播放| 中文字幕欧美国产| 亚洲产国偷v产偷v自拍涩爱| 日韩av电影手机在线| 中文精品久久| 人妻少妇一区二区| 欧美一级专区免费大片| www.成人影院| 日本一道在线观看| 国产亚洲精品bt天堂精选| 精品人妻无码一区二区| 日韩免费黄色av| 红桃视频国产精品| 国产精品理论在线| 亚洲国产97在线精品一区| 看片一区二区| 国产偷人视频免费|