提问者:小点点

用全数据库进行数据库归档


我有关系数据库MySQL。 要求是将要从活动数据库中完全删除的少数表的记录及其相关记录归档,并将其归档以便以后在需要时访问。 web应用程序构建在Rails上。

有没有一种方法,在原始数据库上的任何插入或更新都反映到归档数据库,而在原始数据库上的删除不更新到归档数据库。

这样,存档的数据库具有活动和存档的完整数据。 而原始数据库只有可实时访问的数据。

或者有没有什么不同的,高效的解决方案。 这是因为,如果我们采用暴力方法,只要数据移动到归档数据库中,就需要识别所有记录及其相关记录,并将其移动到归档数据库中,然后删除原始数据库中的相应记录。

在Rails框架中,当dependent::Destroy配置正确时,删除相关记录和依赖记录相对容易。


共1个答案

匿名用户

有没有一种方法,在原始数据库上的任何插入或更新都反映到归档数据库,而在原始数据库上的删除不更新到归档数据库。

反例“i”

插入和更新会被反映,删除则不会。 但是邪恶的同事可能只是在删除记录之前用虚拟内容替换任何内容,因此只保留记录之间的关系,而其他所有内容都将消失。 这可能会使“no-delete镜像方法”毫无用处(除了您可以从链接图本身扣除有价值的信息之外)。

如果归档数据库也具有原始数据库的所有技术属性,这就是反例“II”:

设想一个为某些列定义了唯一组的表:UNIQUE(Name,Surname,Birthplace,Birthdate)

现在有人删除无名氏,伦敦,2000-01-01。 但是,影子表将保留此记录。

一周后,你注意到这是某个同事犯的错误。 您希望重新创建Jane,但由于她的数据仍然存在于影子表中,这将被拒绝,事务将不会提交。