iphone core-data mongodb couchdb native

iphone - ¿Puedo usar MongoDB como reemplazo de CoreData en iOS?



core-data couchdb (7)

Estoy empezando a leer sobre tecnologías NoSQL como MongoDB y CouchDB. Me interesa saber si puedo usar MongoDB o cualquier tecnología NoSQL como reemplazo de las aplicaciones Core Data.

Las aplicaciones de datos principales pueden tardar mucho tiempo en aprenderse e implementarse, especialmente si su aplicación es compleja y solo desea hacer algunas modificaciones, ediciones, eliminaciones y consultas simples (material CRUD).

Porque se parece a JSON y parece que puede ejecutarse muy rápido; Estoy interesado en la implementación de NoSQL sobre Core Data.

¿Puedo ejecutar MongoDB como nativo? Hice algunas búsquedas en Google, pero no pude obtener las respuestas específicas que buscaba.

Como:

No estoy seguro de cuál es el cometido de NoSQL en las plataformas de iphone, ¿está soportado? ¿Lo rechazará el equipo de Apple si envío una aplicación con NoSQL?

Gracias


Buena pregunta. Los datos básicos están vinculados a esquemas y migraciones, por lo que no tiene sentido usarlos con una base de datos NoSQL.

No he probado ninguno de estos todavía, pero hay algunas soluciones reclamadas por ahí:

  • Mobile Couchbase parece estar muerto, pero Couchbase está trabajando en TouchDB - parece prometedor, desde un gran jugador
  • IRL Gaming parece haber hecho su propio (no código abierto) (tal vez Titanium específico)
  • Si está de acuerdo con un almacén de clave / valor, hay TSDocDB basado en Tokyo Cabinet y NuLevelDB basado en LevelDB.

Definitivamente echa un vistazo a esos.


Como nota aparte, señalaré que es una percepción errónea común, pero Core Data no es un sistema de base de datos.

En su lugar, se trata de un sistema de gestión de gráficos de objetos en tiempo de ejecución con una opción persistente si lo desea. Su función principal es proporcionar la capa de modelo del patrón de diseño Modelo-Vista-Controlador. Como tal, se trata de mucho más que simplemente ingresar y sacar datos de un disco.

Core Data tiene una curva de aprendizaje, pero en mi experiencia, el mayor obstáculo al que muchos se enfrentan es tratar a Core Data como una especie de envoltorio orientado a objetos en torno a SQL. Desde esa perspectiva, Core Data es muy confuso porque parece requerir aprender tanto que no tiene nada que ver con la persistencia.

El uso de bases de datos como SQLite, MongoDB y CouchDB para la persistencia en realidad no acelerará las cosas porque, aunque es posible que entienda mejor cómo obtienen los datos dentro y fuera del disco, no ayudarán en absoluto a administrar los datos y la relación. a los otros objetos de datos y los objetos de la interfaz de usuario. Todavía tiene que tener un modelo de datos y tendrá que codificar todo eso a mano. A menos que su modelo de datos sea extremadamente simple, tomará más tiempo que aprender Core Data.

La mejor manera de aprender Core Data es ignorar el hecho de que el gráfico de objetos puede persistir en absoluto. Simplemente comience desde la perspectiva de que tiene muchos objetos que representan el modelo de datos de su aplicación y tiene que administrar sus atributos y relaciones.


CouchDBX http://www.couchone.com/get es una aplicación Cocoa que integra CouchDB en una aplicación OSX si eso es lo que está buscando


MongoDB no está diseñado para ser utilizado como una base de datos integrada. Está diseñado para la velocidad y la escalabilidad y es poco probable que se adapte a la arquitectura de un sistema operativo integrado como IOS. Sin embargo, hablar con algún servicio respaldado por MongoDB en la "nube" a través de protocolos estándar como HTTP / S no debería ser un problema. Solo necesitas escribir una puerta de enlace web frente a MongoDB.


MongoDB probablemente no sea una buena opción aquí. El servidor asume que el espacio en disco no es un factor limitante. El strance brance actual (1.6.x) no proporciona la durabilidad de los datos en una sola instancia. También utiliza archivos de memoria asignados que están bien en servidores dedicados pero que causarán mucha pérdida de disco y un uso innecesario de la memoria en una PC típica. No tengo experiencia con Core Data, pero a mí me parece un nicho septado.


Para esto, recomiendo ObjCMongoDB. Es una biblioteca para MongoDB y BSON:

https://github.com/paulmelnikow/ObjCMongoDB

Caracteristicas

  • Codificación y decodificación BSON simple, utilizando diccionarios.

  • Soporte incorporado para arrays, diccionarios, objetos incrustados, cadenas, números, fechas, ID de objetos y los diversos tipos de MongoDB.

  • Codificación y decodificación más complejas basadas en el esquema de codificación con clave de NSCoder. Una robusta interfaz de delegado le permite implementar codificación y decodificación completamente fuera de las clases del modelo, si es necesario.

  • Automáticamente codifica y decodifica entidades Core Data. Usando la interfaz de delegado del codificador, puede personalizar el comportamiento predeterminado, o simplemente implementar un comportamiento alternativo en la clase de entidad.

  • Tiene como objetivo sentirse como el cacao, no como el mongo. Por ejemplo, los nombres de los métodos en MongoKeyedPredicate y MongoUpdateRequest son naturales en Cocoa, aunque no se ajustan a las palabras clave subyacentes de Mongo.


Sé que esta es una pregunta muy antigua, pero pensé que ofrecería una respuesta de todos modos. Couchbase tiene una suite de software llamada SyncPoint, que incluye TouchDB , que es una compilación de CouchDB creada para ejecutarse en iOS de forma nativa y se sincroniza con cualquier instancia de CouchDB accesible a través de Internet.