我们正在PostgreSQL之上构建一个Java应用程序.它非常大而且成功,它应该能够至少运行几年.
不幸的是,我们(好吧,我)在设计过程的早期阶段犯了一个严重的错误:所有的数据库ID都是整数,从一个共享序列中分发出来.
Java的max int是2 ^ 31-1,所以大约有2亿.这同样适用于PostgreSQL的整数类型.该系统目前每天消耗大约1万个ID,随着新用户的增加,这个速度正在上升.
有一天,ID将耗尽并溢出.
我们正在寻找解决问题的方法.让我们立刻明白这一点:切换到Java long和Postgres bigint是一个干净的解决方案,但这是一项大量的工作.我们需要尽可能地推迟它.
到目前为止我们已经有了一些想法:
customer, timestamp是完全有效的主键.
long/ bigint使用新序列.
在这些限制下,还有哪些其他方法会延迟ID耗尽?