我想使用Core Data(可能使用SQLite支持)来存储大型数据库。 很多的字符串数据在众多行之间是相同的。 Core Data / SQLite是否会看到这样的冗余,并自动节省db文件中的空间?
在将数据添加到数据库之前,是否需要确保不同行中的相同文本是相同的字符串 object ?如果是这样,我如何检测新文本是否与现有数据库中 的内容匹配?
答案 0 :(得分:1)
不,Core Data不会尝试分析您的数据以避免重复。如果你想保存1000万个具有相同属性的对象,你将获得1000万份副本。
如果要避免创建重复实例,则需要在创建新实例之前对匹配实例进行提取。一般方法是
答案 1 :(得分:0)
应用层逻辑有助于以应用复杂性为代价来减少空间。
假设您的名字字段可以包含整数或字符串。 (SQLite的弱类型使这很容易)。
如果是字符串 - 这就是那里的名字。
如果是整数 - 请在名称表上查找,使用int作为键
当然,您必须在插入数据时动态创建该名称表,或者通过数据进行一次性拖网搜索,以便以这种方式代替新名称。