mysql - 使用 GenerationType.Table 时如何集群 Hibernate ORM 标识符

标签 mysql hibernate jpa orm replication

我在使用负载均衡器的亚马逊云上将 Hibernate ORM 与 MySQL 结合使用。

我现在正在切换到 GenerationType.Table,我想知道您如何进行集群 hibernate ,这样我就不会遇到 ID 在多台机器之间发生冲突的问题?

最佳答案

首先,您可以在不对数据库进行集群的情况下对中间件进行集群。这将意味着使用缓存解决方案来容纳更多流量。

当需要对数据库进行集群时,最简单的设置是主从复制,其中写入仅进入主模式。这样就不用担心PK冲突了。

对于多主复制,MySQL 提供 support for clustering the AUTO_INCREMENT主键,但对于 TABLE generator ,你可能会遇到冲突。更多,TABLE generator scales poorly compared to IDENTITY .

对于多主复制,我认为你最好使用 UUID Primary Keys , 避免 master 并发插入数据的冲突。然而,UUIDs don't mix well with the InnoDB clustered index approach .

关于mysql - 使用 GenerationType.Table 时如何集群 Hibernate ORM 标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29282666/

相关文章:

android - 我应该为不同的对象动态创建新表吗?

php - 在2个不同的wordpress站点(不同的url)之间共享相同的帖子和页面数据

java - 在使用 spring data jpa 和 rest 时防止 hibernate 在启动时生成所有查询计划

java - Hibernate Association 在映射类时引用未映射的类

java - Jackson 无限递归处理查询

MySQL - 使用连接查找最低价格

sql - 数据库扩展的最佳实践是什么?

spring - 如何在 Spring/Hibernate/JPA 中正确调用 PostgreSQL 函数(存储过程)?

java - hibernate/JPA : QueryException when hibernate generates metamodel for @ElementCollection

java - 如果 Oracle 数据库表中的列类型为 CHAR(4 BYTE),为什么我无法使用 JPA 更新长度为 3 的字符串值的行?