具有大型数据集的iOS核心数据性能

时间:2015-06-29 10:48:24

标签: ios objective-c core-data

我维护并开发了一个现有的Native-C iOS应用程序,该应用程序可容纳大约10万人的联系信息。我们现在想介绍一种限制这些100k记录可见性的分段策略。细分策略需要灵活,并且将由诸如当前登录的用户级别(和公司部门)以及一些标记'之类的事物驱动。过滤器(显示任何标记为' Hot Prospect'或者' Big Spender'或者#39; Likes Boats')。

所以,我正在考虑用几个标签标记所有100k联系人。这将允许我进行复合搜索,我希望任何人都叫做John'带有热门展望的标签'谁喜欢小船'。等等用户将能够自己定义和添加标签。

我的问题是:有100k个联系人,比方说,每个联系人有10个标签,我的核心数据对象图中会有1M标签记录。标签将被编入索引。我会遇到性能问题吗?运行iOS8的iPad mini上的核心数据是否会与此相悖,或者我是否可以开始设计/构建分段策略而不必担心性能(假设我编码正确)?我的标记策略听起来是否合理,每个联系人与多个标签有一个多关系?

1 个答案:

答案 0 :(得分:0)

我认为很难从一开始就估计运行时行为。这是一个经验丰富的猜测,而不是工程。唐纳德克努特是对的。

但是,搜索此类数据集的运行时行为在很大程度上取决于CD是否可以直接将谓词映射到SQL。在这种情况下,真正的工作是在SQLite中完成的,到目前为止加载的数据较少。可能会工作正常。如果CD无法将谓词映射到SQL,则必须加载数据,这将使您的应用程序变慢。

那么我会做什么:为您的用例构建一个最小的测试模式,并尝试执行您想要执行的谓词。

  • 这会起作用还是CD会拒绝该谓词?
  • 如果它接受谓词,请打开CD的详细模式并查看SQL命令(在详细模式下,CD打印出该命令)并检查它们是否合理。