315 votes

Données de base vs SQLite 3

Je suis déjà assez familier avec les bases de données relationnelles et avez utilisé SQLite (et d'autres bases de données) dans le passé. Cependant, la Base de Données a une certaine allure, donc j'envisage de passer du temps à apprendre afin de l'utiliser dans ma prochaine demande.

Il ya beaucoup d'avantages à l'utilisation de Base de Données de plus de SQLite, ou vice-versa? Quels sont les avantages/inconvénients de chacun?

J'ai du mal à justifier le coût de l'apprentissage de Base de Données quand Apple ne l'utilise pas pour la plupart de ses applications phares comme le Courrier.app ou iPhoto.app - plutôt que d'opter pour les bases de données SQLite. SQLite est aussi largement utilisé sur l'iPhone.

Ceux qui sont familiers avec l'aide de tant de commentaires sur leur expérience? Peut-être, comme avec la plupart des choses, la question est plus profond que juste à l'aide de l'un sur l'autre?

280voto

Barry Wark Points 73462

Bien que l'essentiel des Données est un descendant d'Apple Objet d'Entreprise Cadre, un mappeur objet / relationnel (ORM) qui a été/est étroitement lié à un relationnel backend, Base de Données n'est pas un ORM. Il est, en fait, un objet graphique cadre de gestion. Il gère un très grand graphe d'instances de l'objet, permettant une application pour travailler avec un graphique qui ne serait pas tout à fait aptes dans la mémoire par les failles des objets dans et hors de la mémoire que nécessaire. Base de Données gère également des contraintes sur les propriétés et les relations, et maintins de référence de l'intégrité (par exemple, en gardant en avant et en arrière des liens cohérents lorsque des objets sont ajoutés/retirés à partir d'une relation). L'essentiel des Données est donc un cadre idéal pour la construction du "modèle" des composants d'une architecture MVC.

Pour mettre en œuvre son graphe de la gestion, de Base de Données qui se passe pour l'utilisation de sqlite comme un disque store. Il pourrait avoir été mis en œuvre en utilisant une autre base de données relationnelle ou même une base de données non relationnelle comme CouchDB. Comme d'autres l'ont souligné, la Base de Données peut également utiliser XML ou au format binaire ou un utilisateur écrit atomique format comme un backend (si ces options exigent que la totalité de l'objet graphique tenir en mémoire). Si vous êtes intéressé par la façon dont l'essentiel des Données est mis en œuvre sur une sqlite backend, vous pourriez vouloir vérifier OmniGroup de OmniDataObjects cadre, une implémentation open source d'un sous-ensemble de la Base de Données de l'API. Le BaseTen cadre est aussi une implémentation de la Base de Données de l'API à l'aide de PostgreSQL comme un backend.

Parce que la Base de Données n'est pas destiné à être un ORM pour sqlite, il ne peut pas lire arbitraire sqlite schéma. À l'inverse, vous ne devriez pas compter sur d'être en mesure de lire de Base de Données sqlite magasins de données avec d'autres sqlite outils; le schéma est un détail d'implémentation qui peut changer.

Ainsi, il n'est pas vraiment un conflit entre l'utilisation d'une Base de Données sqlite ou directement. Si vous voulez une base de données relationnelle, l'utilisation de sqlite (directement ou via l'un de l'Objective-C wrappers comme FMDB), ou un serveur de base de données relationnelle. Cependant, vous pouvez toujours apprendre de Base de Données pour l'utiliser comme un objet graphique cadre de gestion. En combinaison avec de la Pomme de classes de contrôleur et de valeur-clé de liaison affichage compatible avec les widgets, vous pouvez mettre en œuvre un complète l'architecture MVC avec très peu de code.

46voto

strange Points 1332

Et avec iOS 5.0, vous obtenez l'avantage supplémentaire d'être en mesure d'utiliser iCloud fichier de synchronisation gratuitement si vous utilisez la Base de Données. Si vous utilisez SQLite directement, il faudra être beaucoup de manuel de bricolage et de mise en œuvre de l'obtenir pour la synchronisation sur l'iCloud.

35voto

Joel Levin Points 1984

Base de Données n'est pas tellement un moteur de base de données comme c'est une API qui résumés au niveau de la banque de données. Vous pouvez dire de Base de Données pour enregistrer une base de données sqlite, un plist, un fichier binaire, ou même une banque de données personnalisé type.

Je recommande l'apprentissage de Base de Données, comme il est une excellente ressource qui accélère grandement les nombreuses parties de cacao de développement d'applications.

13voto

cefstat Points 938

SQLite est l'un des formats de base de données pour la Base de Données. L'aide de Base de Données, vous obtenez une meilleure intégration avec le reste de l'API Cocoa.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X