Es importante elegir los mecanismos de almacenamiento correctos, tanto para el almacenamiento local de dispositivos como para el almacenamiento de servidor basado en la nube. Un buen motor de almacenamiento se asegura de que tu información se guarde de manera confiable, reduce el ancho de banda y mejora la capacidad de respuesta. La estrategia adecuada de almacenamiento en caché es un componente fundamental para habilitar las experiencias de la Web móvil sin conexión.
En este artículo, se proporciona una base breve para evaluar las APIs y los servicios de almacenamiento, después de lo cual proporcionaremos una tabla de comparación y algunas instrucciones generales. En un futuro cercano, planeamos agregar recursos para comprender temas de almacenamiento seleccionados en mayor profundidad.
Taxonomía de almacenamiento
Comencemos por entender algunas de las dimensiones que sirven para analizar el almacenamiento de datos de las apps web. Más adelante, usaremos este framework para enumerar y evaluar las diversas opciones de almacenamiento disponibles para los desarrolladores web.
Modelo de datos
El modelo para almacenar unidades de datos determina cómo se organizan los datos de forma interna, lo que afecta la facilidad de uso, el costo y el rendimiento de las solicitudes de almacenamiento y recuperación.
Estructurados: los datos almacenados en tablas con campos predefinidos, como es común en los sistemas de administración de bases de datos basados en SQL, se prestan bien a las consultas flexibles y dinámicas, en las que el rango completo de tipos de consulta puede no conocerse como prioridad. Un ejemplo destacado de un almacén de datos estructurado en el navegador es IndexedDB.
Clave/valor: Los almacenes de datos clave-valor y las bases de datos NoSQL relacionadas ofrecen la capacidad de almacenar y recuperar datos no estructurados indexados por una clave única. Los almacenes de datos clave-valor son como tablas hash, ya que permiten un acceso constante a datos opacos y indexados. Algunos ejemplos destacados de almacenes de datos clave-valor son la API de caché en el navegador y Apache Cassandra en el servidor.
Flujos de bytes: Este modelo simple almacena datos como una string opaca y de longitud variable de bytes, lo que deja a la capa de aplicación cualquier forma de organización interna. Este modelo es particularmente bueno para sistemas de archivos y otros BLOB de datos organizados de forma jerárquica. Entre los ejemplos destacados de este tipo de almacenes se incluyen los sistemas de archivos y los servicios de Cloud Storage.
Persistencia
Los métodos de almacenamiento de las apps web se pueden analizar de acuerdo con el alcance sobre el que los datos son persistentes.
Persistencia de la sesión: los datos de esta categoría se conservan solo mientras una sesión web o pestaña del navegador permanezca activa. Un ejemplo de un mecanismo de almacenamiento con persistencia de sesión es la API de Session Storage.
Persistencia del dispositivo: Los datos de esta categoría se retienen en todas las sesiones y en las pestañas o ventanas del navegador, dentro de un dispositivo en particular. Un ejemplo de un mecanismo de almacenamiento con persistencia de dispositivo es la API de Cache.
Persistencia global: Los datos de esta categoría se conservan entre sesiones y dispositivos. Por eso, es la forma más sólida de persistencia de datos. Un ejemplo de un mecanismo de almacenamiento con persistencia global es Google Cloud Storage.
Navegadores compatibles
Los desarrolladores deben elegir la API que mejor se adapte a su dominio de problema. Sin embargo, también deben tener en cuenta que las API estandarizadas y bien establecidas son preferibles a las interfaces personalizadas o de propiedad, ya que tienden a durar más tiempo y tienen una compatibilidad más amplia. Es posible que también disfruten de una base de conocimiento más amplia y un ecosistema de desarrolladores más completo.
Transacciones
A menudo, es importante que una colección de operaciones de almacenamiento relacionadas se realice correctamente o falle de forma atómica. Tradicionalmente, los sistemas de administración de bases de datos admiten esta función mediante el modelo de transacción, en el que las actualizaciones relacionadas se pueden agrupar en unidades arbitrarias. Si bien no siempre es necesaria, esta es una función conveniente y, a veces, esencial para algunos dominios de problemas.
Sincrónico o asíncrono
Algunas APIs de almacenamiento son síncronas, ya que las solicitudes de almacenamiento o recuperación bloquean el subproceso activo hasta que se completa la solicitud. Esto es particularmente molesto en los navegadores web, en los que la solicitud de almacenamiento comparte el subproceso principal con la IU. Por razones de eficiencia y rendimiento, se prefieren las APIs de almacenamiento asíncrona.
Cómo depurar el almacenamiento en las Herramientas para desarrolladores de Chrome
Consulta los siguientes documentos si quieres obtener más información sobre el uso de las Herramientas para desarrolladores de Chrome a fin de inspeccionar y depurar la API de almacenamiento web que elijas. Las APIs que no se mencionan aquí no son compatibles con Herramientas para desarrolladores o no son aplicables.
Si usas varias APIs de almacenamiento, consulta la función Borrar almacenamiento de DevTools. Esta función te permite borrar varias tiendas con un solo clic. Consulta Borra los service workers, el almacenamiento, las bases de datos y las memorias caché para obtener más información.
Próximos pasos
Ahora que revisamos algunas de las formas relevantes de pensar en los mecanismos de almacenamiento y comparamos las APIs y los servicios más populares disponibles en la actualidad, pronto agregaremos más contenido para ahondar en uno o más temas de interés: