title: Apache ShardingSphere
date: 2021-11-27 15:25:02
tags: 計算機
垂直切分 垂直分表垂直分庫Apache ShardingSphere是一套開源的分布式數據庫中間件。它由三個獨立且可混合使用的產品組成:Sharding-JDBC、ShardingProxy、Sharding-Sidecar。他們提供了標準化的數據分片、分布式事務、數據庫治理功能。
把單一數據庫按照業務進行專庫,專表進行劃分,減少數據庫io壓力
# 配置數據源,給多個數據源命名
spring.shardingsphere.datasource.names=m1,m2,m0
#配置第一個數據源具體內容,包含連接池,驅動,地址,用戶名和密碼
spring.shardingsphere.datasource.m1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m1.url=jdbc:mysql://localhost:3306/edu_db_1?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m1.username=root
spring.shardingsphere.datasource.m1.password=root
#配置第二個數據源具體內容,包含連接池,驅動,地址,用戶名和密碼
spring.shardingsphere.datasource.m2.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m2.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m2.url=jdbc:mysql://localhost:3306/edu_db_2?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m2.username=root
spring.shardingsphere.datasource.m2.password=root
#配置第三個數據源具體內容,包含連接池,驅動,地址,用戶名和密碼
spring.shardingsphere.datasource.m0.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m0.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m0.url=jdbc:mysql://localhost:3306/user_db?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m0.username=root
spring.shardingsphere.datasource.m0.password=root
# 配置 user_db 數據庫里面 t_user 專庫專表
spring.shardingsphere.sharding.tables.t_user.actual-data-nodes=m$->{0}.t_user
# 指定 course 表里面主鍵 cid 生成策略 SNOWFLAKE
spring.shardingsphere.sharding.tables.t_user.key-generator.column=user_id
spring.shardingsphere.sharding.tables.t_user.key-generator.type=SNOWFLAKE
# 指定表分片策略
spring.shardingsphere.sharding.tables.t_user.table-strategy.inline.shardingcolumn=user_id
spring.shardingsphere.sharding.tables.t_user.table-strategy.inline.algorithmexpression=t_user
水平切分
水平分庫分布在不同的服務器上,不便于維護
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-uuZADc6n-1669378667304)(https://llx-img.oss-cn-shanghai.aliyuncs.com/%E6%B0%B4%E5%B9%B3%E5%88%86%E5%BA%93.png)]
# 配置數據源,給多個數據源命名
spring.shardingsphere.datasource.names=m0,m1
# 配置第一個數據源
spring.shardingsphere.datasource.m0.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m0.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m0.url=jdbc:mysql://localhost:3306/edu_db_1?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m0.username=root
spring.shardingsphere.datasource.m0.password=root
#配置第二個數據源
spring.shardingsphere.datasource.m1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m1.url=jdbc:mysql://localhost:3306/edu_db_2?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m1.username=root
spring.shardingsphere.datasource.m1.password=root
#指定數據庫分布情況,數據庫里面表分布情況
# m0 m1 course_0 course_1
spring.shardingsphere.sharding.tables.course.actual-data-nodes=m$->{0..1}.course_$->{0..1}
# 指定 course 表里面主鍵 cid 生成策略 SNOWFLAKE
spring.shardingsphere.sharding.tables.course.key-generator.column=cid
spring.shardingsphere.sharding.tables.course.key-generator.type=SNOWFLAKE
# 指定表分片策略 約定 cid 值偶數添加到 course_1 表,如果 cid 是奇數添加到course_0 表
spring.shardingsphere.sharding.tables.course.table-strategy.inline.shardingcolumn=cid
spring.shardingsphere.sharding.tables.course.table-strategy.inline.algorithmexpression=course_$->{cid % 2 + 1}
# 指定數據庫分片策略 約定 user_id 是偶數添加 m1,是奇數添加 m2
#spring.shardingsphere.sharding.default-database-strategy.inline.shardingcolumn=user_id
#spring.shardingsphere.sharding.default-database-strategy.inline.algorithmexpression=m$->{user_id % 2 + 1}
spring.shardingsphere.sharding.tables.course.databasestrategy.inline..sharding-column=user_id
spring.shardingsphere.sharding.tables.course.databasestrategy.inline.algorithm-expression=m$->{user_id % 2 + 1}
# 打開sql輸出日志
spring.shardingsphere.props.sql.show=true
# 一個實體類對應兩張表,覆蓋
spring.main.allow-bean-definition-overriding=true
水平分表[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ARuhToWQ-1669378667305)(https://llx-img.oss-cn-shanghai.aliyuncs.com/%E6%B0%B4%E5%B9%B3%E5%88%86%E8%A1%A8.png)]
# 數據源命名
spring.shardingsphere.datasource.names=m1
# 配置數據源
spring.shardingsphere.datasource.m1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m1.url=jdbc:mysql://localhost:3306/edu_db_1?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m1.username=root
spring.shardingsphere.datasource.m1.password=123456
# 指定course數據分布
spring.shardingsphere.sharding.tables.course.actual-data-nodes=m1.course_$->{0..1}
# 指定course表中的cid生成規則為SNOWFLAKE
spring.shardingsphere.sharding.tables.course.key-generator.column=cid
spring.shardingsphere.sharding.tables.course.key-generator.type=SNOWFLAKE
# 指定分片策略,cid為奇數在course_1表,cid為偶數在course_0表中
spring.shardingsphere.sharding.tables.course.table-strategy.inline.shardingcolumn=cid
spring.shardingsphere.sharding.tables.course.table-strategy.inline.algorithmexpression=course_$->{cid % 2 }
# 打開sql輸出日志
spring.shardingsphere.props.sql.show=true
# 一個實體類對應兩張表,覆蓋
spring.main.allow-bean-definition-overriding=true
公共表存儲固定數據的表,表的數據很少發生變化,并且查詢時經常關聯到
每個數據庫都創建相同結構的公共表(字典表)
每次寫每個數據庫的公共表
spring.shardingsphere.sharding.broadcast-tables=t_udict
讀寫分離Sharding-JDBC通過sql語句分析,實現讀寫分離過程,不會做數據同步
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AQfOlBBJ-1669378667305)(https://llx-img.oss-cn-shanghai.aliyuncs.com/%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB%E6%A6%82%E5%BF%B5.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hNh070KL-1669378667305)(https://llx-img.oss-cn-shanghai.aliyuncs.com/%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB%E5%8E%9F%E7%90%86.png)]
應用:定義為java輕量級框架,在JDBC層提供而外的服務,它使用客戶端直連數據庫,以jar包的形式提供服務,無需額外部署,可以理解為增強版的JDBC,完全兼容JDBC和各種ORM框架。
簡化分庫分表后的操作,數據分片,讀寫分離
?
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
名稱欄目:ApacheShardingSphere-創新互聯
網頁鏈接:http://vcdvsql.cn/article36/cecppg.html
成都網站建設公司_創新互聯,為您提供ChatGPT、做網站、域名注冊、品牌網站制作、網站建設、網站內鏈
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯