2010-07-01 9 views
14

Ho un po 'di problemi, sto per iniziare un progetto di 4-6 mesi che richiederà il supporto offline. AppCache è eccezionale e accettato come standard, ma i grandi browser sono ancora indecisi sull'implementazione del database con Opera, Safari e Chrome che optano per WebSQL (SQLite) e Mozilla e presumibilmente supportano IndexDB.IndexDB, WebSQL in 4 mesi

So che Chrome svilupperà anche un'opzione IndexDB in futuro, ma non ho trovato alcuna informazione su eventuali date di rilascio, ecc

Ora, in 4-6 mesi, consente di chiamare novembre voglio avere un sistema che supporta la maggior parte (non deve essere tutto) dei browser delle versioni più recenti (supponendo che IE9 sia fuori, FF4 e Chrome 6). Non voglio davvero avere una doppia implementazione indexdb/websql. Il pensiero di usare localStorage come un grosso blob database mi dà i brividi e mi piacerebbe non usare Gears.

Che cosa, i miei stimati colleghi raccomandano di fare, quale percorso devo seguire? Quale pillola prendere?

Grazie Tutti

Guido

+0

Un po 'di aggiornamento, questo progetto è ora completato e ho finito per creare il mio livello di astrazione che va così: 1) IndexedDB 2) Web SQL 3) Gears DB (in ordine fallback). È simile a una sedia a sdraio, ma un po 'più flessibile. Questo era in realtà abbastanza semplice da fare e funziona davvero bene.Se avessi lo scope avrei voluto aggiungere anche l'opzione di fallback dello storage Flash. Non ho supportato la memorizzazione locale in quanto aveva un limite di 2,5 MB (inutile nel mio scenario) – gatapia

+0

gatapia, hai pubblicato quel livello di astrazione per la comunità? –

+4

@Peder Rice, sì, in realtà ho: [qui] (https://github.com/PicNet/picnet_closure_repo/tree/master/src/pn/data) – gatapia

risposta

3

vorrei davvero andare per (A.O.) localStorage. Ho scritto una piccola dimostrazione di concetto di tale app web offline all'inizio di quest'anno (numero this blogpost e offline-enabled webapp here), l'approccio di base è;

  • put dati in array/oggetti
  • uso standard JavaScript funzioni per fare CRUD (o andare per jlinq)
  • json-Ify dell'array/oggetto per la memorizzazione
  • utilizzare una libreria di archiviazione astrazione simile persistjs per memorizzare/recuperare jSON-ified array/object
+1

Il pensiero di dover eseguire il marshalling verso/da stringa/JSON ogni tempo è richiesto un aggiornamento del database è davvero brutto. E potrebbe essere ok per un databsae molto piccolo, ma questo cadrà molto rapidamente con un set di dati di grandi dimensioni. Tuttavia, non mi piace questo, potresti avere ragione e questo potrebbe essere l'approccio più compatibile e sono sicuro che un approccio di "segmentazione" potrebbe essere preso per migliorare le prestazioni ma sheesh perché FireFox deve rendere la mia vita così difficile !!!!! – gatapia

+1

hai assolutamente ragione, questa è una brutta soluzione, ma per quanto ne so non c'è una vera alternativa per ora. alcuni misc. bit: * Non si trattava solo di Mozilla che ha contestato WebDB, ms non volevano implementare SQLite sia * MS & Mozilla, i sostenitori originali, attueranno indexdb * opera espresso interesse per indexdb pure, in modo probabilmente seguiranno anche * i chromium-guys stanno lavorando su indexdb (http://www.chromium.org/developers/design-documents/indexeddb) quindi sembra sicuro assumere che finirà in chrome (e forse safari, visto che molto lavoro sarà nel webkit) – futtta

0

So che è un po 'tardi, ma per i progetti futuri si potrebbe provare SequelSphere.

È una novità per il mercato, ma dovrebbe eventualmente coprire questo tipo di progetto. È un motore di database relazionale HTML5 che supporta SQL e memorizza i dati in Archiviazione locale. Non utilizza i database WebSQL, ma piuttosto è il proprio motore SQL. In quanto tale, funzionerà in qualsiasi browser compatibile con JavaScript (una delle tue principali preoccupazioni). Tuttavia, al momento supporta solo l'archiviazione locale come meccanismo di persistenza, quindi la dimensione potrebbe essere un problema per te. Prevedo che SequelSphere alla fine legherà in altri motori di persistenza locali come ingranaggi e flash, ma questo non è immediatamente disponibile.

Per la divulgazione completa: sono collegato alla società SequelSphere. :)