加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

可可 – 核心数据vs SQLite 3

发布时间:2020-12-12 19:24:30 所属栏目:百科 来源:网络整理
导读:我已经相当熟悉关系数据库,并在过去使用 SQLite(和其他数据库)。然而, Core Data有一定的魅力,所以我正在考虑花一些时间来学习它,用于我的下一个应用程序。 使用Core Data over SQLite有很多好处,反之亦然吗?每个人的利弊是什么? 我觉得很难证明学习C
我已经相当熟悉关系数据库,并在过去使用 SQLite(和其他数据库)。然而, Core Data有一定的魅力,所以我正在考虑花一些时间来学习它,用于我的下一个应用程序。

使用Core Data over SQLite有很多好处,反之亦然吗?每个人的利弊是什么?

我觉得很难证明学习Core Data的成本是合理的,当苹果不使用它的许多旗舰应用程序,如Mail.app或iPhoto.app – 而不是选择SQLite数据库。 SQLite也广泛用于iPhone。

那些熟悉使用这两个评论的人的经验?也许,和大多数事情一样,这个问题比只使用一个更深?

虽然Core Data是Apple的 Enterprise Object Framework的后代,但是一个对象关系映射器(ORM)紧密地绑定到一个关系后端,Core Data不是一个ORM。事实上,它是一个对象图管理框架。它管理一个可能非常大的对象实例图,允许应用程序使用一个图形,它不会完全适合内存,如果有必要,通过在内存中断开对象。核心数据还管理关于属性和关系的约束以及维护引用完整性(例如,当向关系添加/移除对象时,保持向前和向后链接一致)。核心数据因此是构建MVC架构的“模型”组件的理想框架。

为了实现其图形管理,Core Data恰好使用sqlite作为磁盘存储。它可以使用不同的关系数据库或甚至非关系数据库(如CouchDB)实现。正如其他人所指出的,Core Data还可以使用XML或二进制格式或用户编写的原子格式作为后端(尽管这些选项要求整个对象图适合内存)。如果你对如何在sqlite后端实现核心数据感兴趣,你可能想检查OmniGroup的OmniDataObjects框架,一个Core Data API子集的开源实现。 BaseTen框架也是使用PostgreSQL作为后端的Core Data API的实现。

因为Core Data不打算成为sqlite的ORM,所以它不能读取任意的sqlite模式。相反,你不应该依赖于使用其他sqlite工具读取Core Data的sqlite数据存储;该模式是可能更改的实施详细信息。

因此,直接使用Core Data或sqlite之间没有任何冲突。如果您想要关系数据库,请使用sqlite(直接或通过一个Objective-C包装器,如FMDB)或关系数据库服务器。但是,您可能仍需要了解Core Data以用作对象图管理框架。结合Apple的控制器类和键值绑定兼容的视图小部件,您可以用非常少的代码实现一个完整的MVC架构。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读