2010-07-01 15 views
14

Tengo un pequeño problema, estoy a punto de comenzar un proyecto de 4 a 6 meses que necesitará soporte fuera de línea. AppCache es impresionante y aceptado como estándar, pero los grandes navegadores aún no están decididos sobre la implementación de la base de datos con Opera, Safari y Chrome optando por WebSQL (SQLite) y Mozilla y supuestamente IE respaldando IndexDB.IndexDB, WebSQL en 4 meses

sé que Chrome también desarrollará una opción IndexDB en el futuro, pero no pude encontrar ninguna información acerca de las fechas de lanzamiento etc.

Ahora, en 4-6 meses, vamos a llamarlo noviembre Quiero tener un sistema que admite la mayoría (no tiene que ser todos) los últimos navegadores de la versión (suponiendo que IE9 está fuera, FF4 y Chrome 6). Realmente no quiero tener una implementación doble indexdb/websql. La idea de utilizar localStorage como una gran base de datos fea me da escalofríos y me encantaría no usar Gears.

¿Qué es lo que mis estimados colegas recomiendan que haga, qué camino debo seguir? ¿Qué píldora tomar?

Gracias Todo

Guido

+0

Un poco de una actualización, este proyecto se ha completado y terminé construyendo mi propia capa de abstracción que dice así: 1) IndexedDB 2) Web SQL 3) Gears DB (en orden de reserva). Es similar a la silla de jardín pero un poco más flexible. Esto fue bastante simple de hacer y funciona muy bien.Si tuviera el alcance, me hubiera gustado tener también la opción de almacenamiento alternativo Flash. No admití el almacenamiento local ya que este tenía un límite de 2.5MB (inútil en mi escenario) – gatapia

+0

gatapia, ¿ha publicado esa capa de abstracción para la comunidad? –

+4

@Peder Rice, sí, en realidad tengo: [aquí] (https://github.com/PicNet/picnet_closure_repo/tree/master/src/pn/data) – gatapia

Respuesta

3

me gustaría ir a por hecho localStorage (a.o.). Escribí una pequeña prueba del concepto de una aplicación web sin conexión a principios de este año (cfr. this blogpost y offline-enabled webapp here), siendo el enfoque básico;

  • datos puestos en matrices/objetos
  • estándar uso javascript funciones para hacer CRUD (o van para jlinq)
  • JSON-Ify la matriz/objeto para el almacenamiento
  • utilizar una biblioteca de almacenamiento de abstracción como persistjs para almacenar/recuperar matriz/objeto json-ified
+1

La idea de tener que ordenar/a cadena/JSON cada El momento en que se requiere una actualización de la base de datos es realmente desagradable. Y puede estar bien para un databsae muy pequeño, pero esto caerá rápidamente con un gran conjunto de datos. No me gusta esto, sin embargo, puede que tenga razón y este sea el enfoque más compatible y estoy seguro de que se puede tomar un enfoque de "segmentación" para mejorar el rendimiento, pero ¿por qué FireFox tiene que hacer mi vida tan difícil? !!!!! – gatapia

+1

tiene toda la razón, esta es una solución fea, pero por lo que sé, no hay una verdadera alternativa por el momento. algunos misc. Bits: * No se trataba sólo de Mozilla que se opuso a WEBDB, ms no querían poner en práctica ya sea sqlite * MS & Mozilla, los promotores originales, implementarán indexdb * ópera expresó interés en indexdb y, por lo probablemente también seguirán * los chicos de cromo están trabajando en indexdb (http://www.chromium.org/developers/design-documents/indexeddb) así que parece seguro asumir que terminará en chrome (y quizás safari, ya que habrá mucho trabajo en el webkit) – futtta

0

Sé que esto es un poco tarde, pero para futuros proyectos puede probar SequelSphere.

Es nuevo en el mercado, pero debería cubrir este tipo de proyecto. Es un motor de base de datos relacional HTML5 que admite SQL y almacena sus datos en almacenamiento local. No utiliza bases de datos WebSQL, sino que es su propio motor SQL. Como tal, funcionará en cualquier navegador compatible con JavaScript (una de sus principales preocupaciones). Sin embargo, actualmente solo admite Almacenamiento local como un mecanismo de persistencia, por lo que el tamaño puede ser un problema para usted. Esperaría que SequelSphere vincule eventualmente otros motores de persistencia locales como engranajes y flash, pero eso no está disponible de inmediato.

Para una divulgación plena: Estoy relacionado con la empresa SequelSphere. :)