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

數據庫sharding Lookup技術探討

運維 數據庫運維 其他數據庫
數據庫sharding技術最近幾年越來越火熱。Sharding是shared-nothing的縮寫,也可稱其為horizontal partitioning/horizontal split,即數據庫切片。將一個大的數據庫切成幾個功能一樣,邏輯關系和物理上毫不相干的數據庫。

數據庫sharding有幾個主要的優點:

1. Database sharding提供了近似線性擴展的架構。可以隨著應用的增長線性的增加更多的服務器。

2. 提高了數據庫的可用性。如果只有一個數據庫,一旦down掉的話,對其所提供的service影響是100%,如果拆成10臺數據庫,那么一臺數據庫down掉的影響只有10%。

3. 小的數據庫壓力比較小,風險更小,性能更好。做過DBA的都知道,管理一臺3000 TPS的數據庫和一臺300 TPS的數據庫的壓力是完全不一樣的。

其缺點在于:

1. 首先要業務邏輯支持,并不是任何類型的數據庫都支持拆分。如果業務邏輯不支持拆成幾個不相干的數據的話,拆開后各個數據庫之間數據join會帶來額外的開銷,而且隨著數據庫的增多,開銷越來越大。

2. 更多的數據庫也帶來一些維護上的開銷,例如升級數據庫,打patch等。

3. 因為數據分散了,所以要提供機制能夠找到所需數據所在的數據庫。這也是本篇文章討論的重點,即數據的lookup技術。

下面重點討論lookup技術。數據被分散在不同的數據庫中,當應用需要查詢數據時,要能夠定位到相應的數據庫中查詢。如果沒有Lookup機制,則需要到每一個數據庫中查詢,這樣的話就不可能做到線性擴展,數據庫Sharding也就失去了其主要的優勢。

Lookup技術主要從以下幾個方面來考慮:

1. 成本

2. 效率

3. 再次拆分的難度

4. 是否支持在線拆分

我接觸到或者想到的Lookup技術有以下幾種,下面分別討論其優缺點。

1. 建立Lookup數據庫

這是很自然想到的一種方法。Lookup數據庫中記錄 (ID, Server)的對應關系。
其優點在于靈活性很高,數據可以存放在任何一個數據庫中,可以在不同的數據庫之間在線遷移數據來平衡數據庫壓力,遷移數據時同時更新Lookup數據庫中相應的記錄。

缺點也很明顯,就是需要一套Lookup數據庫來支持,有不小的額外開銷。Lookup數據庫的數據必須集中存放,不好再做水平切割。雖然其數據結構簡單,存放的數據量并不大,但是所有的應用都需要到Lookup數據庫上查找數據,其查詢的頻率很高。而且Lookup數據庫在這個方案中也成為了一個故障節點。所以不能用一臺數據庫做Lookup DB,否則前面提到的sharding數據庫可用性的優勢又失去了。我們可以用Master/Slave的方式來實現Lookup數據庫的scalability和availability。Master數據庫提供寫操作,Slave數據庫提供讀的操作。

對于oracle來說,可以采用復制軟件來實現master和slave之間的同步,例如shareplex,也可以采用oracle logical standby或者oracle active physical standby(11g)來實現。

MySQL數據庫的話,memory engine很適合做Slave服務器,因為Lookup表的數據庫不大,可以放在內存中,而且hash index很適合等式查找。Memory engine可以支持大并發量的查詢。Mater數據庫可以采用Innodb,文檔中提到在高版本的MySQL中支持不同storage engine之間的復制。實際應用中不知道有沒有公司這么使用。

2. 采用劃分區間的方式

將數據按照range來劃分。比方說以1萬為一個區間長度,ID在1~10000的在數據庫D1中,10001~20000的在數據庫D2中,20001~30000在數據庫D3中,依此類推。當分配的ID用完或者新增服務器時,繼續分配后面的ID供其使用??梢酝ㄟ^sequence來實現。
其優點在于不需要額外的開銷,應用通過簡單的映射就可以得知數據存放于哪個數據庫中,缺點在于各個數據庫之間很難實現在線的數據遷移。如果應用的增長不是因為數據量增長而增長,而是因為執行次數的增加的話,很難做到在線的壓力平衡。另外當區間內分配的ID數用完了,需要DBA手工分配新的區間。

3. 采用hash函數的方式

比方說最簡單的hash函數—mod函數。將數據進行mod(ID, 13860) (13860= 2*3*5*6*7*11),如果有十臺數據庫,每個數據庫中存放1386個mod。將mod和數據庫之間的mapping關系存放于數據庫中,應用服務器可以將其load進自己的內存中(這個表很?。?。當新增服務器時,從各個數據庫中轉移一部分mod到新的服務器上。
其優點在于不需要額外的開銷,可以通過查找應用端很小的內存鏈表就能獲知數據存放的位置,缺點在于當新增服務器后轉移數據過程中要保持數據的同步,需要同步機制。

4. 采用hash函數和Lookup數據庫相結合的方式

基本劃分的方法和第三種一樣,但是多了一套Lookup數據庫來提供miss查詢。這套Lookup數據庫解決了方法三中新增服務器數據同步的問題。新增服務器轉移數據時就不需要同步了,而是采用move的方式,這樣在舊的服務器中miss了,但可以通過Lookup數據庫來定位到新的服務器,當單個mod完全轉移了,可以更新mapping表,這樣就可以直接定位到新的服務器上。

不知道大家是如何實現Lookup機制的,有什么好的方法或想法非常歡迎大家來分享。

【編輯推薦】

  1. 如何在DB2中提高IMPORT性能
  2. 使用DB2必須了解的幾個知識點
  3. DB2下數據轉移任務操作實例
責任編輯:彭凡 來源: dbafan
相關推薦

2017-03-14 13:57:15

數據庫權限分配探討

2022-05-30 11:47:49

數據技術監測

2010-05-07 13:09:06

2023-01-12 17:18:06

數據庫多云

2015-07-10 10:25:09

2025-04-28 08:35:07

2024-12-02 12:23:25

2024-07-16 08:22:09

2011-03-24 14:24:05

2011-03-15 14:54:08

NoSQL

2019-01-16 14:20:42

2024-07-17 11:40:58

2017-06-12 18:24:25

數據庫壓縮技術

2011-05-13 13:54:02

數據庫文檔數據庫

2011-08-02 13:37:17

2022-03-02 09:13:00

分布式數據庫Sharding

2010-08-02 16:19:00

ibmdw面向對象

2011-07-27 08:56:32

Oracle數據庫綁定變量軟解析

2011-05-19 10:29:40

數據庫查詢

2011-05-18 09:39:19

Oracle數據庫性能優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美国产91 | 国产一区在线看 | 欧美日韩黄色一级片 | 国产精品久久久久久久久图文区 | 日韩a | 91麻豆精品国产91久久久更新资源速度超快 | 久久久久午夜 | 精品一区二区三区免费视频 | 国产精品一区二区在线 | 九九热在线精品视频 | 久久这里只有精品首页 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 国产精品免费在线 | 美国十次成人欧美色导视频 | 精品视频在线播放 | 91中文字幕在线观看 | 久久久久久91 | 国产精品一二三区 | 欧美福利在线 | 伊人久久精品一区二区三区 | 精品真实国产乱文在线 | 久久精品国产一区二区电影 | 亚洲国产成人精 | 亚洲午夜小视频 | 在线视频日韩精品 | 久久久精品 | 日韩精品一区二区三区视频播放 | 国产成人网 | 亚洲福利在线视频 | 日韩一区二区三区在线 | 国产一区二 | 91在线色视频 | 国产日韩一区二区 | 在线精品一区二区 | 久久精品av麻豆的观看方式 | 狠狠干网站 | 欧美日产国产成人免费图片 | 天天夜碰日日摸日日澡 | 亚洲成人免费观看 | 亚洲精品无 | 黄色免费在线观看网址 |