当前位置: 首页 > news >正文

站长之家官网查询学校微网站模板下载

站长之家官网查询,学校微网站模板下载,现在做网络推广都有什么方式,怀柔网站制作在 Spring Boot 中集成 ShardingSphere-JDBC,可以透明地将数据分片、读写分离等功能引入到应用中,而无需大规模修改业务代码。以下是在 Spring Boot 中使用 ShardingSphere 的基本步骤和核心概念。 核心概念 在开始之前,了解几个 ShardingSph…

在 Spring Boot 中集成 ShardingSphere-JDBC,可以透明地将数据分片、读写分离等功能引入到应用中,而无需大规模修改业务代码。以下是在 Spring Boot 中使用 ShardingSphere 的基本步骤和核心概念。

核心概念

在开始之前,了解几个 ShardingSphere 的基本术语至关重要:

  • 逻辑表 (Logical Table):应用程序代码中操作的表的名称,例如 t_order
  • 真实表 (Actual Table):物理数据库中真实存在的表,例如分布在不同数据库中的 t_order_0, t_order_1
  • 分片键 (Sharding Key):用于决定数据属于哪个分片的表列,常见的如 user_id, order_id
  • 分片算法 (Sharding Algorithm):用于路由数据的逻辑,例如基于取模运算 sharding_key_value % number_of_shards

ShardingSphere-JDBC 的魅力在于它会拦截应用程序的 SQL 请求,并根据配置的规则将其路由到正确的真实数据源和真实表中执行。

基本使用步骤

1. 添加 Maven 依赖

首先,在 Spring Boot 项目的 pom.xml 文件中添加 ShardingSphere 的官方 Spring Boot Starter 依赖。

<dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId><version>5.5.0</version> <!-- 建议使用最新稳定版 -->
</dependency>
<!-- 还需要添加数据库驱动和JPA/MyBatis等依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>
2. 配置文件 (application.yml)

接下来,在 application.yml (或 application.properties) 文件中进行配置。这是集成工作的核心部分,主要包括数据源配置和分片规则配置。

以下是一个将 t_order 表水平分片到两个数据库 (ds0, ds1),每个数据库中又分为两张表 (t_order_0, t_order_1) 的示例。

spring:shardingsphere:# 开启 SQL 日志,便于调试props:sql-show: true# 1. 定义真实数据源datasource:names: ds0, ds1# 第一个数据源ds0:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://localhost:3306/ds0?useSSL=falseusername: rootpassword: your_password# 第二个数据源ds1:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://localhost:3307/ds1?useSSL=false # 注意端口或地址不同username: rootpassword: your_password# 2. 定义规则rules:# 分片规则sharding:tables:# 配置 t_order 表的规则t_order:# 数据节点:逻辑表 t_order 映射到 ds0 和 ds1 的 t_order_0 和 t_order_1 表actual-data-nodes: ds$->{0..1}.t_order_$->{0..1}# 分库策略database-strategy:standard:sharding-column: user_id # 分库键sharding-algorithm-name: database_inline # 分库算法名称# 分表策略table-strategy:standard:sharding-column: order_id # 分表键sharding-algorithm-name: table_inline # 分表算法名称# 3. 定义分片算法sharding-algorithms:# 数据库分片算法:基于 user_id 取模database_inline:type: INLINEprops:algorithm-expression: ds$->{user_id % 2}# 表分片算法:基于 order_id 取模table_inline:type: INLINEprops:algorithm-expression: t_order_$->{order_id % 2}

配置解释:

  • spring.shardingsphere.datasource.names: 声明所有真实数据源的名称。
  • spring.shardingsphere.rules.sharding.tables: 配置需要分片的表。
  • actual-data-nodes: 这是核心映射关系。ds$->{0..1}.t_order_$->{0..1} 是一种 Groovy 表达式,表示 t_order 表分布在 ds0.t_order_0, ds0.t_order_1, ds1.t_order_0, ds1.t_order_1 这四张真实表中。
  • database-strategytable-strategy: 分别定义分库和分表的策略。这里使用的是标准策略 (standard)。
  • sharding-column: 指定用于计算分片的列。
  • sharding-algorithms: 定义具体的分片算法。INLINE 是一种行内表达式算法,适用于简单的分片逻辑。
3. 创建实体类和 Repository

ShardingSphere 对业务代码是无侵入的,因此你可以像往常一样使用 JPA、MyBatis 等 ORM 框架。

实体类 (Entity):

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;@Entity
@Table(name = "t_order") // 使用逻辑表名
public class Order {@Idprivate Long orderId;private Long userId;private String description;// Getters and Setters
}

数据访问接口 (Repository):```java
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
}```

4. 在业务逻辑中使用

在你的服务层中,直接注入 OrderRepository 并使用即可。ShardingSphere 会在底层自动处理数据的路由。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class OrderService {@Autowiredprivate OrderRepository orderRepository;public void createOrders() {for (int i = 0; i < 10; i++) {Order order = new Order();order.setOrderId((long) i);order.setUserId((long) (i % 4)); // 模拟不同的用户order.setDescription("Order for user " + order.getUserId());orderRepository.save(order);}}
}

orderRepository.save(order) 被调用时:

  1. ShardingSphere-JDBC 拦截该 SQL 操作。
  2. 它会解析出 user_idorder_id 的值。
  3. 根据 application.yml 中配置的 database_inline 算法 (ds${user_id % 2}),决定数据应存入 ds0 还是 ds1
  4. 根据 table_inline 算法 (t_order_${order_id % 2}),决定数据应存入 t_order_0 还是 t_order_1
  5. 最终,SQL 被路由到正确的物理表中执行。

通过以上步骤,我们就可以在 Spring Boot 项目中成功集成并基础地使用 ShardingSphere-JDBC 实现数据分片。ShardingSphere 还支持读写分离、数据加密和分布式事务等更高级的功能,这些也可以通过类似的配置文件进行启用和设置。

http://www.dtcms.com/a/550775.html

相关文章:

  • 广州网站建设信科网络鄞州网站建设公司
  • 网站内容规范东台网站制作
  • 回溯专题:子集/全排列问题
  • 国产固态硬盘趋势下,天硕工业级SSD接口指南赋能高效部署
  • HOSVD(高阶奇异值分解):高维数据的“解剖术”
  • 用rp怎么做网站导航菜单wordpress文章插广告
  • 怎么做公司网站优化网站建成
  • 智源研究院发布悟界 Emu3.5,开启多模态世界大模型新纪元
  • RAG_向量
  • 如何做网站收录求个a站
  • 南山建网站公司公司网站建站模板模板
  • 光伏项目如何高效施工?
  • 万年历网站做移动互联网网站建设
  • ROS2使用pixi在win10中的安装
  • 没后台的网站怎么做优化专业网站优化哪家好
  • 绍兴建设网站深圳市城乡和建设局网站首页
  • 做网站月薪10万温州网页制作
  • RTNETLINK answers: File exists问题分析
  • 网站建设 前沿文章iis 网站没有上传权限
  • 怎么用服务器做局域网网站网站推广排名收费
  • 镇江久一信息技术有限公司天津seo网站排名优化公司
  • Origin绘制美观的极坐标面积图
  • 自适应网站价格农产品网站开发技术方案与设施
  • 网站程序员网站建设多少钱鞋
  • 牡丹江市建设行业协会网站屯昌第三方建站哪家好
  • 做市场调查分析的网站下载软件大全
  • 申请一个网站天河网站建设推广
  • 【深度学习3】线性回归的简洁实现
  • 招商网站建设哪家好济南中桥信息做的小语种网站怎么样
  • 可视化建网站网站关键词和描述