我正在开发一个应用程序,它将生成唯一的随机数,然后将它们存储到数据库中。我将通过 HTTP 请求检查号码是否存在。一开始,我会使用大约 10,000 个数字。
这是正确的方法吗?
- 生成一个随机数,一个一个的存入一个数组,继续检查数组的唯一性,当数组完成后,将整个数组排序后存入数据库。
- 使用数据库并检查一个数字是否存在。
我应该使用哪个数据库,因为应用程序可以扩展到 100 万个数字。
我正在开发一个应用程序,它将生成唯一的随机数,然后将它们存储到数据库中。我将通过 HTTP 请求检查号码是否存在。一开始,我会使用大约 10,000 个数字。
这是正确的方法吗?
我应该使用哪个数据库,因为应用程序可以扩展到 100 万个数字。
它可能更有效,特别是如果您想生成 1000000 个数字,一次使它们一个,并在模型/数据库中使用验证来防止重复。
至于选择数据库,这将取决于您的预期应用程序。这里有一些信息:哪个是 Rails 应用程序的最佳数据库?
我无法评论直接从没有rails的ruby使用数据库,因为我没有这样做。对我来说,rails 的一大优点是它使创建使用数据库的应用程序变得多么容易。
几个想法:
(1..10_000)
范围的值粘贴到数据库中,然后调用该部分完成并处理查询以随机获取记录。如果我这样做,我会颠倒一些过程。我不会将“随机”值存储在数据库中,我会使用 Ruby 的内置随机数生成器,然后可能会检查数据库以查看我之前是否为该特定会话生成了该数字。总体而言,数据库中存储的值更少,因此确定唯一性的查找会更快。
这仍然是一个笨拙的编码系统,并且随着会话的“唯一”记录的增长,效率会随着时间的推移而变得低下。
要在没有数据库的情况下执行此操作,我会使用类似的东西创建随机/唯一范围:array = (1..10_000).to_a.shuffle
,然后每次我需要一个值时,我都会使用pop
从随机数组中提取最后一个值。我很想从所有会话的值池中提取,直到它用尽,然后重新生成它。此时可能会出现重复的“唯一”值,但同一数字连续出现两次的可能性很小。