gpt4 book ai didi

java - System.currentTimeMillis() 作为 NoSQL 数据库行中的列名(按时间排序)

转载 作者:行者123 更新时间:2023-12-02 08:22:29 25 4
gpt4 key购买 nike

我想使用长时间戳值(可能由System.currentTimeInMillis()生成)作为我的数据库中的列名称。 System.currentTimeInMillis() 方法可以保证值始终递增吗?我看到有人提示有时它变得更慢..!

我也对其他替代方案持开放态度,这些替代方案对于放置增加的列名称可能相当重要。我只是想保证唯一性(直到它们落在同一毫秒内,当我可以认为它们没问题时......)和增加序列(如果可能的话,大小也可能更小(更少的字节)!)。

编辑:我有一个 NoSQL 数据库,其中列名称(以及因此列)按升序/降序数字顺序按行排序。因此,我希望生成时间戳作为列名称,这样我就可以按时间对列进行排序。

我希望使用时间戳值作为列名称将博客文章的评论存储在单行中,以启用按时间排序。我认为即使 10 毫秒是分辨率,我也不会介意,因为有人在我的应用程序上的同一篇博文上以相同的 1/100 秒发表评论的可能性非常低。

编辑:感谢大家的意见和建议。真的很有帮助..我想我已经找到了解决 System.currentTimeInMillis() 很少失败的问题的解决方案。我可以这样实现:-

  • 当用户向帖子添加新评论时,前端会发送一个 id 'suggestedId',该 ID 比上一条评论的 id 大 1(前端会从之前的数据库中了解这一点)读)。该 id 将与使用 System.nanotime() 生成的 id 进行比较。如果 suggestedId 小于 generateId,则将使用 generateId,否则将使用 suggestedId。所以它只是意味着无论哪个更大,都使用该 Id。这保证了单调性

虽然不是真正完美,但听起来很适合实际使用!大家愿意分享一下对此的看法吗?谢谢!!!

最佳答案

其他评论者已经解决了一般数据库设计问题,但仅就这一点而言:

Can System.currentTimeInMillis() method guarantee an always increasing values ?? I have seen people complaining that sometimes it became slower.. !

为了将来的引用,这个词(总是增加的值)是单调性。不,System.currentTimeMillis() 不是单调的。它不仅可以减慢速度或加快速度(例如,如果它运行的系统正在使用 NTP 进行时间校正),而且它可以任意向上或向下更改(如果用户或脚本更改了系统时间)。

System.nanoTime() 不正式保证单调性;然而,Hotspot JVM 当且仅当底层系统支持它(现代硬件上的现代 Linux 内核当然支持)。听起来更好 - 但需要注意的是,某些处理器使用电源管理技术等,这可能会在存在多个内核的情况下搞砸。所以它更好,但仍然不完美。

关于java - System.currentTimeMillis() 作为 NoSQL 数据库行中的列名(按时间排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com