我试图编写一个“撤消”或“回滚”类型的场景。我的一部分人认为我已经过分复杂化了,而且之前一定已经解决了。用数据库撤消
背景:我有一个产品(例如一本书),该产品有20个领域。产品具有媒体类型(PDF,硬拷贝,EPUB),每种媒体类型有多个定价(价格,地点,即欧洲,亚洲,美国)。
看着前面的问题,这个纪念图案似乎是最接近的,但我不知道如何去做多层次。
例如,变化1 - 创建产品“编码傻瓜”,它是在硬拷贝可用,适用于$ 100在欧洲和$ 75亚洲
变化2 - 改变欧洲硬拷贝价格到90美元。添加PDF,它的成本为欧洲$ 90和$ 75亚洲
变化3 - 删除硬拷贝记录
更改3是一个错误,我想回滚到更改2.
Lookingatpreviousquestions,Mementopattern似乎是最接近的,但我会重复一个可怕的很多数据。即在变更2 & 3中,您正在重复产品,媒体和定价。
我使用的数据集有近1,000,000个产品。 (上面的例子被简化了)实际上,一个产品有大约50个字段,媒体类型有大约15个字段
有没有更好的方法?
我说过数据库,因为你必须将数据存储在某个地方。我读过的很多例子都过于简化,并且说“只是像xml一样方便地将数据序列化”。在这种情况下,在xml中保存状态是不现实的 – 2010-07-20 23:05:41
数据是指数据的变化吗?如果两种模式都这样,那么存在可以在数据库中保存的“更改对象”(通过orm f。ex。)。如果磁盘空间有问题,可能需要注意删除最早的某个时间点。但除此之外,我会将其视为正常数据。 – hackbert 2010-07-20 23:25:31