Ankit,
Voici le résumé : utilisez les données de base.
Voici la version longue :
Bien que vous puissiez utiliser de nombreux critères pour choisir entre Core Data, un ORM (FMDB) ou des appels sqlite directs, le coût réel de ce choix provient du temps que vous consacrez à son utilisation, du support d'Apple et de l'effet de levier d'autres projets. (RESTKit, qui mappe les services REST sur Core Data, est populaire ces jours-ci).
Par conséquent, dans un grand pourcentage de cas, disons 90+% (une statistique inventée), la réponse sur iOS sera d'utiliser Core Data. Pourquoi ? Une fois que vous aurez pris le coup de main et développé quelques petites méthodes d'aide, Core Data vous maintiendra dans un monde informatique cohérent : le graphe objet d'Objective-C. Core Data vous apprendra des choses sur la façon d'utiliser un langage dynamique qui vous aideront dans tous les autres aspects de votre programmation iOS. Vous serez donc plus productif. Ne vous battez pas contre le framework.
Si vous transférez une base de données et un schéma SQLite complexes et volumineux d'une autre application, il pourrait être rentable d'utiliser FMDB ou SQLite. Mais j'en doute. Le temps que vous consacrez à écrire une simple application Mac en ligne de commande pour migrer la base de données vers une base de données Core Data est une tâche simple et limitée. Vous êtes presque sûr de devoir réécrire la plupart de la logique métier en Objective-C. (Oui, C++ et Objective-C++ sont deux bonnes technologies. La logique métier de votre base de données a-t-elle vraiment été réglée pour fonctionner sur un appareil à mémoire limitée ? Je ne le pensais pas).
Les performances de Core Data sont malmenées. Il est en fait très rapide. Il faut simplement l'utiliser différemment d'une base de données. En particulier, vous récupérez presque toujours trop de données dans le magasin, puis vous les affinez en utilisant des prédicats directement sur les différents ensembles et tableaux. Sur les appareils iOS, où la mémoire flash est étonnamment lente, cette stratégie de sur-recherche est particulièrement efficace. Vous disposez en fait de beaucoup de RAM sur ces appareils, utilisez-la pour gagner en performance. (Oui, je sais que c'est une contradiction apparente avec mon coup de gueule ci-dessus sur la logique d'entreprise portable. Mais vraiment, le code porté depuis un environnement de bureau ou de serveur a tellement d'hypothèses implicites sur la vitesse du disque, la quantité de mémoire et la réalité d'une VM avec un backing store, qu'il ne fonctionnera tout simplement pas bien sur un appareil alimenté par une batterie, à la mémoire limitée et au modèle de mémoire funky. [Vous dénormaliserez également vos données afin de simplifier leur affichage dans divers widgets d'interface utilisateur iOS et Mac OS X. Il y a quelques applications où Core Data sera plus lent qu'une BD SQLite équivalente. Elles ont été détaillées ailleurs. La seule affirmation majeure est que les tâches où les ID sont définis par des bases de données en amont affectent les performances de Core Data, ce qui est vrai. Mais cela peut être quelque peu atténué par une indexation judicieuse et une recherche excessive.
Ce qu'il faut retenir aussi des appareils mobiles, c'est que la taille de la base de données, parce qu'il s'agit d'appareils mobiles sur les feuilles de l'internet, est généralement de taille modeste. Les performances sont donc plus faciles à atteindre. De nombreuses leçons tirées du monde des serveurs peuvent ne pas s'appliquer à ce monde mobile, alimenté par des batteries.
En d'autres termes, si vous avez dû vous lancer à fond dans l'utilisation d'Objective-C sur iOS/Mac OS X, l'utilisation de Core Data vous apportera également des avantages importants en termes de productivité.
Andrew
0 votes
Quelles sont les données que vous stockez, quelle est leur quantité, quel type d'extraction devez-vous effectuer, sont-elles modifiables par l'utilisateur ?
0 votes
C'est la question que je me pose Je veux dire sur quelle base je dois décider de ce que je vais utiliser et y a-t-il des directives fournies par Apple ou quelqu'un d'autre ou est-ce quelque chose qui me viendra avec le temps ?
0 votes
Si vous devez mettre à jour, insérer ou supprimer de nombreuses lignes à la fois, Core Data ne sera pas un bon choix.
0 votes
@Toro Et est-ce parce que cela prend plus de temps ou de mémoire par rapport à sqlite ?
0 votes
Par exemple, si vous voulez supprimer toutes les lignes de Core Data, vous devez les supprimer une par une. Mais avec la syntaxe sql, il suffit d'une seule commande.
0 votes
Vous pouvez lire l'article suivant. stackoverflow.com/questions/523482/core-data-vs-sqlite-3 Dans le post SO, un lien
On switching away from Core Data
vous amènera à l'url suivante. Core Data est puissant, mais il a quelques contraintes. inessential.com/2010/02/26/on_switching_away_from_core_data1 votes
@AnkitSrivastava : En fait, beaucoup de nos amis ont répondu à votre question, mais je veux juste vous dire que "Core Data est utilisé pour gérer la base de données sous forme d'objets, ce qui signifie que vous faites la classe modèle qui vous aide à interagir avec la base de données dans la terminologie des objets, c'est tout", c'est mon point de vue que j'exprime avec ce commentaire, peut-être que cette question est déjà claire pour vous, mais je fais un commentaire ici pour les autres points de vue, j'espère que vous avez compris mon point de vue :) :)