需要有关版本控制/迁移数据的帮助

我正在开发一个项目,我将使用Membase(认为Memcached +持久性)作为具有多节点集群的持久层。 我们正在使用Enyim客户端与缓存进行通信,我们正在使用二进制序列化来将对象序列化/反序列化到缓存中或从缓存中反序列化。 我们关注的一个问题是如何有效地管理数据模型的更改,如果我们使用普通的SQL数据库,我们可以运行更新脚本来更新表。 使用Membase并处理缓存的二进制对象,我们可以获取所有缓存的对象并加载两个二进制文件: 用于序列化缓存对象的代码版本 定义不同属性的新版代码 并且有效地迁移这样的数据,但是当我们可能在缓存中有数千万个对象时,这是不可取的。理想情况下,我们希望能够仅在必要时迁移数据并且我们可以运行一些迭代过程将版本1数据迁移到版本2然后再迁移到3等等,但我很难想到用二进制数据执行此操作的方法。 只是在黑暗中拍摄,有没有人有过处理此类问题的经验?我们非常乐意使用其他形式的序列化,并且可以简单地将字符串(压缩的可能)数据存储在缓存中,并自己处理序列化。 谢谢,     
已邀请:
考虑修复读取范例,其中新版本的库了解如何识别V1或V2对象,根据存储对象的版本使用适当的反序列化器,但在触摸它们之后将V1对象重新序列化为V2格式。 这样就不需要批量更新所有对象,但最终会将所有对象迁移到V2格式。您可以运行后台进程来慢慢抓取V1对象并在需要时转换为V2对象,以避免最终使用V1到Vn处理读取算法修复的复杂性。     

要回复问题请先登录注册