柚子快報激活碼778899分享:數(shù)據(jù)庫分庫分表中間件選擇
柚子快報激活碼778899分享:數(shù)據(jù)庫分庫分表中間件選擇
目前分庫分表的中間件有三種設計思路,分別是:
采用分散式架構,適用于用Java開發(fā)的高性能輕量級OLTP應用程序,以Sharding-JDBC為代表。采用中間層Proxy架構,提供了靜態(tài)輸入和所有語言支持,適用于OLAP應用程序和分片數(shù)據(jù)庫的管理和操作情況,以Sharding-Proxy、Mycat 為代表。Database Mesh架構,適合k8s環(huán)境,以Sharding-Sidecar為代表。
分散式架構
以Sharding-JDBC為例,Sharding-JDBC它定位為輕量級 Java框架,在 Java的 JDBC層提供的額外服務。它使用客戶端直連數(shù)據(jù)庫,以 jar 包形式提供服務,無需額外部署和依賴,可理解為增強版的 JDBC 驅動,完全兼容JDBC和各種 ORM 框架。
優(yōu)點: 1、輕量,范圍更加容易界定,只是 JDBC 增強,不包括 HA、事務以及數(shù)據(jù)庫元數(shù)據(jù)管理 2、開發(fā)的工作量較小,無需關注 nio,各個數(shù)據(jù)庫協(xié)議等 3、運維無需改動,無需關注中間件本身的 HA 4、性能高,JDBC 直連數(shù)據(jù)庫,無需二次轉發(fā) 5、可支持各種基于 JDBC 協(xié)議的數(shù)據(jù)庫,如:MySQL,Oralce,SQLServer
中間層Proxy架構
以Sharding-Proxy為例,中間層將自身定義為透明的數(shù)據(jù)庫代理,它提供了一種數(shù)據(jù)庫服務器,該服務器封裝了數(shù)據(jù)庫二進制協(xié)議以支持異構語言。對DBA友好的是,現(xiàn)在提供的MySQL版本可以使用與MySQL協(xié)議兼容的任何類型的終端(例如MySQL Command Client,MySQL Workbench等)。
優(yōu)點: 1、 對應用程序完全透明,可以直接用作MySQL 2、適用于與MySQL和PostgreSQL協(xié)議兼容的任何類型的終端 2、更有效的管理數(shù)據(jù)庫的連接 3、整合大數(shù)據(jù)思路,將 OLTP 和 OLAP 分離處理 4、夸語言支持比較好
Database Mesh架構
以Sharding-Sidecar為代表。Sharding-Sidecar(TODO)將自己定義為Kubernetes環(huán)境的云原生數(shù)據(jù)庫代理,以sidecar的形式負責對數(shù)據(jù)庫的所有訪問。它提供了一個與數(shù)據(jù)庫交互的網(wǎng)格層,我們稱之為Database Mesh。
Database Mesh強調(diào)如何將分布式數(shù)據(jù)庫訪問應用程序與數(shù)據(jù)庫連接。著重于交互,它有效地組織了雜亂的應用程序與數(shù)據(jù)庫之間的交互。使用數(shù)據(jù)庫網(wǎng)格訪問數(shù)據(jù)庫的應用程序和數(shù)據(jù)庫將形成一個大型網(wǎng)格系統(tǒng),只需將它們放在相應的正確位置即可。它們都由網(wǎng)格層控制。
混合架構
Sharding-JDBC采用分散式架構,適用于用Java開發(fā)的高性能輕量級OLTP應用程序;Sharding-Proxy提供了靜態(tài)輸入和所有語言支持,適用于OLAP應用程序和分片數(shù)據(jù)庫的管理和操作情況。
開源框架對比
–MycatSharding-JDBCSharding-ProxySharding-Sidecar官方網(wǎng)站官方網(wǎng)站官方網(wǎng)站官方網(wǎng)站官方網(wǎng)站源碼地址gitcodegitcodegitcodegitcode官方文檔Mycat 權威指南官方文檔官方文檔官方文檔開發(fā)語言JavaJavaJavaJava數(shù)據(jù)庫MySQLOracleSQL ServerPostgreSQLDB2MongoDBSequoiaDBMySQLOracleSQLServerPostgreSQL任何遵循 SQL92 標準的數(shù)據(jù)庫MySQL/PostgreSQLMySQL/PostgreSQL連接數(shù)低高低高應用語言任意Java任意任意代碼入侵無需要修改代碼無無性能損耗略高損耗低損耗略高損耗低中心化是否是否靜態(tài)入口有無有無管理控制臺Mycat-webSharding-UISharding-UISharding-UI分庫分表單庫多表/多庫單表??????多租戶方案??———讀寫分離????????分片策略定制化????????分布式主鍵????????標準化事務接口????????XA強一致事務????????柔性事務—??????配置動態(tài)化開發(fā)中??????編排治理開發(fā)中??????數(shù)據(jù)脫敏—??????可視化鏈路追蹤—??????多節(jié)點操作分頁去重排序分組聚合分頁去重排序分組聚合分頁去重排序分組聚合分頁去重排序分組聚合跨庫關聯(lián)跨庫 2 表 JoinER Join基于 caltlet 的多表 Join———IP 白名單??———SQL 黑名單??———存儲過程??———
結論
綜合目前已有資源、業(yè)務情況、前期改造投入成本和后期運營成本考慮,我建議選擇ShardingSphere,前期只采用分散架構只使用Sharding-JDBC,后期如果有需要可以部署Sharding-Proxy根據(jù)業(yè)務情況使用混合架構。
參考
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
引流
GitFlowPlus
GitFlowPlus分支管理IDEA插件
layering-cache
layering-cache 多級緩存開發(fā)框架
柚子快報激活碼778899分享:數(shù)據(jù)庫分庫分表中間件選擇
精彩內(nèi)容
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。