<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
ShardingSphere是一套開源的分散式資料庫中介軟體解決方案組成的生態圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(計劃中)這3款相互獨立的產品組成。他們均提供標準化的資料分片、分散式事務和資料庫治理功能。
定位為輕量級Java框架,在Java的JDBC層提供的額外服務。 它使用使用者端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全相容JDBC和各種ORM框架。
1)適用於任何基於Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
2)基於任何第三方的資料庫連線池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
3)支援任意實現JDBC規範的資料庫。目前支援MySQL,Oracle,SQLServer和PostgreSQL。
1)邏輯表-LogicTable
資料分片的邏輯表,對於水平拆分的資料庫(表),同一類表的總稱。例:訂單資料根據主鍵尾數拆分為10張表,分別是t_order_0到t_order_9,他們的邏輯表名為t_order。
2)實際表-ActualTable
在分片的資料庫中真實存在的物理表。即上個範例中的t_order_0到t_order_9。
3)資料節點-DataNode
資料分片的最小單元。由資料來源名稱和資料表組成,例:ds_1.t_order_0。設定時預設各個分片資料庫的表結構均相同,直接設定邏輯表和真實表對應關係即可。如果各資料庫的表結果不同,可使用ds.actual_table設定。
4)動態表-DynamicTable
邏輯表和真實表不一定需要在設定規則中靜態設定。比如按照日期分片的場景,真實表的名稱隨著時間的推移會產生變化。此類需求Sharding-JDBC是支援的,不過目前設定並不友好,會在新版本中提升。
5)繫結表-BindingTable
指在任何場景下分片規則均一致的主表和子表。例:訂單表和訂單項表,均按照訂單ID分片,則此兩張表互為BindingTable關係。BindingTable關係的多表關聯查詢不會出現笛卡爾積關聯,關聯查詢效率將大大提升。
6)分片鍵-ShardingColumn
分片欄位。用於將資料庫(表)水平拆分的關鍵欄位。例:訂單表訂單ID分片尾數取模分片,則訂單ID為分片欄位。SQL中如果無分片欄位,將執行全路由,效能較差。Sharding-JDBC支援多分片欄位。
7)分片演演算法-ShardingAlgorithm
分片演演算法。Sharding-JDBC通過分片演演算法將資料分片,支援通過等號、BETWEEN和IN分片。分片演演算法目前需要業務方開發者自行實現,可實現的靈活度非常高。未來Sharding-JDBC也將會實現常用分片演演算法,如range,hash和tag等。
8)SQL Hint
對於分片欄位非SQL決定,而由其他外接條件決定的場景,可使用SQL Hint靈活的注入分片欄位。例:內部系統,按照員工登入ID分庫,而資料庫中並無此欄位。SQL Hint支援通過ThreadLocal和SQL註釋(待實現)兩種方式使用。
9)廣播表broadcastTable
所有的分⽚資料來源中都存在的表,表結構和表中的資料在每個資料庫中均完全⼀致,例如:資料字典表,公共設定表。
10)分散式主鍵生成策略
Sharding-JDBC 內部支援UUID和Snowflake生成分散式主鍵。
ShardingSphere-JDBC在分片策略上分別引入了分片演演算法、分片策略兩個概念,當然在分片的過程中分片鍵也是一個核心的概念;在此可以簡單的理解分片策略 = 分片演演算法 + 分片鍵
提供了抽象分片演演算法類:ShardingAlgorithm
,根據型別又分為:精確分片演演算法、區間分片演演算法、複合分片演演算法以及Hint分片演演算法;
PreciseShardingAlgorithm
類,主要用於處理 =
和 IN
的分片;public class PreciseDBShardingAlgorithm implements PreciseShardingAlgorithm<Long> { @Override public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Long> shardingValue) { //todo } }
RangeShardingAlgorithm
類,主要用於處理 BETWEEN AND
, >
, <
, >=
, <=
分片;public class RangeShardingDBAlgorithm implements RangeShardingAlgorithm<Long> { @Override public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Long> shardingValue) { //todo } }
ComplexKeysShardingAlgorithm
類,用於處理使用多鍵作為分片鍵進行分片的場景;public class ComplexKeysShardingDBAlgorithm implements ComplexKeysShardingAlgorithm<Long> { @Override public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Long> shardingValue) { //todo } }
HintShardingAlgorithm
類,用於處理使用 Hint
行分片的場景;public class HintShardingDBAlgorithm implements HintShardingAlgorithm<Long> { @Override public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Long> shardingValue) { //todo } }
以上所有的演演算法類都是介面類,具體實現交給開發者自己。
分片策略基本和上面的分片演演算法對應,包括:標準分片策略、複合分片策略、Hint分片策略、內聯分片策略、不分片策略;
StandardShardingStrategy
類,提供PreciseShardingAlgorithm
和RangeShardingAlgorithm
兩個分片演演算法,PreciseShardingAlgorithm
是必須的,RangeShardingAlgorithm
可選的;public final class StandardShardingStrategy implements ShardingStrategy { private final String shardingColumn; private final PreciseShardingAlgorithm preciseShardingAlgorithm; private final RangeShardingAlgorithm rangeShardingAlgorithm; }
ComplexShardingStrategy
類,提供ComplexKeysShardingAlgorithm
分片演演算法;可以發現支援多個分片鍵;public final class ComplexShardingStrategy implements ShardingStrategy { @Getter private final Collection<String> shardingColumns; private final ComplexKeysShardingAlgorithm shardingAlgorithm; }
HintShardingStrategy
類,通過 Hint 指定分片值而非從 SQL 中提取分片值的方式進行分片的策略;提供HintShardingAlgorithm
分片演演算法;public final class HintShardingStrategy implements ShardingStrategy { @Getter private final Collection<String> shardingColumns; private final HintShardingAlgorithm shardingAlgorithm; }
InlineShardingStrategy
類,沒有提供分片演演算法,路由規則通過表示式來實現;NoneShardingStrategy
類,不分片策略;在使用中我們並沒有直接使用上面的分片策略類,ShardingSphere-JDBC分別提供了對應策略的設定類包括:
StandardShardingStrategyConfiguration
ComplexShardingStrategyConfiguration
HintShardingStrategyConfiguration
InlineShardingStrategyConfiguration
NoneShardingStrategyConfiguration
以上就是ShardingSphere jdbc實現分庫分表核心概念詳解的詳細內容,更多關於ShardingSphere jdbc分庫分表的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45