AntDB重分布流程记录

AntDB基于PGXC开发,保留了原PGXC的重分布逻辑,本文记录了常见的重分布流程。

集群环境

coordinator节点:cd1、cd2
datanode节点:dn1、dn2、dn3


案例1

概述
重分布前 重分布后
重分布CASE 重分布SQL 分片方式 分片函数 分片字段 分片节点 分片方式 分片函数 分片字段
1、复制表重分布成复制表。2、节点减少。 alter table t to node(dn1, dn3); R × × dn1、dn2、dn3 R × ×
重分布流程
cd1 -> cd2 : SELECT pg_catalog.pg_try_advisory_xact_lock_shared(65535, 65535)
cd1 -> dn2 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn2 : TRUNCATE public.t
cd1 -> cd2 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> cd2 : alter table t to node(dn1, dn3);
cd1 -> dn2 : PREPARE TRANSACTION 'T1906'
cd1 -> cd2 : PREPARE TRANSACTION 'T1906'
cd1 -> dn2 : COMMIT PREPARED 'T1906'
cd1 -> cd2 : COMMIT PREPARED 'T1906'

案例2

概述
重分布前 重分布后
重分布CASE 重分布SQL 分片方式 分片函数 分片字段 分片节点 分片方式 分片函数 分片字段
1、复制表重分布成复制表。2、节点变化。 alter table t to node(dn1, dn2); R × × dn1、dn3 R × ×
重分布流程
cd1 -> cd2 : SELECT pg_catalog.pg_try_advisory_xact_lock_shared(65535, 65535)
cd1 -> dn1 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn1 : COPY public.t TO STDOUT
cd1 -> dn3 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn3 : TRUNCATE public.t
cd1 -> dn2 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn2 : COPY public.t FROM STDIN
cd1 -> cd2 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> cd2 : alter table t to node(dn1, dn2);
cd1 -> dn1 : PREPARE TRANSACTION 'T1907'
cd1 -> dn3 : PREPARE TRANSACTION 'T1907'
cd1 -> dn2 : PREPARE TRANSACTION 'T1907'
cd1 -> cd2 : PREPARE TRANSACTION 'T1907'
cd1 -> dn1 : COMMIT PREPARED 'T1907'
cd1 -> dn3 : COMMIT PREPARED 'T1907'
cd1 -> dn2 : COMMIT PREPARED 'T1907'
cd1 -> cd2 : COMMIT PREPARED 'T1907'

案例3

概述
重分布前 重分布后
重分布CASE 重分布SQL 分片方式 分片函数 分片字段 分片节点 分片方式 分片函数 分片字段
1、复制表重分布成复制表。2、节点数增加。 alter table t to node(dn1, dn2, dn3); R × × dn1、dn2 R × ×
重分布流程
cd1 -> cd2 : SELECT pg_catalog.pg_try_advisory_xact_lock_shared(65535, 65535)
cd1 -> dn1 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn1 : COPY public.t TO STDOUT
cd1 -> dn3 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn3 : COPY public.t FROM STDIN
cd1 -> cd2 : START TRA
Spring Boot 是一个用于简化 Spring 应用开发的框架,而 AntDB 是一个分布式数据库管理系统。将 Spring Boot 与 AntDB 结合使用,可以充分发挥两者的优势,构建高性能、高可用的应用程序。 以下是一些关键点和步骤,帮助你在 Spring Boot 项目中使用 AntDB: 1. **添加依赖**: 在 `pom.xml` 文件中添加 AntDB 的 JDBC 驱动依赖。例如: ```xml <dependency> <groupId>com.antdb</groupId> <artifactId>antdb-jdbc</artifactId> <version>1.0.0</version> </dependency> ``` 2. **配置数据源**: 在 `application.properties` 或 `application.yml` 文件中配置 AntDB 的数据源。例如: ```properties spring.datasource.url=jdbc:antdb://localhost:5432/mydb spring.datasource.username=antdbuser spring.datasource.password=antdbpass spring.datasource.driver-class-name=com.antdb.Driver ``` 3. **使用 JPA**: 如果你使用 JPA 进行数据库操作,可以在 `application.properties` 中配置 JPA: ```properties spring.jpa.database-platform=org.hibernate.dialect.AntDBDialect spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update ``` 4. **编写实体类**: 创建一个实体类来映射数据库表。例如: ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // Getters and Setters } ``` 5. **编写 Repository 接口**: 创建一个 Repository 接口来执行数据库操作。例如: ```java public interface UserRepository extends JpaRepository<User, Long> { List<User> findByName(String name); } ``` 6. **编写 Service 和 Controller**: 编写 Service 和 Controller 来处理业务逻辑和 HTTP 请求。例如: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> getUsersByName(String name) { return userRepository.findByName(name); } public User createUser(User user) { return userRepository.save(user); } } @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping public List<User> getUsers(@RequestParam String name) { return userService.getUsersByName(name); } @PostMapping public User createUser(@RequestBody User user) { return userService.createUser(user); } } ``` 通过以上步骤,你可以在 Spring Boot 项目中成功集成 AntDB,并利用其强大的分布式数据库功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值