Saturday 28 October 2017

Core Data Sqlite Vs Binary Options


Ya estoy bastante familiarizado con las bases de datos relacionales y he utilizado SQLite (y otras bases de datos) en el pasado. Sin embargo, Core Data tiene un cierto atractivo, por lo que estoy considerando pasar algún tiempo para aprenderlo para su uso en mi próxima aplicación. ¿Cuáles son los pros / contras de cada uno? Me resulta difícil justificar el costo del aprendizaje de Core Data cuando Apple no lo usa para muchas de sus aplicaciones emblemáticas como Mail. app o IPhoto. app - en lugar de optar por bases de datos SQLite. SQLite también se utiliza ampliamente en el iPhone. Tal vez, como con la mayoría de las cosas, la pregunta es más profunda que simplemente usar uno sobre el otro preguntó Feb 7 09 a las 9:05 cerrado como no constructivo por casperOne Feb 23 12 at 23:25 As En la actualidad, esta pregunta no es un buen ajuste para nuestro formato QampA. Esperamos que las respuestas sean respaldadas por hechos, referencias o experiencia, pero esta pregunta probablemente solicitará debates, argumentos, encuestas o discusión ampliada. Si cree que esta pregunta se puede mejorar y posiblemente volver a abrir, visite el centro de ayuda para obtener orientación. Si esta pregunta puede ser reformulada para que se ajuste a las reglas del centro de ayuda. Por favor, edite la pregunta. ¿Podría agregar un enlace a en. wikipedia. org/wiki/CoreData para todo el mundo sin saber lo que es. Ndash RSabet Feb 7 09 at 9:26 Tenga en cuenta que Core Data no es y no debe ser utilizado como una base de datos ndash user142019 Aug 6 11 at 12:10 4 Respuestas Aunque Core Data es un descendiente de Apples Enterprise Object Framework. Un mapeador relacional de objetos (ORM) que estaba estrechamente vinculado a un backend relacional, Core Data no es un ORM. Es, de hecho, un marco de gestión de gráfico de objetos. Gestiona un gráfico potencialmente muy grande de instancias de objetos, permitiendo que una aplicación trabaje con un gráfico que no encajaría totalmente en la memoria al fallar objetos dentro y fuera de la memoria según sea necesario. Core Data también gestiona las restricciones sobre las propiedades y las relaciones y mantiene la integridad de las referencias (por ejemplo, mantener vínculos hacia adelante y hacia atrás consistentes cuando se agregan o quitan objetos de una relación). Core Data es por lo tanto un marco ideal para construir el componente de modelo de una arquitectura MVC. Para implementar su gestión de gráficos, Core Data pasa a usar sqlite como almacén de discos. Podría haber sido implementado utilizando una base de datos relacional diferente o incluso una base de datos no relacional como CouchDB. Como otros han señalado, Core Data también puede usar XML o un formato binario o un formato atómico escrito por el usuario como backend (aunque estas opciones requieren que todo el grafo del objeto encaje en la memoria). Si está interesado en cómo Core Data se implementa en un backend de sqlite, puede que desee comprobar OmniGroups OmniDataObjects framework, una implementación de código abierto de un subconjunto de la API de datos de núcleo. El framework BaseTen también es una implementación de la API de datos de núcleo utilizando PostgreSQL como backend. Dado que Core Data no está destinado a ser un ORM para sqlite, no puede leer el esquema arbitrario de sqlite. A la inversa, no debe confiar en poder leer los almacenes de datos sqlite de Core Data con otras herramientas sqlite, el esquema es un detalle de implementación que puede cambiar. Por lo tanto, no hay realmente ningún conflicto entre el uso de Core Data o sqlite directamente. Si desea una base de datos relacional, utilice sqlite (directamente oa través de uno de los contenedores Objective-C como FMDB) o un servidor de base de datos relacional. Sin embargo, es posible que todavía desee aprender Core Data para su uso como un marco de administración de gráfico de objetos. En combinación con las clases de controlador Apples y los widgets de vista compatibles con el valor clave, puede implementar una arquitectura MVC completa con muy poco código. Respondió 07/02 09 at 18:27 Nota fmdb no es un ORM, sólo un envoltorio objc alrededor de sqlite3 C api ndash robottobor Feb 7 09 at 20:57 Gracias por la captura I39ll actualizar el mensaje. Ndash Barry Wark Feb 7 09 at 21:27 Gran respuesta - gracias mucho ndash Alex Rozanski Aug 18 09 at 17:32 Con iOS 5.0 obtendrás la ventaja añadida de poder usar iCloud de sincronización de archivos de forma gratuita si usas Core Data . Si usted está usando SQLite directamente it39ll tiene que ser un montón de maniobra manual e implementación para conseguir que se sincronice a través de iCloud. Ndash extraño Aug 21 11 at 10:26 Y con iOS 5.0 obtendrá la ventaja añadida de poder utilizar iCloud de sincronización de archivos de forma gratuita si está utilizando Core Data. Si está utilizando SQLite directamente itll tiene que ser un montón de maniobra manual y la aplicación para conseguir que la sincronización a través de iCloud. if los archivos de blob de un sqlite se serializan, eso podría significar que la serialización es la mejor para obtener los trozos más pequeños de datos binarios. También puede utilizar NSCoding para conditionalObjectEncodings, que elimina la duplicación de instancias de objetos vivos en memoria. La razón por la que hago esta pregunta es porque todo el mundo habla y sugiere Coredata-SQLite, pero no veo esa ventaja. A menos que construya contra una fuente de datos enorme, y no puede poner todo eso en la memoria. Am i right ndash LolaRun Mar 5 12 at 18:12 Siempre hay un equilibrio entre la memoria y la optimización de rendimiento. Con NSCoding, o su representación binaria personalizada tiene mucho más control sobre los bits que se están escribiendo en el almacenamiento o se almacena en la memoria, pero para esto usted tiene que pagar el precio de la codificación más así la eficiencia del código dependerá de su habilidades. Con CoreData / SQLite se implementan muchas cosas útiles para usted de manera eficiente (búsqueda, consulta, indexación, uniones, etc.). Nota: Los objetos CoreData se cargan en la memoria sólo cuando es necesario, de lo contrario permanecen en el db. Ndash MrTJ Mar 6 12 at 8:26 Excelente. Así que si i39m usando quotApplicationDocumentquot plantilla de aplicaciones, y si necesito guardar y abrir documentos, wouldn39t realmente necesita los beneficios de CoreData, ya que tengo que cargar todo en la memoria, y don39t necesidad de consulta y. Funcionalidades de la base de datos. La principal diferencia es el costo de desarrollo. Que en mi caso no es un revés. Muchas gracias. I39ll esperar un poco, para atraer más respuestas y más discusiones, antes de aceptar una respuesta ndash LolaRun Mar 6 12 at 13:41 Siempre hay una impedancia entre los objetos y las estructuras relacionales. Siempre prefiero objetos ya que el acceso a los datos suele ser una fracción de la funcionalidad de su aplicación. Con NSCoding, obtiene simplicidad, facilidad de depuración y control con muy poco código para escribir de todos modos. También tiene la flexibilidad de incorporar NSCoding en sus estructuras de base de datos. NSCoding es un mecanismo de persistencia para guardar objetos. Si agrega índices a sus estructuras relacionales para optimizar la búsqueda y mantener estructuras de objetos, entonces creo que obtiene lo mejor de todos los mundos a un costo muy bajo y facilidad de mantenimiento. Respondió el 14 de agosto a las 20: 19iOS Comparación de bases de datos: SQLLite vs Core Data vs Realm Construir rápido, gran escala con MongoDB Atlas. Un servicio alojado para la base de datos NoSQL líder. Pruébelo ahora Traído a usted en asociación con MongoDB. Si quieres hacer una gran aplicación que se ejecute rápido y sólo funciona (no se permiten errores) youll tiene que pensar en todos los aspectos de desarrollo de su aplicación con cuidado. Uno de los aspectos que debe averiguar es cómo almacenar y buscar grandes cantidades de datos, por lo que probablemente use una base de datos. Las opciones más comunes para las bases de datos de iOS son SQLite y Core Data, además de un jugador relativamente más reciente llamado Realm. Este artículo cubre los pros y los contras de cada opción y discute el proceso de cambiar a Realm si ya está utilizando SQLite o Core Data. SQLite SQLite es el motor de base de datos más utilizado en el mundo y su código abierto también. Implementa un motor de base de datos SQL transaccional sin configuración y no requiere servidor. SQLite es accesible en Mac OS-X, iOS, Android, Linux y Windows. Proporciona una interfaz de programación sencilla y fácil de usar, tal como está escrito en ANSI-C. SQLite también es muy pequeño y ligero y la base de datos completa se puede almacenar en un archivo de disco de plataforma cruzada. Las razones de la gran popularidad de SQLite son: Independencia de un servidor Configuración cero Acceso seguro desde múltiples procesos y subprocesos Almacena datos en tablas con una o más columnas que contienen un tipo específico de datos Core Data Core Data es el segundo iOS principal Tecnología de almacenamiento disponible para los desarrolladores de aplicaciones. Dependiendo del tipo de datos y la cantidad de datos que necesita administrar y almacenar, SQLite y Core Data tienen sus pros y sus contras. Core Data se centra más en objetos que en los métodos de base de datos de tablas tradicionales. Con Core Data, en realidad está almacenando contenidos de un objeto representado por una clase en Objective-C. Aunque son fundamentalmente diferentes, Core data: Utiliza más memoria que SQLite Utiliza más espacio de almacenamiento que SQLite Más rápido en la búsqueda de registros que SQLite Realm Theres un nuevo jugador (ish) en la ciudad llamado Realm. Realm fue diseñado para ser más rápido y eficiente que las soluciones de base de datos anteriores. Esta nueva solución es una base de datos móvil multiplataforma llamada Realm. Está disponible en Objective-C y Swift, y está diseñado para iOS y Android. Las ventajas principales de Realm son: Su absolutamente libre de cargo Rápido y fácil de usar Uso ilimitado Trabaja en su propio motor de persistencia para la velocidad y el rendimiento Lo que realmente genial es que se puede manejar todo el trabajo con un par de líneas de código . Realm es muy fácil de instalar y más rápido de trabajar comparado con SQLite y Core Data. Además, los archivos de base de datos son compartidos entre iOS y Android. Si usted está diseñando una aplicación con una gran cantidad de registros y para un gran número de usuarios, es necesario prestar especial atención a la escalabilidad desde el principio. Realm es grande en esto y le permite manejar una gran cantidad de datos rápidamente. Para comenzar con Realm, todo lo que necesita es al menos iOS 8 o OS X 10.9. Las versiones anteriores no admiten esta nueva solución sencilla para administrar el almacenamiento local y las bases de datos. Cambio a Realm Si ha estado trabajando con Core Data y desea pasar a Realm, el proceso es sencillo. Muchos desarrolladores han hecho el viaje en un par de horas. Tenga en cuenta que tanto Core Data como Realm tratan los datos como objetos, de modo que lo que debe hacer es refactorizar el código de datos básicos para utilizar Realm. Quite el marco de datos principal. Busque las partes de su código que incluyen el código de datos básicos y refactorizarlos. Ellos describen un buen truco para lanzar un error de compilador para cada línea de código utilizando Core Data Eliminar el Core Data Setup Code. Theres va a ser una parte del código de configuración de datos básicos en algún lugar de su aplicación y necesita deshacerse de todo. Realm se configura automáticamente tan pronto como se accede a un objeto Realm por primera vez. Puede elegir dónde desea almacenar el archivo de datos Realm y seguirá siendo opcional en tiempo de ejecución. Migrar los archivos de su modelo. Puede convertir fácilmente subclases de objetos administrados en Realm. Realm gestiona las palabras clave de propiedad internamente (no tienes que especificarlas), lo que hace que la cabecera de la clase se vea más mínima. Además, puede quitar con seguridad todo NSNumber cruft porque Realm admite datos numéricos simples (NSInteger y CGFloat). También hay limitaciones a Realm. A diferencia de Core Data cuyos objetos tienen NSManagedObjectID para identificar objetos de forma exclusiva, Realm deja esto como desarrollador. En segundo lugar, la versión actual de Realm no puede ocuparse de propiedades de objeto con un valor nulo. Este es un inconveniente menor, pero los desarrolladores están prometiendo que la próxima versión de Realm no tendrá este problema. Migración de las operaciones de escritura. Las operaciones de salvaguarda de Realms son un poco diferentes a las de Core Data y usted necesita familiarizarse con esto. Una vez que los objetos Realm se agregan a un objeto Realm, no se pueden modificar. Esto asegura la consistencia de los datos en diferentes subprocesos. Para poder modificar las propiedades, el objeto en el que se guardaron debe estar en una transacción de escritura. Migre sus consultas para poder recuperar sus datos según sea necesario. Para obtener un archivo, en Core Data necesita aproximadamente 10 líneas de código. En Realm, puedes hacer lo mismo con una sola línea. Migre sus datos de producción de usuarios para las aplicaciones activas creadas en Core Data, puede volver a vincular el marco de datos de Core de nuevo a la aplicación, recuperar los datos de los usuarios y pasarlos a Realm. Una solución más fácil para los datos de los usuarios reemplazables es eliminar todos los archivos de datos de Core Data y comenzar la próxima vez que la aplicación esté abierta. La clave es mantener su proceso de diseño simple con las mejores técnicas y herramientas. Una vez que has invertido tiempo para configurar su proceso probado y verdadero, no deje que la atracción a nuevo que fuera de curso. Que el nuevo trabajo sea una parte de su proceso, y deje que el tiempo decida lo que no es digno. Ahora es más fácil que nunca empezar con MongoDB, la base de datos que permite a las empresas y nuevas empresas crear rápidamente aplicaciones a escala planetaria. Presentación de MongoDB Atlas. El servicio oficial de hospedaje para la base de datos de AWS. Pruébelo ahora Traído a usted en asociación con MongoDB. Base de datos, reino, sqlite, ios, móvil

No comments:

Post a Comment