mysql - 移动过期元素?

标签 mysql ruby-on-rails model archiving

我有一个模型 Post,它有一个 expiry_date。我想知道什么是 在这种情况下管理可伸缩性的最佳方法。 2 个选项:

  1. 每当我想从表中选择时,我需要包括 where 到期日期 > 现在。如果表格 Post 长得像个怪物,我会在 麻烦。想象一下 3 年后或更长时间。索引也会很大。

  2. 有一个触发器、cron 作业或一个插件(如果存在的话) 绕过表并将过期项目移动到新表 Post_Archive。 这样,我只在我的主表中维护当前的帖子,这意味着 3 年后我不会像选项 1 那样糟糕。

最佳答案

如果您需要连续归档数据(您的 #2),那么 MaatKit 是一个不错的选择。

http://www.maatkit.org/

它可以以 block 的形式“蚕食”数据,而不是运行消耗大量资源的大量查询(并避免污染您的 key 缓存)。

是的,您将从 cron 运行 Maatkit 作业。

与此同时,如果您想同时执行#1,您可以实现一个 View ,它可以方便地包装“WHERE expiry_dat > NOW”条件,这样您就不必将其全部包含在代码中。

关于mysql - 移动过期元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/904237/

相关文章:

ruby-on-rails - Ruby on Rails 3 教程 : Entering commands in console issue

mysql - 在mysql插入中使用STR_TO_Date()

mysql - 无法添加外键约束错误1215 phpmyadmin

ruby-on-rails - Rails - 如何捕获指向应用程序中当前操作的 URL?

ruby-on-rails - 具有非模型输入的 Rails Simpleform

mysql - 路径枚举 mySQL 查询以创建面包屑

php - MYSQL,PHP 从数据库中选择显示损坏的图像

mysql - 如何使用Explain命令使用Python连接Mysql?

ruby-on-rails - ActiveRecord::Associations::CollectionProxy 从哪里获取.each 实例方法?

mysql - 设置此数据库模型(MySQL)的最佳方法?