【发布时间】:2011-07-27 20:36:47
【问题描述】:
我正在做一个项目,我将使用Membase(想想 Memcached + 持久性)作为我们的多节点集群的持久层。 我们正在使用Enyim 客户端与缓存通信,并且我们正在使用二进制序列化来序列化/反序列化缓存中的对象。
我们关心的一个问题是我们如何有效地管理对数据模型的更改,如果我们使用普通的 SQL 数据库,我们可以运行更新脚本来更新您的表。
使用 Membase 并处理缓存的二进制对象,我们可以抓取所有缓存的对象并加载两个二进制文件:
- 用于序列化缓存对象的代码版本
- 定义不同属性的新版本代码
并像this 这样有效地迁移数据,但是当我们可能在缓存中可能有数千万个对象时,这几乎是不可取的。理想情况下,我们希望能够仅在必要时迁移数据并且有一些我们可以运行迭代过程来将版本 1 数据迁移到版本 2,然后迁移到版本 3,依此类推,但我很难想出一种方法来处理二进制数据。
只是摸不着头脑,以前有没有人有过处理这类问题的经验?我们非常乐意使用其他形式的序列化,并且可以简单地将字符串(可能是压缩的)数据存储在缓存中并自己处理序列化。
谢谢,
【问题讨论】:
标签: c# .net serialization membase enyim