日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql分表组件_利用Sharding-Jdbc组件实现分表

發布時間:2024/4/11 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql分表组件_利用Sharding-Jdbc组件实现分表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看到了當當開源的Sharding-JDBC組件,它可以在幾乎不修改代碼的情況下完成分庫分表的實現。摘抄其中一段介紹:

Sharding-JDBC直接封裝JDBC API,可以理解為增強版的JDBC驅動,舊代碼遷移成本幾乎為零:

可適用于任何基于java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。

可基于任何第三方的數據庫連接池,如:DBCP, C3P0, BoneCP, Druid等。

理論上可支持任意實現JDBC規范的數據庫。雖然目前僅支持MySQL,但已有支持Oracle,SQLServer,DB2等數據庫的計劃。

先做一個最簡單的試用,不做分庫,僅做分表。選擇數據表bead_information,首先復制成三個表:bead_information_0、bead_information_1、bead_information_2

測試實現過程

前提:已經實現srping+mybatis對單庫單表做增刪改查的項目。

1、修改pom.xml增加dependency

com.dangdang

sharding-jdbc-core

1.4.2

com.dangdang

sharding-jdbc-config-spring

1.4.0

2、新建一個sharding-jdbc.xml文件,實現分庫分表的配置

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:rdb="http://www.dangdang.com/schema/ddframe/rdb"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.dangdang.com/schema/ddframe/rdb

http://www.dangdang.com/schema/ddframe/rdb/rdb.xsd">

3、將文件引入spring配置文件中。

需要修改幾個地方,把sqlSessionFactory和transactionManager原來關聯的dataSource統一修改為shardingDataSource(這一步作用就是把數據源全部托管給sharding去管理)

4、實現分表(分庫)邏輯,我們的分表邏輯類需要實現SingleKeyTableShardingAlgorithm接口的三個方法doBetweenSharding、doEqualSharding、doInSharding

(取模除數需要按照自己需求改變,我這里分3個表,所以除以3)

import java.util.Collection;

import java.util.LinkedHashSet;

import com.dangdang.ddframe.rdb.sharding.api.ShardingValue;

import com.dangdang.ddframe.rdb.sharding.api.strategy.table.SingleKeyTableShardingAlgorithm;

import com.google.common.collect.Range;

public class MemberSingleKeyTableShardingAlgorithm implements SingleKeyTableShardingAlgorithm {

@Override

public Collection doBetweenSharding(Collection tableNames, ShardingValue shardingValue) {

Collection result = new LinkedHashSet(tableNames.size());

Range range = (Range) shardingValue.getValueRange();

for (Integer i = range.lowerEndpoint(); i <= range.upperEndpoint(); i++) {

Integer modValue = i % 3;

String modStr = modValue < 3 ? "" + modValue : modValue.toString();

for (String each : tableNames) {

if (each.endsWith(modStr)) {

result.add(each);

}

}

}

return result;

}

@Override

public String doEqualSharding(Collection tableNames, ShardingValue shardingValue) {

Integer modValue = shardingValue.getValue() % 3;

String modStr = modValue < 3 ? "" + modValue : modValue.toString();

for (String each : tableNames) {

if (each.endsWith(modStr)) {

return each;

}

}

throw new IllegalArgumentException();

}

@Override

public Collection doInSharding(Collection tableNames, ShardingValue shardingValue) {

Collection result = new LinkedHashSet(tableNames.size());

for (Integer value : shardingValue.getValues()) {

Integer modValue = value % 3;

String modStr = modValue < 3 ? "" + modValue : modValue.toString();

for (String tableName : tableNames) {

if (tableName.endsWith(modStr)) {

result.add(tableName);

}

}

}

return result;

}

}

5、配置完成,可以實現增刪改查測試。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的mysql分表组件_利用Sharding-Jdbc组件实现分表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。