在Rails中存储大量布尔值

时间:2013-11-04 21:02:04

标签: ruby-on-rails database activerecord

我将在Rails应用程序使用的数据库中存储相当大量的布尔值 - 它需要每天在单个记录中存储60个布尔值。在Rails中执行此操作的最佳方法是什么?

我需要编程或执行的查询: * CRUD *总结每天true个值的数量 *可能(但不是非常)其他报告,例如每个字段中记录true的频率

更新:这是为了存储在上午9点到下午1点之间可能会或可能不会以5分钟间隔发生的事件。如果它发生,那么我需要将其设置为true,如果不是false。测量是手动完成的,用户将使用网站上的复选框报告这些信息。可能会有一些小的更新,但大多数情况下它只是一次性输入,然后是上面列出的查询。

更新2 :每位用户每天60个值,将有1000-2000个用户。如果没有一些库可以帮助解决这个问题,那么我将采用最简单的方法并在以后处理它,如果我遇到性能问题的话。每天用户通过检查网站上所需的复选框来报告事件,因此通常每天只有一个数据输入时刻(如果没有每天进行,则会很少)。

2 个答案:

答案 0 :(得分:0)

这取决于很多不同的事情。你需要回调才能运行吗?你需要实例化AR对象吗?这些更新的频率是多少?是经常这样做但一次不是很多或很少但一次又一堆?你能代表这些布尔作为面具吗?我们肯定需要更多的背景。

答案 1 :(得分:0)

为什么这些需要在一个记录中?你不能使用'days'表将它们绑在一起,然后在'events'表中使用day_id列吗?

在Day模型中指定它'has_many:events'并在事件模型文件中指定它'belongs_to:day'。然后你可以找到一天的所有活动,只有当天的id。

对于第三天的记录,你要这样做:

this_day = Day.find 3

然后你可以使用'this_day.events'来获取当天的所有事件。

您需要决定每天使用什么来识别,以便使用您理解的内容查询一天的事件。我上面用来找到它的id列可能不起作用。

例如,您可以使用每天的时间戳第一时间来执行此操作。或者您可以依赖表格的“created_at”列在一天的开始和结束之间

您需要确定您正在使用的时区以及如何将其存储在数据库中。

如果您的数据将存储在接近午夜的时间,夏令时也可能成为问题。我发现最好使用GMT来避免这个问题。

祝你好运。