Sunday 11 December 2016

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 de aprender 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. De hecho, es 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 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 Try github / pmurphyjam / DBExample Es un proyecto de Xcode que usa SQLite. Ndash Pat May 22 14 at 21:28 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 usted está usando SQLite directamente itll tiene que ser un montón de manoseo manual e implementación para conseguir que se sincronice a través de iCloud. About System. Data. SQLite System. Data. SQLite es un proveedor de ADO. NET para SQLite. System. Data. SQLite fue iniciado por Robert Simpson. Robert aún tiene privilegios de comisión en este repositorio, pero ya no es un colaborador activo. El trabajo de desarrollo y mantenimiento ahora es realizado principalmente por el equipo de desarrollo de SQLite. El equipo de SQLite está comprometido a soportar System. Data. SQLite a largo plazo. Las versiones históricas, así como los foros de soporte originales, todavía se pueden encontrar en sqlite. phxsoftware /. Aunque no ha habido ninguna actualización a esta versión desde abril de 2010. No hay foro en este Web site sin embargo, la página de la ayuda tiene una lista actualizada de opciones de la ayuda. Consulte la página de descarga para obtener una lista completa de paquetes descargables e información sobre su uso. Documentación para System. Data. SQLite La documentación correspondiente a la versión más reciente de System. Data. SQLite que contiene información detallada para todos los tipos, métodos, propiedades y eventos públicos se registra en el repositorio en Microsoft Compiled HTML Help (quotCHMquot ) formato. También se puede descargar directamente a través de la interfaz web al repositorio. Core Data es el framework de mapeo objeto-relacional de Apple8217s para Cocoa API, la interfaz de programación utilizada en el desarrollo de aplicaciones para Mac OS X y el sistema operativo móvil iOS. Core Data aísla al desarrollador de cualquier código SQL subyacente, mientras sigue administrando todo el ciclo de vida del objeto. Persiste los gráficos de objetos serializándolos en binario, XML (en el escritorio) o incluso una base de datos SQLite. El marco de persistencia de datos también incluye una conveniente herramienta de diagrama ER accesible dentro de Xcode, el IDE utilizado para casi todos los desarrollos de Mac e iOS. Como cualquier buen marco de ORM, Core Data libera al desarrollador de pasar tiempo valioso proyecto en la plomería alrededor de bases de datos, lo que permite un mayor enfoque en el negocio y la lógica del dominio necesario para resolver su problema customer8217s. Diseño de un modelo de datos con Xcode La mayoría de los proyectos iOS que implementan el marco de datos básicos comienzan con un diseño de modelo de datos utilizando la función de diagramación Xcode8217s ER. Al igual que la mayoría de las herramientas ER, el desarrollador diagrama las entidades, sus atributos y tipos de datos, así como las relaciones entre esas entidades. La herramienta Xcode ER no tiene todas las campanas y silbatos de una aplicación autónoma como ERwin, pero funciona bien para algo incrustado dentro de un IDE totalmente funcional. Xcode termina compilando el modelo de datos de este diagrama en una estructura utilizada por la versión compilada de la aplicación o programa. Apple recomienda que los modelos de datos también definan explícitamente una relación inversa entre entidades. Esto ayuda a que Core Data aplique las reglas de integridad de datos. Xcode crea objetos de datos gestionados para cada entidad definida en el diagrama ER. El desarrollador interactúa con estos objetos en el resto de la aplicación para agregar lógica de negocios y otras funciones. Vinculación de objetos de datos El uso de Core Data Interface Builder es la herramienta Xcode utilizada para definir una interfaz de usuario para una aplicación para iOS o Mac. Cuando se utiliza junto con Core Data, Interface Builder facilita la configuración de la lógica del controlador para gestionar los datos de cualquier entidad creada en el modelo de datos. Los objetos NSArrayController se pueden usar para enlazar con el objeto de datos para cada entidad en el modelo de datos application8217s. El desarrollador simplemente establece el modo de cada objeto en 8220Entity8221 y luego selecciona el nombre de entidad relevante del modelo. Los objetos NSArrayController son útiles para mostrar colecciones de datos en pantalla en una aplicación. Un TableViewController 8211 esencialmente una lista de elementos mostrada en una aplicación 8211 de iOS puede ahora enlazarse a cualquier tabla en el modelo de datos app8217s que utilice este controlador de matriz, mientras muestra los datos de cualquiera de esas columnas de table8217s. El desarrollador establece la clave del controlador para la vista de tabla en 8220arrangedObjects, 8221 mientras que su ruta de clave de modelo se establece en el nombre de columna que se mostrará. Los controles de visualización 8211 tales como campos de texto, cuadros combinados y áreas de texto 8211 están enlazados a columnas de tabla individuales en el modelo de datos usando una técnica similar. Las propiedades de control adicionales están disponibles para administrar un estado de sólo lectura de field8217s, una pantalla de combinación y campos de valores independientes, o una gran cantidad de otras opciones. Los controles de coreografía de datos, incluidos los botones utilizados para administrar la adición, actualización y eliminación de registros de una tabla enlazada, también se vinculan directamente al controlador de matriz para esa tabla. Simplemente conectando un botón específico a una acción en el controlador de array add, delete es lo único necesario para configurar esa funcionalidad. Dos API principales controlan la lógica subyacente utilizada en el enlace de datos con Core Data. La API de clave de codificación de valores (KVC) se utiliza principalmente para acceder a los atributos de una tabla de datos administrados. Al imitar la reflexión, KVC permite al desarrollador iterar a través de todos los campos de una tabla, sin conocer específicamente el nombre del campo individual. Esta lógica reflexiva también funciona en la otra dirección, permitiendo que el desarrollador establezca el valor para cada campo en la tabla sin conocer implícitamente el nombre del campo. KVC ayuda al desarrollador a facilitar las técnicas de programación orientadas a objetos, como la modularidad o el acoplamiento suelto. Key Value Observing (KVO) sigue el patrón observador utilizado en la programación orientada a objetos. Permite al desarrollador rastrear cualquier cambio de datos en un objeto gestionado. Esto se convierte en útil cuando se implementa la validación o la lógica de dirty8221. Otros controles de interfaz de Cocoa, incluyendo el NSTreeController y NSSearchField, también aprovechan la funcionalidad de enlaces de cacao (KVC / KVO) de Core Data, permitiendo que esos controles funcionen con la cantidad mínima de código. Cómo los datos básicos gestionan las migraciones y la versión Los datos básicos incluyen la funcionalidad para manejar el versionado de los modelos y las migraciones de datos. Para implementar el control de versiones, el desarrollador simplemente le dice a Xcode que desea crear una nueva versión de modelo al seleccionar el modelo de datos en el explorador de proyectos. Los cambios posteriores del modelo se guardan en un nuevo archivo. Pero simplemente ejecutar la aplicación en este punto desencadena un error porque el almacén de datos persistente no coincide con el nuevo modelo. Afortunadamente, Core Data proporciona una característica automática de migración de datos. Al usar el distintivo denominado 8220NSMigratePersistentStoresAutomaticallyOption8221 con denominación detallada al inicializar el almacén persistente de Core Data8217s en código, hace que la aplicación intente una migración de datos si detecta un conflicto de versiones de versiones de modelos. Las migraciones de datos principales dependen de los modelos de mapeo para realizar su magia. Al crear un modelo de mapeo, Xcode solicita primero los modelos de datos de origen y destino para la migración. A continuación, el IDE crea un conjunto inicial de asignaciones basadas en los cambios del modelo; estas asignaciones generadas son normalmente suficientes para la mayoría de los escenarios de migración. Los predicados de filtro se utilizan para manejar situaciones de mapeo más complejas, esencialmente convirtiéndose en una cláusula WHERE para el proceso de migración. Esto sólo permite que los registros que contengan datos específicos se migren, si es necesario. Con las migraciones automáticas de Core Data8217s y el modelo de mapeo apropiado, un desarrollador de iOS asegura que sus clientes permanezcan aislados de cualquier molestia relacionada con el cambio de un modelo de datos de application8217s en vivo sobre la marcha. Consideraciones móviles al utilizar datos básicos Las diferencias entre la API de Cocoa para Mac OSX e iOS son generalmente menores, esta similitud cercana también se aplica a los datos básicos en ambas plataformas. Mantener consciente del entorno de recursos limitados en el iPhone y el iPad tiende a ser la consideración más importante al desarrollar una aplicación Core Data para iOS. Xcode también proporciona un camino fácil para los desarrolladores que desean convertir un proyecto iOS existente para utilizar el motor de persistencia Core Data8217s. Normalmente, la creación de un modelo de datos y la adición de un código de arranque para inicializar una instancia de un objeto administrado de ese modelo son los únicos pasos necesarios para la actualización de Core Data a una aplicación iOS. Cada aplicación de iOS utiliza su propia 8220sandbox8221 para el almacenamiento de archivos el almacén persistente de datos de núcleo 8211 sin importar que el formato 8211 se guarde dentro de esta caja de seguridad. SQLite tiende a ser el formato principal para el almacenamiento de datos de núcleo en iOS, probablemente debido a su eficiencia en el uso de memoria. XML sólo está disponible para la instancia Mac OSX de Core Data. Teniendo en cuenta las limitaciones de memoria de iOS en comparación con el Mac, Apple añadió una clase, NSFetchedResultsController, que maneja la gestión de memoria Core Data8217s de grandes conjuntos de resultados de manera eficiente. Esto es especialmente útil cuando se muestran páginas sucesivas de datos utilizando un TableViewController. Un API de Observador de Clave menos robusto es otra diferencia entre las versiones de escritorio y móviles de Core Data. Esto obliga al desarrollador a codificar la lógica para actualizar controles fuera de pantalla cuando cambia los datos subyacentes. Crear un delegado para manejar notificaciones de cambios de datos tiende a ser un método común para manejar este problema. Hay pocas dudas Apple8217s Core Data es un robusto marco ORM que pertenece al conjunto de habilidades de cualquier programación de desarrolladores en las plataformas iOS y Mac OSX. Proporciona una herramienta de diagrama ER de calidad, además de una serie de ganchos de programación para manejar la persistencia de datos de una manera eficiente. PRÓXIMO ARTÍCULO rarr Aprendiendo sobre WikiData en SemTechBiz Berlin larr ARTÍCULO ANTERIOR La encuesta de Couchbase muestra la adopción de NoSQL continua


No comments:

Post a Comment