我想要一个持久的分布式计数器。我的想法是使用数据库序列。仅顺序。我不想有一个表,因为我不会填充该表。我只需要一个唯一的数字序列即可。
我不想使用朴素的select mys-seq.nextval from dual
(或org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer
),因为我想使用序列缓存功能-我不想每次需要一个新数字时都访问数据库。
我想我应该使用org.hibernate.id.enhanced.SequenceStyleGenerator
,但是我找不到在没有实体的情况下如何“独立”使用它的任何示例。
不幸的是,我发现的所有示例都描述了如何使用序列配置实体ID生成。
PS。我有Spring Boot应用程序。
答案 0 :(得分:0)
我找到了解决问题的简单方法:我可以将数据库序列中的每个数字视为要使用的数字范围。例如,如果序列返回5,则表示我的计数器的保留范围是5000-5999。
在该解决方案中,我将一次访问数据库以获取数千个数字。
最初,我以为我必须利用内部数据库级别的序列号缓存,但是使用普通的应用程序级别缓存可以达到相同的结果