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

Posted

技术标签:

【中文标题】使用 GenerationType.Table 时如何集群 Hibernate ORM 标识符【英文标题】:How do I Cluster Hibernate ORM Identifiers when using GenerationType.Table 【发布时间】:2015-03-26 15:35:25 【问题描述】:

我正在使用负载均衡器在 Amazon Cloud 上将 Hibernate ORM 与 mysql 一起使用。

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

【问题讨论】:

【参考方案1】:

首先,您可以集群您的中间件,而无需集群您的数据库。这意味着使用缓存解决方案来容纳更多流量。

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

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

对于多主复制,我认为你最好使用UUID Primary Keys,以避免主同时插入数据之间的冲突。但是,UUIDs don't mix well with the InnoDB clustered index approach。

【讨论】:

以上是关于使用 GenerationType.Table 时如何集群 Hibernate ORM 标识符的主要内容,如果未能解决你的问题,请参考以下文章

模式验证:缺少表 [hibernate_sequences]

模式验证:缺少表 [hibernate_sequences]

删除父级和所有子级

如何在 Hibernate 中使用 pooled-lo 优化器

jpa,多于一个主键

参数标志,不使用时为空,不使用时为默认值