3種數據庫表拆分的解決方案

數據庫拆分的方式有兩種,即垂直拆分和水平拆分,分庫分表是對數據庫拆分的一種解決方案。根據分庫分表方案中實施切片邏輯的層次不同,我們可以將數據庫分庫分表的實現方案分爲三大類:

  • 客戶端分片
  • 代理分片
  • 支持事務的分佈式數據庫

客戶端分片
就是使用分庫分表的數據庫的應用層直接操作分片的邏輯,分片規則需要在同一個應用的多個節點之間進行同步,每個應用層都嵌入一個操作切片的邏輯實現(分片規則),這個一般通過依賴jar包來實現。

具體的實現方案又可以分成三種:

  • 在應用層直接實現
  • 通過定製JDBC協議實現
  • 通過定製ORM框架實現

若想了解這3種實現方案的具體內涵與內容,V信掃描下面二維碼,關注後回覆“實現方式”即可~
在這裏插入圖片描述

代理分片
就是在應用層和數據庫層之間加一層代理層,把分片的路由規則配置在代理層,代理層對外提供與JDBC相兼容的接口給應用層,應用層的開發小夥伴們就不用關心分片規則了,只需要關心業務代碼的實現,等業務代碼實現完了以後,在代理層配置一個路由規則就搞定了。
優缺點:

優點:讓應用層的開發小夥伴們更多去關注業務代碼的實現,把分庫分表的配置留給代理層做。

缺點:增加了代理層,增大了成本。

儘管代理層是輕量級的轉發協議,但是畢竟要實現JDBC協議的解析,並且還有通過分片的路由規則來路由請求,對每個數據庫操作都增加一個網絡傳輸,這對新性能是很有影響的,需要維護增加的代理層,也有硬件成本,最主要的是需要有大牛在,大牛專門解決代理層出現的bug,哈哈,所以嘛,成本相對高不少。

比如:當前流行的分庫分表使用代理分片實現的框架有Cobar、Mycat等。

支持事務的分佈式數據庫
現在有很多產品,比如:OceanBase、TiDB等對外提供可伸縮的體系架構,並提供一定的分佈式事務支持,將可伸縮的特點和分佈式事務的實現包裝到分佈式數據庫內部實現,對其使用者透明,使用者不需要直接控制這些特性,例如:TiDB對外提供JDBC的接口,讓應用層想使用Mysql等傳統數據庫依賴來使用TiDB,而不需要關注其內部是如何實現伸縮、分片以及處理分佈式事務的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章