记住数据集以避免冗余

时间:2016-02-20 00:12:13

标签: mysql caching memcached laravel-5.2

用户将回答随机问题(从数据库中提取),一旦他回答问题,他将不再被要求再次回答。

所以我需要一种方法来记住应用程序用户回答的问题。

我在考虑将已回答的问题与user_id一起存储在一个单独的表中,但考虑到应用程序的性质(快速“是”“否”问题),每个用户最终可能会回答数千个问题。我不确定更新和定期访问这么大的表是一个很好的解决方案。

还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

一位用户的数千个答案?真的?

如果这是真的可能,您可以将一组已回答的问题存储为Bloom filter,可以将其序列化为固定大小;请参阅PyBloom了解一个实现,可以很容易地将其用于存储过滤器状态 BLOB或VARBINARY列。

如果用户在一个会话中回答几个问题,您可能希望在内存中保留当前状态的副本,并在更改时保留它。

你不是要跟踪答案吗?为什么不能只查询用户现有的答案来选择未答复的问题?如果我这样做,我会首先尝试最简单的解决方案,只有当(如果)简单的解决方案耗尽气体时,才会寻找奇特的解决方案。