0

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

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

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

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

4

2 回答 2

0

这取决于很多不同的事情。你需要回调来运行吗?您需要实例化 AR 对象吗?这些更新的频率是多少?它是经常做但一次不多还是很少但一次做一堆?您能否将这些布尔值表示为掩码?我们肯定需要更多的上下文。

于 2013-11-05T05:31:04.827 回答
0

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

在 Day 模型中指定它“has_many :events”并在 Event 模型文件中指定它“belongs_to :day”。然后,您可以仅使用当天的 id 找到当天的所有事件。

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

this_day = Day.find 3

然后您可以使用“this_day.events”获取当天的所有事件。

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

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

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

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

祝你好运。

于 2013-11-06T00:05:28.490 回答