Iphone 我应该使用核心数据还是SQLite来表示带加权边的图形结构?

Iphone 我应该使用核心数据还是SQLite来表示带加权边的图形结构?,iphone,core-data,graph,Iphone,Core Data,Graph,我正在构建一个iPhone应用程序,它将使用一个加权图(大概1000个节点和500-700个关系,大概是错误的) 核心数据将是美妙的,因为它易于使用,并针对iPhone进行了优化。同时,需要对图节点进行加权。我可以在核心数据中添加一个间接层次(编辑/澄清:我会将加权边表示为关系),但我觉得这可能会阻碍性能的提高 SQLite将使我能够做到这一点,而无需任何额外的间接操作—问题变成了性能 另一个需要考虑的问题是,我使用核心数据来存储内容,然后在表中只存储sqlite中的权重,并构建自定义核心数据对

我正在构建一个iPhone应用程序,它将使用一个加权图(大概1000个节点和500-700个关系,大概是错误的)

核心数据将是美妙的,因为它易于使用,并针对iPhone进行了优化。同时,需要对图节点进行加权。我可以在核心数据中添加一个间接层次(编辑/澄清:我会将加权边表示为关系),但我觉得这可能会阻碍性能的提高

SQLite将使我能够做到这一点,而无需任何额外的间接操作—问题变成了性能

另一个需要考虑的问题是,我使用核心数据来存储内容,然后在表中只存储sqlite中的权重,并构建自定义核心数据对象,当我获取或创建sqlite时,这些对象会在sqlite中创建必要的链接,然后只使用sqlite进行计算(因为计算只需要遍历和查看权重,所以我只需要对象的最终结果/id),然后在核心数据中查找实际对象

此外,还会有一个服务器将所有用户的图形考虑到一个更大的图形中。因此,直接使用sqlite可能更容易,因为在beastly服务器上复制信息会更容易:-)


感谢您的帮助。

乍一看,核心数据非常适合您的用例,因为它是一个对象图管理框架(具有持久性)。它的延迟加载和缓存特性允许您在内存中加载部分图形,如果您有一个大型图形,这通常是需要的

核心数据似乎不支持开箱即用的加权关系(我根本不是核心数据专家)。如果“间接级别”意味着表示关系的核心数据对象,那么我同意这将对性能造成影响

出于性能和可移植性考虑,直接SQLite可能是更好的选择,因为您可以完全控制模式和索引

我投票支持你的“只在sqlite中存储权重”的想法。据我所知,这允许您利用核心数据功能,同时保持性能关键任务的效率


NetNewsWire的作者写了一篇博客文章,解释了他为什么放弃核心数据(主要是因为性能和灵活性的原因),这可能对您有所帮助

核心数据不是数据库。