使用 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]