我应该使用Core Data还是SQLite来表示具有加权边的图结构?

时间:2010-08-28 02:31:17

标签: iphone core-data graph

我正在构建一个将使用加权图形的iPhone应用程序(可能大约1000个节点和500-700个关系,球场估计,可能是非常错误的)。

核心数据非常棒,因为它易于使用并且针对iPhone进行了优化。同时,图形节点需要加权。我可以在核心数据中添加一个间接级别(编辑/澄清:我将加权边缘表示为关系。),但感觉可能会破坏性能提升的点。

SQLite将使我能够在没有任何额外间接的情况下完成,问题就变成了性能。

另一个考虑因素是我使用核心数据来存储东西,然后只在表中存储sqlite中的权重并构建自定义核心数据对象,当我获取或创建时,在sqlite中创建必要的链接然后只使用sqlite计算(因为计算只会遍历并查看权重,所以除了对象的最终结果/ id之外我不需要任何其他内容)。然后我会在核心数据中查找实际对象。

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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

我投票支持你的想法“只存储sqlite中的权重”。根据我的理解,这使您可以利用Core Data功能,同时保持高效的性能关键任务。

NetNewsWire的作者撰写了一篇博客文章,解释了为什么他从核心数据转移(主要是因为性能和灵活性的原因)可能对你有所帮助。 http://inessential.com/2010/02/26/on_switching_away_from_core_data