—— 然后是:超高并发生成?超高并发查询?ID是否需要存在语义?等问题。
◎ 不同的ID对我来说有啥区别?
—— UUID:极其适用于分布式计算环境(超越集群了),但ID将不能承载任何语义,高并发生成支持较好,超高并发查询存在数据库端不易优化的问题。
—— 数据库端seq:适用于集群环境,ID可承载某些语义(比如生成时间上较大范围的先后顺序),超高并发生成较搓,超高并发查询可做特定分区优化。
◎ 最终呢?
—— 最终基本上都选择UUID或其变体,因为有时候我还是需要ID承载少量语义的,比如我可能会关心这个UUID究竟是哪个终端生成的,你可能会说:可以换个字段保存啊?这类问题就智者见智仁者见仁了。