Necesito una base de datos del navegador del lado del cliente. Cuáles son mis opciones

Estoy creando un sitio web que creo que debe tener una base de datos del lado del cliente. La otra opción sería pegar todo en el servidor a expensas de una mayor complejidad y una menor escalabilidad. ¿Que opciones tengo? ¿Debo crear un plugin? ¿Debo esperar hasta que todos cumplan con HTML5?


Actualización Ha habido muchos comentarios sobre por qué realmente necesitaría esto. Aquí están mis pensamientos Dime si estoy siendo tonto:

  • Los clientes tendrán un estado grande y complejo que requerirá algo así como una base de datos para proporcionar la interacción de datos que necesito. Por lo tanto (creo) las cookies están fuera de la imagen.
  • Esta información es transitoria, por lo que al cliente no le importará si se borra tan pronto como cierre una sesión. Sin embargo, necesitarán conservar los datos si van a una página web diferente y luego regresan. Por lo tanto (creo) de alguna manera, almacenar los datos en algún tipo de implementación de SQL de JavaScript no funcionará.
  • Ciertamente puedo hacer todo lo que quiero hacer en el servidor, y los servidores pueden escalar para administrar la carga (Facebook). Pero (creo) Prefiero construir un complemento que pagar por la infraestructura para soportar esta carga. Esto es para un inicio barebone. (Mientras más rica sea la startup, más inseguro estarán mis huesos).

Base de datos indexada ( ¿Puedo usar )
Web SQL ( ¿Puedo usar )
almacenamiento local

Si siente que lo necesita, utilícelo para los clientes que lo respaldan e implemente un respaldo del lado del servidor para los clientes que no lo necesitan.

Una alternativa es usar Flash y Objetos locales compartidos que pueden almacenar mucha más información que una cookie, funcionarán en todos los navegadores con Flash (que en su mayoría son todos los navegadores) y almacenan datos escritos. No tiene que hacer toda la aplicación en Flash, solo puede escribir una pequeña utilidad para leer / escribir datos LSO. Esto puede hacerse utilizando proyectos de ActionScript correctos sin ningún marco y le dará un pequeño swf de 5-15kb.

Hay dos API que necesitarás principalmente. SharedObject.getLocal() para obtener acceso a un LSO y leer / escribir sus datos, y ExternalInterface.addCallback que puede usar para registrar un método AS3 como callback para llamar a su método LSO de lectura / escritura.

SharedObject

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html?filter_flex=4.1&filter_flashplayer=10.1&filter_air=2

Interfaz externa

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

Estos enlaces son para referencias Flex, pero para esto puede simplemente crear un proyecto de ActionScript sin necesidad del marco Flex y, por lo tanto, reducir en gran medida el tamaño del swf. Hay varios IDE buenos, incluidos los de código abierto gratuitos como FlashDevelop.

FlashDevelop

http://www.flashdevelop.org/

Tengo unos 5 años de retraso en responder a esto, pero dado que hay errores y datos desactualizados en algunas de las respuestas existentes, y puntos no tratados en la pregunta original, pensé que podría aportar mis dos centavos.

Primero, al contrario de lo que otros han implicado aquí, localStorage no es una base de datos. Es (o debería ser percibido como) un almacén de clave-valor persistente, basado en cadenas …

… que puede estar perfectamente bien para tus necesidades (y me lleva a mi segundo punto).

  • ¿Necesita relaciones explícitas o implícitas entre sus elementos de datos?
  • ¿Qué hay de la capacidad de consultar sobre dichos artículos?
  • O más de 5 MB en el espacio?

Si respondió “no” a todo lo anterior, vaya a localStorage y salve de los dolores de cabeza que son las API de WebSQL e IndexedDB. Bueno, tal vez solo el último dolor de cabeza, ya que el primero ha sido desaprobado .

También hay varias otras instalaciones de almacenamiento del lado del cliente (nativas y no nativas) a las que puede acudir, algunas de las cuales están en desuso * pero todavía ven soporte de algunos navegadores:

  • datos del usuario*
  • El rest de webStorage ( sessionStorage y globalStorage * )
  • Sistema de archivos HTML5 *
  • Destellar objetos localmente compartidos
  • Almacenamiento aislado Silverlight

Consulte BakedGoods si desea utilizar cualquiera de estas instalaciones, y más, sin tener que escribir código de operación de almacenamiento de bajo nivel. Con esto, colocar los datos en uno (o más) de ellos, por ejemplo, es tan simple como:

 bakedGoods.set({ data: [{key: "key1", value: "val1"}, {key: "key2", value: "val2"}], storageTypes: ["silverlight", "fileSystem", "localStorage"], options: optionsObj, complete: function(byStorageTypeStoredKeysObj, byStorageTypeErrorObj){} }); 

Ah, y por el bien de la transparencia completa, BakedGoods es mantenido por este tipo justo aquí :).

Me encontré con una base de datos de JavaScript http://www.taffydb.com/ aún la estoy probando, espero que esto ayude.

Si está buscando un db estilo NoSQL en el cliente, puede consultar http://www.forerunnerdb.com . Admite el mismo lenguaje de consulta que MongoDB y tiene un módulo de enlace de datos si desea que su DOM refleje cambios en sus datos automáticamente.

También es de código abierto, se actualiza constantemente con nuevas características y la comunidad que lo rodea está creciendo rápidamente.

Descargo de responsabilidad, soy el desarrollador principal del proyecto.

Verifique el almacenamiento local HTML5:

http://people.w3.org/mike/localstorage.html

También puede encontrar esto útil: almacenamiento de base de datos HTML5 (SQL lite): algunas preguntas

Cuando salió Windows 98 por primera vez, todavía había muchos de nosotros atascados en MS-DOS 6.22. Naturalmente, había funciones geniales en el nuevo sistema operativo que no se ejecutarían en MS-DOS.

Llega un momento en que algunas cosas deben dejarse atrás para dejar lugar a la innovación. Si su aplicación es realmente innovadora y ofrecerá una nueva funcionalidad que utiliza las últimas y mejores tecnologías, naturalmente, habrá que dejar atrás algunos navegadores más antiguos.

La ventaja que tiene es que, a diferencia de actualizar un sistema operativo, la actualización de IE7 a Chrome 8 o Firefox 3.6 es un objective más alcanzable para el usuario promedio de su aplicación, especialmente si proporciona un enlace y las instrucciones de actualización.

Probaría localForage de Mozilla. https://mozilla.github.io/localForage/

Use PouchDB .

Ayuda a crear aplicaciones que funcionen tanto en línea como fuera de línea.

Básicamente, almacena los últimos datos obtenidos en la base de datos del navegador (utiliza IndexedDB, WebSQL en el capó) y luego se sincroniza nuevamente cuando la red se activa.

    Intereting Posts