我刚刚开始阅读MongoDB和CouchDB等NoSQL技术。我很想知道我是否可以使用MongoDB或任何NoSQL技术来替代核心数据应用程序。
核心数据应用程序可能需要很长时间才能学习和实施,特别是如果您的应用程序很复杂并且您只想进行一些简单的添加,编辑,删除和查询(CRUD内容)。
因为它看起来像JSON,看起来它可以运行得非常快;我对NoSQL over Core Data的实现很感兴趣。
我可以将MongoDB作为本机运行吗?我做了一些谷歌搜索,但实际上我无法得到我追求的具体答案。
如:
我不确定iphone在iphone平台上的优势是什么,是否支持,如果我提交一个带有NoSQL的应用程序,苹果团队会否认它吗?
由于
答案 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/