Java 使用自定义id值
我有一个用户数据库,所有用户都有一个唯一的ID(Java UUID),以区分他们,因为其他数据(firstname、IP和lastname)可能包含重复项。将_id设置为唯一id是否是一个好主意,因为这样可以避免创建和索引另一个字段以及使用无用的_id字段。这是一个有争议的话题,具体细节取决于数据库引擎。我将更笼统地说,假设数据库引擎可能在以后某个时间点发生更改。为了帮助您做出决定,以下是使用UUID作为行ID的一些优点和缺点: 优点:Java 使用自定义id值,java,mongodb,Java,Mongodb,我有一个用户数据库,所有用户都有一个唯一的ID(Java UUID),以区分他们,因为其他数据(firstname、IP和lastname)可能包含重复项。将_id设置为唯一id是否是一个好主意,因为这样可以避免创建和索引另一个字段以及使用无用的_id字段。这是一个有争议的话题,具体细节取决于数据库引擎。我将更笼统地说,假设数据库引擎可能在以后某个时间点发生更改。为了帮助您做出决定,以下是使用UUID作为行ID的一些优点和缺点: 优点: 在数据不同但性质相似的表中是唯一的 使从一个数据库引擎到
- 在数据不同但性质相似的表中是唯一的
- 使从一个数据库引擎到另一个数据库引擎的移动非常直接,因为行的ID并不完全依赖于插入时间
- 不允许优雅的聚集索引,因为UUID不是连续的。这意味着在执行插入操作时,数据库必须重新排列大量内存页以保持顺序(某些数据库引擎(如SQL Server)会创建一个“uniquifier”字段来解决此问题,但最终的成本与使用int作为主键相同)
- 使在应用程序或日志文件中调试变得更加困难,因为int字段比UUID更容易比较/查看
- 与int相比,表的连接速度较慢,对于大多数数据库实现都是如此
我个人的建议是使用一个int作为你的ID。你的连接将比表更快,并且总体上更容易调试。当然,您仍然可以将UUID设置为外键,但随着解决方案的扩展,易于查看的小值将派上用场。您的问题是什么?@atishhimpi“将_id设置为唯一id是否是一个好主意,因为这样可以避免我创建和索引另一个字段以及创建一个无用的_id字段。”这在MongoDB中完全没有问题。