我可以使用MongoDB替代iOS上的核心数据吗?

时间:2011-03-02 19:28:38

标签: iphone core-data mongodb couchdb native

我刚刚开始阅读MongoDB和CouchDB等NoSQL技术。我很想知道我是否可以使用MongoDB或任何NoSQL技术来替代核心数据应用程序。

核心数据应用程序可能需要很长时间才能学习和实施,特别是如果您的应用程序很复杂并且您只想进行一些简单的添加,编辑,删除和查询(CRUD内容)。

因为它看起来像JSON,看起来它可以运行得非常快;我对NoSQL over Core Data的实现很感兴趣。

我可以将MongoDB作为本机运行吗?我做了一些谷歌搜索,但实际上我无法得到我追求的具体答案。

如:

我不确定iphone在iphone平台上的优势是什么,是否支持,如果我提交一个带有NoSQL的应用程序,苹果团队会否认它吗?

由于

8 个答案:

答案 0 :(得分:20)

顺便说一下,我会注意到这是一个常见的误解,但Core Data不是一个数据库系统。

相反,它是一个运行时对象图管理系统,如果您需要,可以选择持久性作为选项。它的主要功能是提供模型 - 视图 - 控制器设计模式的模型层。因此,它不仅可以处理磁盘上的数据,还可以处理磁盘上的数据。

核心数据确实有学习曲线,但根据我的经验,许多人面临的最大障碍是将核心数据视为某种面向对象的SQL包装器。从这个角度来看,Core Data非常令人困惑,因为它似乎需要学习很多与持久性无关的知识。

使用像SQLite,MongoDB和CouchDB这样的数据库进行持久化根本不会真正加快速度,因为尽管你可能更好地了解它们如何在磁盘上和磁盘上获取数据,但它们在管理数据方面根本无济于事以及与其他数据对象和UI对象的关系。你仍然需要一个数据模型,你必须手动编写所有这些。除非您的数据模型非常简单,否则比学习核心数据需要更多时间。

学习核心数据的最佳方法是忽略对象图可以持久存在的事实。从这个角度出发,您已经拥有了很多代表您应用数据模型的对象,您必须管理它们的属性和关系。

答案 1 :(得分:4)

MongoDB可能不适合这里。服务器假定磁盘空间不是限制因素。当前的stabel brance(1.6.x)不能在单个实例上提供数据持久性。它还使用内存映射文件,这些文件在专用服务器上很好,但会在典型的PC上导致大量磁盘流失和不必要的内存使用。我对Core Data没有经验,但对我来说这听起来像是一个隔离的利基。

答案 2 :(得分:3)

MongoDB不能用作嵌入式数据库。它专为提高速度和可扩展性而设计,不太适合IOS等嵌入式操作系统的架构。但是,通过HTTP / S等标准协议与“云”中的一些MongoDB支持的服务交谈应该不是问题。您只需要在MongoDB前面编写一些Web网关。

答案 3 :(得分:2)

我知道这是一个非常古老的问题,但我认为无论如何我都会提供答案。 Couchbase有一套名为SyncPoint的软件,其中包括TouchDB,它是CouchDB的一个版本,可以在iOS上本地运行,并与任何可访问Internet的CouchDB实例同步。

答案 4 :(得分:1)

CouchDBX http://www.couchone.com/get是一个Cocoa应用程序,它将CouchDB捆绑到OSX应用程序中,如果这是您正在寻找的

答案 5 :(得分:0)

好问题。核心数据与模式和迁移相关联,因此将它与NoSQL数据库一起使用毫无意义。

我还没有尝试过任何这些,但有一些声称的解决方案:

绝对检查出来。

答案 6 :(得分:0)

为此,我推荐ObjCMongoDB。是MongoDB和BSON的库:

https://github.com/paulmelnikow/ObjCMongoDB

功能

  • 使用词典进行简单的BSON编码和解码。

  • 内置支持数组,字典,嵌入对象,字符串, 数字,日期,对象ID和各种MongoDB类型。

  • 基于NSCoder的密钥编码的更复杂的编码和解码 方案。强大的委托接口允许您实现编码和 如有必要,完全在模型类之外进行解码。

  • 自动编码和解码核心数据实体。使用 编码器的委托接口,您可以自定义默认行为,或 只需在实体类中实现替代行为。

  • 想要感受Cocoa,而不是像Mongo一样。例如,方法名称 MongoKeyedPredicate和MongoUpdateRequest在Cocoa中很自然, 虽然它们不符合基本的Mongo关键字。

答案 7 :(得分:0)

MongoDB Mobile是MongoDB数据库的较小版本,经过优化可在移动和IoT设备上运行。

MongoDB Mobile包含两个核心部分:

针对移动设备优化的MongoDB数据库版本,该版本在设备上本地运行,从而可以脱机访问数据。 用于管理底层数据库操作并提供与MongoDB Mobile和Stitch后端进行交互的方法的本机Java(Android)和Swift(iOS)SDK。

https://docs.mongodb.com/stitch/mongodb/mobile/mobile-features/