web-dev-qa-db-fra.com

Quelle base de données utilise PhoneGap et quelle est la taille limite?

J'ai écrit une base de données HTML5 qui résume localStorage, indexedDB et WebSQL. En utilisant directement HTML5, mes options de base de données ressemblent à ceci:

  • IE10 - indexedDB - 1 Go max
  • FireFox - indexedDB - illimité
  • Safari - WebSQL - 50 Mo maximum
  • Chrome - IndexedDB (ou Web SQL) - illimité (avec l'API HTML5 Quota ref1 , ref2 =)
  • Opera - WebSQL (jusqu'à ce qu'ils passent au webkit?) - illimité

Je souhaite étendre la taille maximale de la base de données à l'aide de PhoneGap ou de l'API Quota. D'après la documentation de PhoneGap, il semble que la écosphère de la base de données PhoneGap soit:

  • WebSQL - Android, Blackberry, iPhone et webOS
  • localStorage - Windows Phone 7
  • indexedDB - Windows Phone 8 et, je suppose, partout indexedDB est disponible mais WebSQL ne l'est pas.

Il existe également les plugins PhoneGap SqlLite. iOS , Android , Windows Phone 8 +


QUESTION 1 - Ma compréhension de la base de données que PhoneGap utilisera est-elle exacte?

QUESTION 2 - Existe-t-il une documentation solide sur la quantité de données qu'une base de données PhoneGap d'un type donné stockera? * S'il s'agit d'une base de données PhoneGap et non de l'implémentation de la base de données des navigateurs.

QUESTION 3 - PhoneGap prévoit-il d'adhérer aux normes de stockage Web abandonnant ainsi WebSQL au profit de indexedDB? Si c'est le cas, serai-je toujours en mesure d'utiliser mon code WebSQL existant (via un polyfill PhoneGap intégré) une fois le passage à indexedDB effectué?

QUESTION 4 - Dans les situations où la taille de la base de données est limitée et ne peut pas être développée par PhoneGap ou l'API Quota, mais où l'accès au système de fichiers est disponible, est -il raisonnable de supposer que des données "supplémentaires" pourraient être stockées sur le système de fichiers de l'appareil ou sur une carte SD?

67
user1873073

Ma compréhension de la base de données que PhoneGap utilisera est-elle exacte?

Oui, ça l'est. PhoneGap peut utiliser des bases de données LocalStorage, SessionStorage ou SQLite. Vous pouvez également utiliser PhoneGap pour vous connecter aux classes natives de l'appareil via un plug-in et transmettre les données de la classe native qu'il stockera ensuite sur l'appareil.

Existe-t-il une documentation solide sur la quantité de données qu'une base de données PhoneGap d'un type donné stockera? S'il s'agit d'une base de données PhoneGap et non de l'implémentation de la base de données des navigateurs.

  1. LocalStorage :: 10 Mo
  2. SessionStorage :: 10 Mo
  3. Base de données SQLite :: 50 Mo-80 Mo (dépend de l'appareil)
  4. Base de données native utilisant un appel de plugin :: Quantité de données illimitée
  5. IndexedDB :: 5MB. Toujours existant. Mais très bogué, theres une liste de périphériques/OS qui l'exécutent ici

PhoneGap a-t-il l'intention d'adhérer aux normes de stockage Web, abandonnant ainsi WebSQL au profit de indexedDB? Si c'est le cas, serai-je toujours en mesure d'utiliser mon code WebSQL existant (via un polyfill PhoneGap intégré) une fois le passage à indexedDB effectué?

WebSQL est progressivement obsolète. Son remplacement est IndexedDB ou SQLite. Cependant, la meilleure option pour vous est SQLite ou la base de données native (par exemple Core Data sur iOS)

Dans les situations où la taille de la base de données est limitée et ne peut pas être développée par PhoneGap ou l'API Quota, mais où l'accès au système de fichiers est disponible, est-il raisonnable de supposer que des données "supplémentaires" pourraient être stockées sur le système de fichiers de l'appareil ou sur une carte SD carte?

C'est définitivement possible.

  • Sur Android vous pouvez spécifier l'emplacement de la base de données, et donc pousser les données vers une base de données externe.
  • Sur iOS, vous pouvez utiliser l'appel de base de données natif pour stocker des données sur CoreData, il n'y a pas de mémoire externe.
  • Dans tous les cas de tous les systèmes d'exploitation, vous pouvez créer un fichier de base de données plat, comme un fichier texte, stocker vos données dans des listes de valeurs-clés, puis les extraire dans votre application lors de la première exécution. Méfiez-vous de la gestion de la mémoire dans ce cas.

J'ai ajouté une explication sur la façon de coder les bases de données SQLite et LocalStorage dans ma réponse .

95
SashaZd

J'ai pu exécuter un test sur une tablette Android 4.0.4. Il utilise WebSQL (une ancienne version de WebSQL qui ne prend même pas en charge db.changeVersion) et m'a permis de faire le plein l'intégralité du disque dur (12 Go avec ma base de données). Je ne connais pas les autres appareils ni le fonctionnement des cartes SD.

enter image description here

6
user1873073

IndexedDB -

  • Il est incompatible avec de nombreux types de systèmes d'exploitation mobiles et de versions
  • Il n'est compatible qu'avec des versions très spécifiques du système d'exploitation mobile
  • Les développeurs ne peuvent pas utiliser SQL avec IndexedDB. Les instructions SQL peuvent être utilisées sur SQLite et WebSQL
  • La plupart des développeurs évitent activement d'utiliser IndexedDB autant qu'ils le peuvent

WebSQL -

  • Il est obsolète par le W3C, ce qui signifie qu'il n'est plus maintenu ou développé
  • Il nécessite un autre plugin appelé Polyfill pour permettre aux applications mobiles de fonctionner avec les systèmes d'exploitation mobiles populaires tels que Google Android et Apple iOS

SQLite -

  • Il a reçu un prix de Google
  • SQLite a son site officiel. IndexedDB et WebSQL ne
  • Sur Google, SQLite renvoie 1,8 million de résultats. WebSQL renvoie un peu moins de 700 Ko de résultats et IndexedDB renvoie 282 Ko de résultats.
  • Le développeur peut utiliser des instructions SQL courantes avec SQLite.

Si vous voulez un tutoriel rapide sur SQLite

Stockage de la base de données SQLite en utilisant Android et Phonegap

3
KershawRocks