1. 程式人生 > 其它 >【P2353 背單詞】題解

【P2353 背單詞】題解

Sharding-JDBC簡介:

定位為輕量級Java框架,在Java的JDBC層提供的額外服務。 它使用客戶端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全相容JDBC和各種ORM框架。

適用於任何基於Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
基於任何第三方的資料庫連線池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
支援任意實現JDBC規範的資料庫。目前支援MySQL,Oracle,SQLServer和PostgreSQL。

harding-JDBC採用無中心化架構,適用於Java開發的高效能的輕量級OLTP應用;

功能列表

  • 分庫 & 分表
  • 讀寫分離
  • 分散式主鍵

引入依賴

<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0-RC1</version>
</dependency>

規則配置

Sharding-JDBC可以通過Java,YAML,Spring名稱空間和Spring Boot Starter四種方式配置,開發者可根據場景選擇適合的配置方式。詳情請參見配置手冊。

分片演算法

通過分片演算法將資料分片,支援通過=、BETWEEN和IN分片。分片演算法需要應用方開發者自行實現,可實現的靈活度非常高。

目前提供4種分片演算法。由於分片演算法和業務實現緊密相關,因此並未提供內建分片演算法,而是通過分片策略將各種場景提煉出來,提供更高層級的抽象,並提供介面讓應用開發者自行實現分片演算法。

精確分片演算法
對應PreciseShardingAlgorithm,用於處理使用單一鍵作為分片鍵的=與IN進行分片的場景。需要配合StandardShardingStrategy使用。

範圍分片演算法
對應RangeShardingAlgorithm,用於處理使用單一鍵作為分片鍵的BETWEEN AND進行分片的場景。需要配合StandardShardingStrategy使用。


複合分片演算法
對應ComplexKeysShardingAlgorithm,用於處理使用多鍵作為分片鍵進行分片的場景,包含多個分片鍵的邏輯較複雜,需要應用開發者自行處理其中的複雜度。需要配合ComplexShardingStrategy使用。

Hint分片演算法
對應HintShardingAlgorithm,用於處理使用Hint行分片的場景。需要配合HintShardingStrategy使用。

主鍵策略

預設使用雪花演算法(snowflake)生成64bit的長整型資料。如果在請求併發小的情況下會出現所生產的主鍵都為偶數。有時候我們需要自增主鍵,就需要自定義主鍵成策略。

sharding-jdbc事務如何處理?

有兩種,一種是local,一種是XA(基於Atomikas來實現),還有一種未實現的柔性事務。其中如果不跨庫,則選擇local,否則則選擇XA。

配置中心(又叫做資料治理)如何實現?

可配置etcd或者zookeeper。用法是保持其中一個節點擁有完整的配置,其他節點基本省略配置,修改配置的話只能去第一個擁有完整配置的節點。