核心数据(SQLite/iPhone)-设计注意事项?
我正在设计一个iPhone应用程序,使用核心数据进行数据持久化(使用本地SQLite存储)。在我深入到实现之前,我希望能就一些与核心数据相关的基本设计问题提供一些定性建议 以下是场景:核心数据(SQLite/iPhone)-设计注意事项?,iphone,iphone-sdk-3.0,core-data,Iphone,Iphone Sdk 3.0,Core Data,我正在设计一个iPhone应用程序,使用核心数据进行数据持久化(使用本地SQLite存储)。在我深入到实现之前,我希望能就一些与核心数据相关的基本设计问题提供一些定性建议 以下是场景: 该应用程序处理数十名(可能数百名)学生的数据——每个学生都有数百个单独的数据项(数字和文本) 大多数情况下,应用程序的用户(一次)将访问/修改一名学生的信息 偶尔,他们会弹出一个目录视图,其中显示了所有学生可供选择的列表 这是第一个大的设计问题: 核心数据存储 在这样的应用程序中,存储所有这些数据的最合理方法
- 该应用程序处理数十名(可能数百名)学生的数据——每个学生都有数百个单独的数据项(数字和文本)
- 大多数情况下,应用程序的用户(一次)将访问/修改一名学生的信息
- 偶尔,他们会弹出一个目录视图,其中显示了所有学生可供选择的列表
提前非常感谢 对于sqlite3 CoreData存储来说,拥有数百个项目的数百名学生通常不是问题,因此使用单个存储就可以了。您可能会想知道您想要索引哪些字段,但除此之外,一切都很好
在任何情况下,打开和关闭每个存储都要比以这种规模从单个存储中提取数据慢得多。如果您真的发现需要对数据进行切分,那么以合理的方式进行切分会复杂得多,我不会考虑如何处理它,直到您实际获得了性能数据,表明您可以这样做。不要担心用简单的方式做会浪费工作,因为与分片版本相比,这几乎没有什么效果,并且仍然允许您运行基本的应用程序,以便开始评估您的UI和测试应用程序的可用性。对于sqlite3 CoreData存储来说,数百名学生和数百个项目通常不是问题,所以使用单个存储就可以了。您可能会想知道您想要索引哪些字段,但除此之外,一切都很好
在任何情况下,打开和关闭每个存储都要比以这种规模从单个存储中提取数据慢得多。如果您真的发现需要对数据进行切分,那么以合理的方式进行切分会复杂得多,我不会考虑如何处理它,直到您实际获得了性能数据,表明您可以这样做。不要担心用这种简单的方式浪费工作,因为与分片版本相比,这几乎不算什么,而且仍然可以让基本应用程序运行,以便开始评估用户界面和测试应用程序的可用性。谢谢你,路易斯!很好的观点。这很有道理。需要明确的是:这意味着可能有上万个对象,都在同一个数据存储中?核心数据使用SQLite存储在>1e6个对象上很容易操作,只要一次在托管对象上下文中内存中没有太多实例(iPhone上的标准考虑)。是的,Barry说的。我不想说得太具体,因为如果你有大量的索引或blob,性能下降的确切点可能会发生变化,但在一般情况下,在电话上数十万到几百万就可以了。太棒了——这正是我需要的信息。非常感谢你们两位!根据你的建议,我已经开始做了