Rails - 热插拔表

时间:2012-09-27 08:23:42

标签: mysql ruby-on-rails hotswap

我每天都会从外部来源获取桌子(让我们留在学生桌上)。为了减少使用新数据截断和更新表时的停机时间,我计划保留此表的两个副本(students_1和students_2)。 这两者都需要每天交替映射到学生模型。因此,如果今天我使用来自students_1的数据,明天,一旦数据输入到学生_2,我将需要无缝切换到那个。

所以我的问题是 1)这种方法是否足够好还是有更好的方法? 2)对于热交换表,可以通过读取此特定文件的方法维护指示当前正在使用的表的文件,然后设置set_table_name吗?有更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您可以将其作为数据加载策略的一部分,我不会混淆存储表名或使用非标准表名。数据加载完成后,执行一个表重命名命令,它以原子方式完成,不应该中断你的应用程序。

RENAME TABLE students TO students_secondary_temp, students_secondary TO students, students_secondary_temp TO students_secondary;