2010-07-01 4 views
14

J'ai un petit problème, je suis sur le point de démarrer un projet de 4 à 6 mois qui nécessitera un support hors ligne. AppCache est génial et accepté comme standard mais les grands navigateurs sont encore indécis sur l'implémentation de la base de données avec Opera, Safari et Chrome optant pour WebSQL (SQLite) et Mozilla et supposément IE supportant IndexDB.IndexDB, WebSQL en 4 mois

Je sais que Chrome développera également une option IndexDB dans l'avenir, mais je ne pouvais pas trouver toute information au sujet des dates de sortie, etc.

Maintenant, en 4-6 mois, permet de l'appeler Novembre je veux avoir un système qui prend en charge la plupart des navigateurs de la dernière version (en supposant que IE9 soit sorti, FF4 et Chrome 6). Je ne veux pas vraiment avoir une implémentation double indexdb/websql. La pensée d'utiliser localStorage comme une grande base de données de blobs laids me donne les frissons et j'aimerais ne pas utiliser Gears.

Que recommandez-vous, mes chers collègues, que dois-je faire? Quelle pilule prendre?

Merci Tous

Guido

+0

Un peu d'une mise à jour, ce projet est maintenant terminé et j'ai fini par construire ma propre couche d'abstraction qui va comme ceci: 1) IndexedDB 2) Web SQL 3) Gears DB (dans l'ordre de repli). Son sim ilaire à lawnchair mais un peu plus flexible. C'était en fait assez simple à faire et fonctionne vraiment bien.Si j'avais le champ d'application, j'aurais aimé ajouter l'option de sauvegarde de stockage Flash également. Je n'ai pas supporté le stockage local car cela avait une limite de 2,5 Mo (inutile dans mon scénario) – gatapia

+0

gatapia, avez-vous publié cette couche d'abstraction pour la communauté? –

+4

@Peder Rice, oui j'ai en fait: [ici] (https://github.com/PicNet/picnet_closure_repo/tree/master/src/pn/data) – gatapia

Répondre

3

je voudrais bien aller (A.O.) localStorage. J'ai écrit une petite preuve de concept d'une telle application hors-ligne plus tôt cette année (cfr this blogpost et offline-enabled webapp here), l'approche de base étant;

  • données de vente dans des tableaux/objets
  • fonctions utilisent javascript standard pour faire CRUD (ou aller jlinq)
  • JSON-IFY le tableau/objet pour le stockage
  • utiliser une bibliothèque abstraction de stockage comme persistjs pour stocker/récupérer un tableau/objet json-ified
+1

La pensée d'avoir à marshal/string/JSON chaque temps une mise à jour de base de données est nécessaire est vraiment moche. Et peut-être bien pour une très petite base de données, mais cela tombera très vite avec un grand ensemble de données. Je n'aime pas cela, vous avez peut-être raison et c'est peut-être l'approche la plus compatible et je suis sûr qu'une approche de 'segmentation' pourrait être prise pour améliorer la performance mais sheesh pourquoi FireFox doit-il rendre ma vie si dure? !!!!! – gatapia

+1

vous avez absolument raison, c'est une solution laide, mais autant que je sache, il n'y a pas de véritable alternative pour le moment. certains autres. Bits: * il était non seulement mozilla qui est opposé à WebDB ms ne voulaient pas mettre en œuvre sqlite soit * ms & mozilla, les bailleurs de fonds d'origine, mettront en œuvre indexdb * opéra a exprimé son intérêt à indexdb aussi, donc ils vont probablement suivre aussi * les gars de chrome travaillent sur indexdb (http://www.chromium.org/developers/design-documents/indexeddb) donc il semble sûr de supposer qu'il finira en chrome (et peut-être safari, car beaucoup de travail sera dans webkit) – futtta

0

Je sais que c'est un peu en retard, mais pour les projets futurs, vous pouvez essayer SequelSphere.

Il est nouveau sur le marché, mais devrait couvrir ce type de projet. Il s'agit d'un moteur de base de données relationnelle HTML5 prenant en charge SQL et stockant ses données dans le stockage local. Il n'utilise pas les bases de données WebSQL, mais est plutôt son propre moteur SQL. En tant que tel, il fonctionnera dans n'importe quel navigateur compatible JavaScript (l'une de vos principales préoccupations). Toutefois, il ne prend actuellement en charge que le stockage local en tant que mécanisme de persistance. La taille peut donc être un problème pour vous. Je m'attendrais à ce que SequelSphere lise dans d'autres moteurs de persistance locaux tels que les engrenages et le flash, mais ce n'est pas immédiatement disponible.

Pour une divulgation complète: Je suis apparenté à la société SequelSphere. :)