資料切分概述

來源:互聯網
上載者:User
     什麼是資料切分呢,簡單來說,就是指通過某種特定的條件,將我們存放在同一個資料庫中的資料分散存放到多個資料庫(主 機)上面,以達到分散單台裝置負載的效果。      切分能夠分散單台裝置的負載,提高整體的效能。但是切分也有一些問題,引入分散式交易 , 跨節點join,跨節點排序分頁等以及 多資料來源管理。前面幾個問題是針對服務端來說的,而最後一個問題是針對用戶端來講的。這裡這些問題很容易理解,一個資料庫中的資料分到多個節點上,那麼與之對應的就是分散式交易,跨界點join,以及排序和分頁等等。而對於用戶端來講,也由單一的資料來源變成多個資料來源,在進行操作的時候也變得比較複雜。      資料的切分(Sharding)根據其切分規則的類型,可以分為兩種切分模式。 一種是按照不同的表來切分到不同的資料庫之上,這種切可以稱之為資料的垂直切分;另外一種則是 根據表中的資料的邏輯關係,將同一個表中的資料按照某種條件拆分到多台資料庫上面,這種切分稱之為資料的水平切分。具體的垂直切分和水平切分到後面具體的介紹,這裡就不多說了。      對與垂直切分來講,其實也可以分成兩種形式,一種是資料庫層級的切分,就是上面說到的,按照不同的表切分到不同的資料庫之上。還有一種也可以理解為垂直切分,表層級的垂直切分,就是把一個表的欄位,分開到多張表中。那麼這些表可以放到同一台節點上,也可以放到不同的節點上,切分的表通過指定的欄位來進行關聯。當然了,對於表層級的切分,如果在資料庫設計之初就考慮的比較完善,也就沒有必要的,說白了,其實表層級的垂直切分就是一種資料庫設計。      這裡經常會用到三個詞:分區,分區,切分。分區是資料庫支援的一種將一個物理檔案分成多個檔案的機制,是資料庫提供的功能。切分和分區可以理解為同一個東西不同的翻譯。但是準確來講,我認為它倆還是有些區別的。切分是一種思想,把同一個資料庫的資料分散到不同的資料庫或者主機上。分區呢,可以認為是切分後的結果,每個節點或者每個資料庫是一個分區。 上面提到切分就是分到不同的資料庫或者不同的主機,當然也是可以分到當前的庫中,這裡就涉及到了多租戶的概念。多租戶有三個層面,分別是
    獨立資料庫
獨立資料庫安全性最高,獨立性最好,備份恢複比驕簡單,但成本最高。
    共用資料庫,隔離資料架構
共用資料庫,隔離資料架構處於這兩者中間。
    共用資料庫,共用資料架構
共用資料庫,共用資料架構的隔離等級最低,安全性也最低,資料備份和恢複困難,當成本最低。

如何?資料的切分呢。實現的工具多種多樣,我總結三點,
     第一就是不是用任何的工具,我們通過用戶端手動的來進行資料切分的操作,這樣無疑是在重複造輪子,而且效能,穩定性都不能保證,且成本較高。
     第二是使用用戶端組件,既然剛才提到了是重複造輪子,那麼就一定有相應的組件來處理這些事情,通過組件來處理,可以降低成本,提高穩定性和安全性。比較有代表性的開源組件就屬噹噹網的 sharding-jdbc了,文檔非常詳細。
     第三是通過資料庫中介軟體來實現,這個方式最為簡單,擴充性也最好。主流的資料庫中介軟體有很多,其中比較有代表性的有阿里的amoeba,奇虎360的atlas,以及開源組織提供的MyCat等等。其各有優勢。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.