localstorage - local database javascript
Almacenamiento del lado del cliente que se puede consultar (4)
¿Has probado mi biblioteca de código abierto https://bitbucket.org/ytkyaw/ydn-db/wiki/Home ? Es compatible con IndexedDB, WebSQL y localStorage. La consulta es estilo NoSQL, es decir, consulta de rango de clave base de índice. La consulta de índice múltiple requiere el uso de un índice compuesto o un algoritmo de unión de clave. Actualmente hay una interfaz de consulta básica a SQL, que será mejor con el tiempo.
Las aplicaciones web a gran escala, la mayoría de ellas son CRM, utilizan la biblioteca en producción.
¿Qué soluciones existen para los almacenes de datos del lado del cliente que se puedan consultar? Esto se usaría como un caché temporal para realizar operaciones básicas como la clasificación y la agregación en intervalos de fechas seleccionados por el usuario en el cliente
He encontrado algunos candidatos prometedores, pero no estoy seguro de cuáles son las mejores opciones
- Lawnchair: interfaz para varias tiendas de adaptadores, tiene consultas y agregados implementados como complementos http://brian.io/lawnchair/
- TaffyDB: http://www.taffydb.com/
- LocalstorageDB: localstorage consultable github.com/knadh/localStorageDB
- Minimongo: implementación de mongo efímero, utilizada como caché para Meteor ( http://docs.meteor.com/#meteor_collection )
También hay otras opciones menos óptimas:
- HTML5 localstorage / sessionstorage (necesita construir una capa de consulta sobre esto ... como lawnchair o localstoragedb)
- IndexedDB (compatibilidad del navegador)
- Engranajes de Google (descontinuado)
- WebSQL (especificación detenida)
Tengo curiosidad por conocer sus experiencias con estas opciones / si hay otras que me he perdido.
He escrito dos API simples para tratar con la API de almacenamiento. Uno de ellos es un contenedor para facilitar el trabajo con el almacenamiento local y de sesión: https://github.com/chambs/minidb/
Algo como:
minidb.local.set(''name'', ''Willian'');
minidb.local.get(''name''); //gives you "Willian"
minidb.session.set(''userData'', {id:333, name: ''Joseph''});
minidb.session.get(''userData''); //gives that object
El otro es un espacio de nombres basado solo para la API localStorage (sin sesión). Básicamente, puede agregar "filas" agrupadas en espacios de nombres, de modo que pueda separar los datos según estos espacios de nombres: https://github.com/chambs/zonjs
Algo como:
zon(''user'').insert({name: ''Willian'', email: ''[email protected]''});
zon(''user'').del(''8739874397494'');
Donde ''usuario'' es el espacio de nombres que ha definido. Es posible tener tantos espacios de nombres como desee para el mismo origen / dominio
Espero eso ayude :)
He utilizado la silla de jardín para herramientas internas de una pequeña pareja donde trabajo y la experiencia ha sido muy positiva en general.
Algo que aprendí en el proceso: el ciclo JSON-js-js de Douglas Crockford resolvió mis problemas de ordenamiento cuando realizaba la operación de guardar / obtener en objetos con doble enlace.
Alguien publicó un problema en el repositorio de github de la silla de jardín que describe el mismo problema y me ahorró muchos dolores de cabeza. https://github.com/brianleroux/lawnchair/issues/105