Données de base vs SQLite 3

Je connais déjà très bien les bases de données relationnelles et j’ai déjà utilisé SQLite (et d’autres bases de données). Cependant, Core Data a une certaine allure, alors je pense passer du temps à l’apprendre pour mon application suivante.

Y a-t-il beaucoup d’avantages à utiliser les données de base sur SQLite, ou vice versa? Quels sont les avantages / inconvénients de chacun?

J’ai du mal à justifier le coût de l’apprentissage des données de base lorsque Apple ne l’utilise pas pour de nombreuses applications phares telles que Mail.app ou iPhoto.app, mais pour les bases de données SQLite. SQLite est également largement utilisé sur l’iPhone.

Les personnes familiarisées avec l’utilisation des deux peuvent-elles commenter leur expérience? Peut-être, comme pour la plupart des choses, la question est-elle plus profonde que l’utilisation de l’un sur l’autre?

Bien que Core Data soit un descendant du Enterprise Object Framework d’Apple, un mappeur object-relationnel (ORM) étroitement lié à un backend relationnel, Core Data n’est pas un ORM. C’est en fait un framework de gestion de graphes object. Il gère un graphique potentiellement très volumineux d’instances d’object, permettant à une application de fonctionner avec un graphique qui ne correspondrait pas entièrement à la mémoire en faisant défaut aux objects dans la mémoire et en cas de besoin. Les données de base gèrent également les contraintes sur les propriétés et les relations et conservent l’intégrité de la référence (par exemple, la cohérence des liens en amont et en aval lorsque des objects sont ajoutés / supprimés dans une relation). Core Data est donc un cadre idéal pour la construction du composant “modèle” d’une architecture MVC.

Pour implémenter sa gestion de graphique, Core Data utilise SQLite en tant que magasin de disques. Il aurait pu être implémenté en utilisant une firebase database relationnelle différente ou même une firebase database non relationnelle telle que CouchDB . Comme d’autres l’ont fait remarquer, Core Data peut également utiliser XML ou un format binary ou un format atomique écrit par l’utilisateur en tant que backend (bien que ces options nécessitent que le graphe d’objects entier tienne dans la mémoire). Si vous souhaitez savoir comment Core Data est implémenté sur un backend SQLite, vous pouvez consulter le framework OmniDataObjects d’ OmniGroup , une implémentation open source d’un sous-ensemble de l’API Core Data. Le framework BaseTen est également une implémentation de l’API Core Data utilisant PostgreSQL comme serveur principal.

Comme les données de base ne sont pas destinées à être un ORM pour SQLite, elles ne peuvent pas lire un schéma SQLite arbitraire. À l’inverse, vous ne devez pas vous fier à la capacité de lire les magasins de données SQLite de Core Data avec d’autres outils SQLite; le schéma est un détail d’implémentation qui peut changer.

Ainsi, il n’y a pas vraiment de conflit entre l’utilisation directe de Core Data ou de SQLite. Si vous souhaitez une firebase database relationnelle, utilisez SQLite (directement ou via l’un des wrappers Objective-C tels que FMDB ) ou un serveur de firebase database relationnelle. Cependant, vous souhaiterez peut-être toujours apprendre les données de base pour les utiliser comme cadre de gestion de graphes d’objects. En combinaison avec les classes de contrôleurs Apple et les widgets de vue compatibles avec la liaison de valeurs-clés, vous pouvez implémenter une architecture MVC complète avec très peu de code.

Et avec iOS 5.0, vous bénéficiez de la possibilité d’utiliser la synchronisation de fichiers iCloud gratuitement si vous utilisez Core Data. Si vous utilisez directement SQLite, il faudra beaucoup de bricolage manuel et d’implémentation pour le synchroniser avec iCloud.

Les données de base ne sont pas un moteur de firebase database, mais plutôt une API qui effectue un résumé sur le magasin de données réel. Vous pouvez indiquer à Core Data de sauvegarder en tant que firebase database sqlite, un plist, un fichier binary ou même un type de magasin de données personnalisé.

Je recommanderais l’apprentissage des données de base, car c’est une excellente ressource qui accélère considérablement de nombreuses parties du développement d’applications de cacao.

SQLite est l’un des formats de firebase database pour les données de base. En utilisant Core Data, vous obtenez une meilleure intégration avec le rest de l’API Cocoa.