cocoa - Core Data/SQLite 是否压缩冗余信息?

标签 cocoa sqlite core-data

我想使用 Core Data(可能有 SQLite 支持)来存储大型数据库。许多行之间的大部分字符串数据都是相同的。 Core Data/SQLite 是否会看到这种冗余,并自动节省数据库文件中的空间?

在将其添加到数据库之前,我是否需要确保不同行中的相同文本是相同的字符串对象?如果是这样,我如何检测新的文本片段是否与现有数据库中的任何地方匹配?

最佳答案

不会,Core Data 不会尝试分析您的数据以避免重复。如果您想保存 1000 万个具有相同属性的对象,您将获得 1000 万个副本。

如果您想避免创建重复的实例,则需要在创建新实例之前提取匹配的实例。一般做法是

  1. 根据表明您的应用程序重复的任何标准,获取与新数据匹配的对象。对包含您不想重复的属性的提取使用谓词。
  2. 如果您发现任何内容,请 (a) 使用您拥有的任何新值更新您找到的实例,或者 (b) 如果没有新值,则不执行任何操作。
  3. 如果您没有找到任何内容,请创建一个新实例。

关于cocoa - Core Data/SQLite 是否压缩冗余信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20181696/

相关文章:

iphone - 在 iPhone 上保留数据对象

swift - NSGridview 的背景色

objective-c - 捕获隐藏的 NSWindow

java - 当我想在 sqlite 表中插入一个值时,当我在 editText 中添加引号时,我的应用程序不断崩溃如何解决此问题?

android - (21) 使用 NULL 预准备语句调用 API

swift - 核心数据更新不起作用

macos - 我无法在界面生成器中取消选中 "Refuses First Responder"

objective-c - CFReadStreamSetClient 回调函数 - 如何为 C 回调函数提供对包含类的引用?

c++ - 使用 sqlite 和 c++ 对数据库表进行实际排序的最佳方法?

swift - 如何获取与 coreData 中的记录相关的关系