将数据保存在两个持久存储中

Posted

技术标签:

【中文标题】将数据保存在两个持久存储中【英文标题】:Save data in two persistent stores 【发布时间】:2014-08-17 19:03:57 【问题描述】:

我有一个应用程序,其中有一个执行网络请求的搜索功能。但是使用与整个应用程序相同的模型框架。

这意味着当用户搜索我需要的东西时,我需要从找到的数据中创建托管对象,保存并显示它们。但是,这会将旧记录与用户最近的数据混淆。

理想情况下,我希望将在搜索中找到的托管对象保存在单独的内存持久存储中,这样它就不会在主数据中造成混乱。

我以前没有做过这样的事情,那么最好的方法是什么?

谢谢!

【问题讨论】:

如果您只希望它在内存中但可选择保存,您可以将搜索结果作为子 context 的一部分。并让 GUI 与子上下文交互,并可选择保存或丢弃子上下文中的数据。从您写的内容来看,您实际上并不想要搜索结果的持久存储 - 如果应用程序被终止或退出,它们不需要保留 - 如果是这样,请澄清。 Good article on multi-context here。一个经典的用法是有一个取消按钮来丢弃整个子商店的表单。 【参考方案1】:

正如@stevesliva 所建议的那样,您不需要让自己参与维护多个部分内存存储的复杂性。这里的方法是创建一个子上下文并将在线数据提取到这个上下文中。一旦您不再需要数据,只需丢弃上下文。

如果您决定保存下载的数据,您只需通过save: 将更改“推送”到主上下文。此时,您可以对数据进行必要的调整,使其适合用户数据。根据您的模型,一种可行的解决方案可能是在其中一个实体上创建另一个属性,将链接对象标记为与用户创建的对象不同。

【讨论】:

以上是关于将数据保存在两个持久存储中的主要内容,如果未能解决你的问题,请参考以下文章

读完这篇,让你真正理解Redis持久化

读完这篇,让你真正理解Redis持久化

将对象从多个存储保存到单个持久存储

Redis持久化机制

第6章 数据存储全方案,详解持久化技术

Redis 的持久化