【发布时间】:2011-06-11 02:06:00
【问题描述】:
我正在实现一个 Twitter 应用程序,该应用程序需要缓存来自 Twitter 的用户的详细信息。将数据序列化到名为data 的列中是否明智?或者,在我的用户模型中,我应该为API request 返回的每个字段创建一个列吗?
阅读(ActiveRecord::Base) serialize。
如果我采用后一种方法,我最终会在我的用户模型中得到很多字段,如果 Twitter API 决定将来添加或删除字段,那么我们将不得不更新我们的数据库中的列分别。
但是,我可以想到这种方法的一个优点是,如果每一列都存储在 db.xml 中。我可以说,根据位置搜索所有 Twitter 用户。我还可以索引location 列以获得更快的查询。这与序列化方法相比如何?
有人会建议:“不要搜索序列化数据,就不要这样做”。
所以我想,我可以有两列:data(用于序列化数据)和location,不是吗?
但是让我们再添加一些曲折:
- 应用程序需要按注册日期对用户进行排序。不是我们的应用,而是 Twitter。
- 该应用应该能够通过 Twitter 屏幕名称或 Twitter ID 搜索用户。
- 该应用应该能够按关注者、朋友和状态计数对用户进行分类。
这是否意味着,我的数据库中需要 8 列:data、location、twitter_created_at、twitter_screen_name、twitter_id、followers_count、friends_count 和 statuses_count?在这一点上,是采用混合列类型的方法还是将每个字段单独放在自己的列中会更好吗?
您是将 API 返回的数据保存到单个列中:data,还是将每个字段保存在其各自的列中,或者两者兼而有之(如上所述)?
您的想法将不胜感激。
【问题讨论】:
-
考虑为此创建一个关联表,其中包含用户 ID、名称和值列。然后,您可以建立一对多关系来存储这些字段。将来,如果有效的字段集发生更改,您只需在此表中添加或删除与用户关联的行。
-
Jaydel,我不确定我明白你的意思。您认为您可以为此提供一个示例来更好地说明您的建议吗?
-
是的,我会把它放在一个答案中,以便我得到格式......
-
太好了,期待:-)
标签: ruby-on-rails ruby-on-rails-3 twitter