我正在开发一个应用程序,它将生成唯一的随机数,然后将它们存储到数据库中。我将通过HTTP请求检查是否存在数字。最初,为了入门,我会使用大约10,000个数字。
这是正确的方法吗?
我应该使用哪个数据库,因为该应用程序可以扩展到100万个数字。
答案 0 :(得分:1)
它可能更有效,特别是如果你想生成1000000个数字,一次一个,并在模型/数据库中使用验证防止重复。
关于选择数据库,它将取决于你想要的应用程序。这里有一些信息:Which is the Best database for Rails application?
我无法评论直接从没有rails的ruby使用数据库,因为我还没有这样做。对我来说,rails的一大优点是它可以轻松创建使用数据库的应用程序。
答案 1 :(得分:1)
一些想法:
(1..10_000)
范围的值粘贴到数据库中并调用该部分并处理查询以随机获取记录。如果我这样做,我会反转一些过程。我不会将“随机”值存储在数据库中,我会使用Ruby的built-in random number generator,然后检查数据库以查看我之前是否为该特定会话生成了该数字。总的来说,数据库中存储的值越少,因此查找确定唯一性的速度会更快。
这仍然是一个尴尬的代码系统,随着会话“独特”记录的增长,随着时间的推移会变得效率低下。
要在没有数据库的情况下执行此操作,我会使用以下内容创建随机/唯一范围:array = (1..10_000).to_a.shuffle
,然后每次我需要一个值时,我会使用pop
从中提取最后一个值随机数组。我很想从所有会话的价值池中拉出来,直到它耗尽,然后重新生成它。此时可能存在重复的“唯一”值,但同一数字连续两次重新出现的可能性很小。