4 puntos por xguru 2023-07-07 | 1 comentarios | Compartir por WhatsApp
  • Un sistema que almacena la base de datos SQLite en almacenamiento en la nube y permite leer y escribir sin descargar toda la base de datos
    • Actualmente es compatible con Azure Blob Storage y Google Cloud Storage
  • Usa el módulo VFS Block Cache: funciona en modo sin daemon (lectura/escritura) y en modo daemon (solo lectura)

Lo que GN⁺ resumió

  • El sistema "Cloud Backed SQLite" (CBS) almacena la base de datos en una cuenta de almacenamiento en la nube y permite que los clientes de almacenamiento accedan a ella sin descargar toda la base de datos.
  • Varios clientes pueden acceder a la base de datos al mismo tiempo, pero solo un cliente puede escribir en ella.
  • Actualmente CBS es compatible con Azure Blob Storage y Google Cloud Storage, y también podría admitir otros sistemas de almacenamiento en la nube.
  • La base de datos SQLite se divide en bloques de tamaño fijo y se almacena en el sistema de almacenamiento en la nube.
  • Este sistema está compuesto por elementos básicos para administrar contenedores de almacenamiento en la nube, un proceso daemon que brinda acceso local a bases de datos remotas y un módulo VFS para acceder a la base de datos en la nube.
  • Para usar CBS, la aplicación debe compilar y enlazar los archivos C y los archivos de encabezado necesarios, y enlazar con libcurl y openssl.
  • El sistema puede probarse con una suite de pruebas automatizada.
  • La base de datos puede subirse a la cuenta de almacenamiento en la nube usando una herramienta de línea de comandos.
  • Para acceder a una base de datos almacenada en la nube, hay que crear el VFS, conectar el contenedor, abrir el manejador de la base de datos y ejecutar scripts SQL.
  • El sistema ofrece una API para dar soporte a nuevos sistemas de almacenamiento en la nube e implementar tablas virtuales.
  • Este artículo analiza el uso de contenedores seguros en sistemas de almacenamiento en la nube.
  • Los contenedores pueden conectarse de forma segura o insegura, y la conexión segura cifra los datos usando AES OFB.
  • El cliente local necesita credenciales válidas del almacenamiento en la nube para obtener la clave de cifrado desde el proceso daemon.
  • Este artículo menciona los módulos integrados "azure" y "google" para sistemas de almacenamiento en la nube.
  • La API de CBS y la herramienta de línea de comandos requieren la especificación del módulo, el nombre de usuario y el valor de autenticación.
  • Este artículo proporciona detalles del módulo "azure" y cómo generar tokens SAS para la autenticación.
  • El módulo "google" requiere un ID de proyecto y un token de acceso para conectar CBS a Google Cloud Storage.
  • Este artículo menciona el acceso concurrente desde varios clientes y la necesidad de sondear el contenedor para detectar cambios.
  • Blockcachevfs admite tres sentencias PRAGMA: bcv_upload, bcv_poll y bcv_client.
  • La interfaz de tablas virtuales está compuesta por las tablas bcv_container y bcv_database.
  • La tabla bcv_container contiene información sobre los contenedores conectados, y la tabla bcv_database contiene información sobre las bases de datos de cada contenedor.
  • Este artículo analiza la estructura y la función de varias tablas de la base de datos blockcachevfs.
  • La tabla "bcv_database" contiene información sobre cambios locales realizados en la base de datos.
  • La tabla "bcv_http_log" registra las solicitudes HTTP realizadas por el VFS o por el daemon conectado.
  • La tabla "bcv_kv" permite que la aplicación escriba datos en el contenedor de almacenamiento en la nube.
  • La tabla "bcv_kv_meta" ofrece acceso de solo lectura a los encabezados HTTP del servidor de almacenamiento en la nube.
  • Este artículo también ofrece una referencia de línea de comandos para varias operaciones en la base de datos blockcachevfs.
  • El comando del daemon permite que el proceso blockcachevfsd se ejecute como servidor y acepte conexiones de clientes.
  • El proceso daemon admite varias opciones de configuración y registro.

1 comentarios

 
GN⁺ 2023-07-07
Opiniones en Hacker News
  • Un desarrollador comparte su experiencia sirviendo una base de datos SQLite a gran escala en fragmentos y consultándola mediante solicitudes de rango HTTP
  • Se menciona una biblioteca llamada sql.js-httpvfs que ayuda con este proceso
  • El desarrollador dividió una base de datos SQLite de 350 MB en pequeñas partes y la subió a GitHub
  • Recomienda revisar el proyecto y probarlo en la consola y en la pestaña de red
  • Otro comentarista plantea preocupaciones sobre la coherencia de caché, la concurrencia, las interrupciones de red y los problemas de autenticación al usar un almacenamiento de datos remoto
  • Sugiere una solución más simple: copiar periódicamente la base de datos a un sistema de archivos tmpfs y copiarla al almacenamiento de objetos
  • Destaca ventajas como resolución de problemas, copias de archivos baratas y rápidas, ausencia de demonios externos, bloqueo global simple, seguridad de hilos, sin interrupciones de red y autenticación externa
  • Otro comentarista cuestiona por qué desplegar SQLite, una base de datos embebida, en un servicio en la nube cuando PostgreSQL ya resuelve el mismo problema
  • Sostiene que mover el almacenamiento a la nube degradará la latencia y la simplicidad
  • Otro comentarista pregunta si existe un comando equivalente a pg_dump y mysqldump para SQLite
  • Se menciona que el sistema actualmente admite Azure Blob Storage y Google Cloud Storage, y que AWS podría quedar fuera
  • Otro comentarista no está seguro de si esta función está soportada oficialmente o si es una situación de "técnicamente es posible"
  • Se pregunta si es posible ejecutar Datasette sobre almacenamiento externo en la nube
  • Otro comentarista expresa preocupación sobre cómo garantizar que solo un cliente escriba en la base de datos a la vez
  • Se menciona que la capa VFS de SQLite es flexible y fácil de usar para implementar almacenamiento de objetos en la nube
  • Se señala que el caché podría ser un aspecto complicado de la implementación
  • Otro comentarista se muestra confundido por la idea de usar SQLite en la nube en lugar de otra base de datos relacional, ya que SQLite fue diseñada originalmente para uso local.