我正在制作一个应用程序,它将生成唯一的随机数,然后将它们存储到数据库中。我将通过HTTP请求检查数字是否存在。最初,为了开始,我会使用大约10,000个数字。在我的数据库中存储随机数的正确方法是什么?
这是正确的做法吗?
- 生成一个随机数,一个接一个,将它们存储到一个数组中,并继续检查阵列的独特性,以及阵列完成时,整个数组存储数据库整理之后。
- 使用数据库并检查数字是否存在。
应该使用哪个数据库,因为应用程序最多可以扩展到100万个数字。
我正在制作一个应用程序,它将生成唯一的随机数,然后将它们存储到数据库中。我将通过HTTP请求检查数字是否存在。最初,为了开始,我会使用大约10,000个数字。在我的数据库中存储随机数的正确方法是什么?
这是正确的做法吗?
应该使用哪个数据库,因为应用程序最多可以扩展到100万个数字。
它可能更有效率,特别是如果您想要生成1000000个数字,使它们一次一个,并在模型/数据库中使用验证,防止重复。
至于选择数据库,它将取决于你想要的应用程序。这里有一些信息:Which is the Best database for Rails application?
我不能评论直接从没有导轨的ruby使用数据库,因为我没有这样做。对我来说,Rails的一大优势就是创建使用数据库的应用程序是多么容易。
一对夫妇的想法:
(1..10_000)
范围内的值粘贴到数据库中,然后调用该部分并对查询进行处理以随机抓取记录。如果我这样做,我会扭转一些过程。我不会将“随机”值存储在数据库中,我会使用Ruby的built-in random number generator,然后可能检查数据库以查看是否以前为该特定会话生成了该数字。总体而言,数据库中存储的值越少,查找以确定唯一性的速度就越快。
这仍然是一个尴尬的编码系统,随着时间的“独特”记录的增长,随着时间的推移会变得效率低下。
要做到这一点没有数据库我会创建随机/独特的范围使用类似于:array = (1..10_000).to_a.shuffle
,然后每次我需要一个值我会使用pop
从随机数组中拉最后一个值。我很想从所有会话的价值池中拉出,直到它耗尽,然后重新生成它。在这一点上可能会出现重复的“独特”值,但同一个数字连续出现两次的概率应该很小。
那么,我将如何排序数据库..以使搜索更快。 – 2013-04-27 10:10:39
将索引添加到要在 – 2013-04-27 10:16:01
上排序的列中,哪个数据库最适合这样做? – 2013-04-27 10:50:55