數據庫分庫分表中間件選擇

目前分庫分表的中間件有三種設計思路,分別是:

  • 采用分散式架構,適用于用Java開發的高性能輕量級OLTP應用程序,以Sharding-JDBC為代表。
  • 采用中間層Proxy架構,提供了靜態輸入和所有語言支持,適用于OLAP應用程序和分片數據庫的管理和操作情況,以Sharding-Proxy、Mycat 為代表。
  • Database Mesh架構,適合k8s環境,以Sharding-Sidecar為代表。

分散式架構

以Sharding-JDBC為例,Sharding-JDBC它定位為輕量級 Java框架,在 Java的 JDBC層提供的額外服務。它使用客戶端直連數據庫,以 jar 包形式提供服務,無需額外部署和依賴,可理解為增強版的 JDBC 驅動,完全兼容JDBC和各種 ORM 框架。
在這里插入圖片描述

優點:
1、輕量,范圍更加容易界定,只是 JDBC 增強,不包括 HA、事務以及數據庫元數據管理
2、開發的工作量較小,無需關注 nio,各個數據庫協議等
3、運維無需改動,無需關注中間件本身的 HA
4、性能高,JDBC 直連數據庫,無需二次轉發
5、可支持各種基于 JDBC 協議的數據庫,如:MySQL,Oralce,SQLServer

中間層Proxy架構

以Sharding-Proxy為例,中間層將自身定義為透明的數據庫代理,它提供了一種數據庫服務器,該服務器封裝了數據庫二進制協議以支持異構語言。對DBA友好的是,現在提供的MySQL版本可以使用與MySQL協議兼容的任何類型的終端(例如MySQL Command Client,MySQL Workbench等)。
在這里插入圖片描述

優點:
1、 對應用程序完全透明,可以直接用作MySQL
2、適用于與MySQL和PostgreSQL協議兼容的任何類型的終端
2、更有效的管理數據庫的連接
3、整合大數據思路,將 OLTP 和 OLAP 分離處理
4、夸語言支持比較好

Database Mesh架構

以Sharding-Sidecar為代表。Sharding-Sidecar(TODO)將自己定義為Kubernetes環境的云原生數據庫代理,以sidecar的形式負責對數據庫的所有訪問。它提供了一個與數據庫交互的網格層,我們稱之為Database Mesh。

Database Mesh強調如何將分布式數據庫訪問應用程序與數據庫連接。著重于交互,它有效地組織了雜亂的應用程序與數據庫之間的交互。使用數據庫網格訪問數據庫的應用程序和數據庫將形成一個大型網格系統,只需將它們放在相應的正確位置即可。它們都由網格層控制。
在這里插入圖片描述

混合架構

Sharding-JDBC采用分散式架構,適用于用Java開發的高性能輕量級OLTP應用程序;Sharding-Proxy提供了靜態輸入和所有語言支持,適用于OLAP應用程序和分片數據庫的管理和操作情況。

在這里插入圖片描述

開源框架對比

MycatSharding-JDBCSharding-ProxySharding-Sidecar
官方網站官方網站官方網站官方網站官方網站
源碼地址gitcodegitcodegitcodegitcode
官方文檔Mycat 權威指南官方文檔官方文檔官方文檔
開發語言JavaJavaJavaJava
數據庫MySQL
Oracle
SQL Server
PostgreSQL
DB2
MongoDB
SequoiaDB
MySQL
Oracle
SQLServer
PostgreSQL
任何遵循 SQL92 標準的數據庫
MySQL/PostgreSQLMySQL/PostgreSQL
連接數
應用語言任意Java任意任意
代碼入侵需要修改代碼
性能損耗略高損耗低損耗略高損耗低
中心化
靜態入口
管理控制臺Mycat-webSharding-UISharding-UISharding-UI
分庫分表單庫多表/多庫單表??????
多租戶方案??
讀寫分離????????
分片策略定制化????????
分布式主鍵????????
標準化事務接口????????
XA強一致事務????????
柔性事務??????
配置動態化開發中??????
編排治理開發中??????
數據脫敏??????
可視化鏈路追蹤??????
多節點操作分頁
去重
排序
分組
聚合
分頁
去重
排序
分組
聚合
分頁
去重
排序
分組
聚合
分頁
去重
排序
分組
聚合
跨庫關聯跨庫 2 表 Join
ER Join
基于 caltlet 的多表 Join
IP 白名單??
SQL 黑名單??
存儲過程??

結論

綜合目前已有資源、業務情況、前期改造投入成本和后期運營成本考慮,我建議選擇ShardingSphere,前期只采用分散架構只使用Sharding-JDBC,后期如果有需要可以部署Sharding-Proxy根據業務情況使用混合架構。

參考

https://blog.csdn.net/weixin_43549578/article/details/106709343
https://shardingsphere.apache.org/document/current/cn/overview/
https://blog.csdn.net/vc33569/article/details/133178385

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711228.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711228.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711228.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MATLAB環境下基于小波和濾波器組的音頻信號處理

音頻分類研究的重點,一方面在于音頻特征的提取和選擇,通常來說數據集和特征集在分類系統中有著極為重要的作用,離開了對數據集的處理、對特征集中特征的提取和選擇,分類結果必將產生巨大誤差。對于提高音頻分類系統的分類準確度和…

vulnhub-----Hackademic靶機

文章目錄 1.C段掃描2.端口掃描3.服務掃描4.web分析5.sql注入6.目錄掃描7.寫馬php反彈shell木馬 8.反彈shell9.內核提權 1.C段掃描 kali:192.168.9.27 靶機:192.168.9.25 ┌──(root?kali)-[~] └─# arp-scan -l Interface: eth0,…

Docker容器(3)單容器管理

一、單容器 1.1概念簡介 Docker三個重要概念: 倉庫(Repository); 鏡像(Image); 容器(Container). *Docker的三個重要概念是倉庫(Repository)、鏡像(Image)和容器(Container)**。具體如下: **鏡像(Image)**:Docker鏡像是創建容器的基礎,它類似…

『NLP學習筆記』圖解Word2vec(The Illustrated Word2vec)

圖解Word2vec(The Illustrated Word2vec) 文章目錄 一. 詞嵌入(word embedding)1.1. 個性嵌入:你是什么樣的人?1.2. 詞嵌入1.3. 類比1.4. 語言模型1.5. 語言模型訓練1.6. 顧及兩頭(上下文)1.7. Skip-gram模型1.8. 重新審視訓練過程1.9. 負例采樣1.10. 基于負例采樣的Skip…

Maven面試題

以下是一些關于Maven的經典面試題以及它們的答案: 1、什么是Maven? Maven是一個項目管理工具,用于構建、管理、發布Java項目。 2、為什么要使用Maven而不是手動管理項目依賴? Maven提供了依賴管理、統一的構建、打包、文檔生…

Linux DKMS

DKMS(Dynamic Kernel Module Support)是一個框架,用于構建和安裝內核模塊。它允許第三方內核模塊在系統內核升級時自動重新構建和安裝,從而確保這些模塊與新內核版本兼容。 DKMS的工作原理是將內核模塊的源代碼和安裝腳本存儲在一…

Google索引腳本:快速索引你的網站

公眾號:【可樂前端】,每天3分鐘學習一個優秀的開源項目,分享web面試與實戰知識。 每天3分鐘開源 hi,這里是每天3分鐘開源,很高興又跟大家見面了,今天介紹的開源項目簡介如下: 倉庫名&#xff1…

園區停車管理系統的設計與實現

** 🍅點贊收藏關注 → 私信領取本源代碼、數據庫🍅 本人在Java畢業設計領域有多年的經驗,陸續會更新更多優質的Java實戰項目希望你能有所收獲,少走一些彎路。🍅關注我不迷路🍅** 一 、設計說明 1.1 選題…

【前端素材】推薦優質在線通用果蔬商城電商網頁eStore平臺模板(附源碼)

一、需求分析 1、系統定義 通用果蔬網站是指專門提供各類果蔬產品展示和銷售的在線平臺。它將不同種類的新鮮水果、蔬菜、干果、堅果等聚集在一起,為消費者提供方便、快捷的購物渠道。 2、功能需求 通用果蔬網站是指專門提供各類果蔬產品展示和銷售的在線平臺。…

Nginx常用配置--負載均衡服務

可以將 nginx 作為一個非常高效的 HTTP 負載均衡器,將流量分配到多個應用服務器上,并通過 nginx 提高 Web 應用的性能、可擴展性和可靠性。 nginx 可以通過添加一個 upstream,來實現 nginx 的負載均衡功能。 upstream myserver {server 192…

算法D27|回溯算法4| 93.復原IP地址 78.子集 90.子集II

93.復原IP地址 本期本來是很有難度的,不過 大家做完 分割回文串 之后,本題就容易很多了 題目鏈接/文章講解:代碼隨想錄 視頻講解:回溯算法如何分割字符串并判斷是合法IP?| LeetCode:93.復原IP地址_嗶哩嗶…

面試數據庫篇(mysql)- 08事務

原理 事務是一組操作的集合,它是一個不可分割的工作單位,事務會把所有的操作作為一個整體一起向系統提交或撤銷操作請求,即這些操作要么同時成功,要么同時失敗。 ACID是什么?可以詳細說一下嗎? 原子性(Atomicity):事務是不可分割的最小操作單元,要么全部成功,要么全…

添加用戶為root權限,添加到sudo分組中

在Linux系統中,將用戶添加到sudo組是一種常見的方式,使得該用戶能夠執行sudo命令,從而獲得管理員權限。以下是如何將用戶添加到sudo組的步驟: 打開終端。 使用以下命令將用戶添加到sudo組。請將username替換為你想要添加到sudo組…

Redis之一: 簡介及環境安裝搭建

什么是NoSQL? NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。 NoSQL用于超大規模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據&#xf…

USB - OTG

USB OTG (On-The-Go) Definition(定義): * USB OTG 可讓平板電腦或智能手機等設備充當主機,允許其他 USB 設備(如 USB 閃存驅動器、數碼相機、鼠標或鍵盤)連接到它們。 * 它允許設備在主機和外設之間切換角色。例如&am…

基于SSM SpringBoot vue服裝物流管理系統

基于SSM SpringBoot vue服裝物流管理系統 系統功能 首頁 圖片輪播 人個中心 登錄注冊 后臺管理: 登錄注冊 個人中心 貨物信息管理 貨物入庫管理 訂單信息管理 商品出庫管理 快遞追蹤管理 用戶管理 供應商信息管理 盤點信息管理 管理員管理 開發環境和技術 開發語言&#xf…

從入門到精通:Go 實現基于 Token 的登錄流程深度指南

文章目錄 基于 Token 的認證機制Token 的結構示例 實踐多設備登錄登出示例 Token 的安全性與最佳實踐使用 HTTPS設置合適的過期時間使用強加密算法保護 Secret Key刷新 Token監控和日志應對 Token 泄露 實際應用案例用戶登錄流程示例代碼 進階:Token 的高級應用細粒…

如何生成coredump

1、in kernel config : CONFIG_COREDUMPy 2、in android p in bionic/linker/linker_main.cpp disable signal handler(comment below code) /* #ifdef __ANDROID__ debuggerd_callbacks_t callbacks { .get_abort_message []() { return __libc_share…

github-actions

文章目錄 workflow觸發器action市場contextsecrets 默認環境變量 workflow name: {{workflow name}} run-name: {{workflow runs name}}on: {{觸發器}} #[push]env:{{定義workflow變量}}: valuejobs:{{job name}}:runs-on: {{運行機器}} #ubuntu-latestenv:{{定義job變量}}: v…

小程序開發能力

小程序開發能力 1. 獲取用戶頭像 當小程序需要讓用戶完善個人資料時,我們可以通過微信提供的頭像、昵稱填寫能力快速完善。如圖: 想使用微信提供的頭像填寫能力,需要兩步: 將 button 組件 open-type 的值設置為 chooseAvatar當…