分佈式數據庫中間件概念

       從原有的一個庫,被切分爲多個分片數據庫,全部的分片數據庫集羣構成了整個完整的數據庫存儲。面對分片集羣,數據源切換,事務處理,數據聚合等,是否須要應用程序直接處理這些呢?答案確定是否認的,這就是數據庫中間件存在的緣由,把這些通通都交給中間件,應用只專一於業務就好了。數據庫

那麼應用程序怎麼訪問數據庫中間件呢?和直接訪問數據庫有什麼區別?
        一般應用程序不須要知道中間件的存在,業務開發人員只須要知道數據庫的概念,因此數據庫中間件能夠被看作是一個或多個數據庫集羣構成的邏輯庫。對應用來講,邏輯庫中讀寫數據的表就是邏輯表。邏輯表,能夠是數據切分後,分佈在一個或多個分片庫中,也能夠不作數據切分,不分片,只有一個表構成。併發

分片表:分佈式

       是指那些原有的很大數據的表,須要切分到多個數據庫的表,這樣,每一個分片都有一部分數據,全部分片構成了完整的數據。大數據

非分片表:spa

       是對應於分片表而言的,某些表示能夠不用進行切分的。 中間件

ER表:事務

        關係型數據庫是基於實體關係模型之上,經過其描述了真實世界中事物與關係,Mycat中ER表即便來源於此。根據這一思路,提出了基於ER關係的數據分片策略,子表的記錄與所關聯的父表記錄存放在同一個數據分片上,即子表依賴於父表,經過表分組(Table Group)保證數據Join不會跨庫操做。 開發

表分組(Table Group)是解決跨分片數據join的一種很好的思路,也是數據切分規則的重要一條規則。集羣

全局表:程序

        在真實業務系統中,每每存在大量的相似字典表的表,這些表基本上不多變更,字典表具備如下幾個特性:
               變更不頻繁。
               數據量整體變化不大。
               數據規模不大,不多有超過數十萬條記錄。
        對於這類表,在分片的狀況下,當業務表由於規模而進行分片之後,業務表與這些附屬的字典表之間的關聯,就成了比較棘手的問題,因此Mycat中經過冗餘來解決這類表的join,即全部的分片都有一份數據的拷貝,全部將字典表或者符合字典表的特性的一些表定義爲全局表。

數據冗餘是解決跨分片數據join的一種很好的思路,也是數據切分規劃的另一條重要規則。 

###########################

分片節點(dataNode):
        數據切分,一個大表被分到不一樣的分片數據庫上面,每一個表分片所在的數據庫就是分片節點(dataNode)。

節點主機(dataHost):
        數據切分後,每一個分片節點(dataNode)不必定都會獨佔一臺機器,同一機器上面能夠有多個分片數據庫,這樣一個或多個分片節點(dataNode)所在的機器就是節點主機(dataHost),爲了規避單節點主機併發數限制,儘可能將讀寫壓力高的分片節點(dataNode)均衡的放在不一樣的節點主機(dataHost)。

分片規則(rule):
       對於大表的數據切分,切分紅若干個分片表,須要必定的規則,這樣按照某種業務規則把數據分到某個分片的規則就是分片規則,數據切分選擇合適的分片規則很是重要,將極大的避免後續數據處理的難度。

全局序列號(sequence):        數據切分後,原有的關係數據庫中的主鍵約束在分佈式條件下將沒法使用,所以須要引入外部機制保證數據惟一性標識,這種保證全局性的數據惟一標識的機制就是全局序列號(sequence)。

相關文章
相關標籤/搜索