4 points par xguru 2023-07-07 | 1 commentaires | Partager sur WhatsApp
  • Système qui permet de stocker une base de données SQLite dans un stockage cloud et d’y lire/écrire sans télécharger l’intégralité de la base de données
    • Prend actuellement en charge Azure Blob Storage et Google Cloud Storage
  • Utilise le module VFS Block Cache : fonctionne en mode sans daemon (lecture/écriture) et en mode daemon (lecture seule)

Ce que GN⁺ a résumé

  • Le système « Cloud Backed SQLite » (CBS) stocke la base de données dans un compte de stockage cloud et permet aux clients de stockage d’y accéder sans télécharger l’intégralité de la base.
  • Plusieurs clients peuvent accéder simultanément à la base de données, mais un seul client peut y écrire.
  • CBS prend actuellement en charge Azure Blob Storage et Google Cloud Storage, et pourrait aussi prendre en charge d’autres systèmes de stockage cloud.
  • La base de données SQLite est découpée en blocs de taille fixe puis stockée dans le système de stockage cloud.
  • Le système se compose d’éléments de base pour gérer les conteneurs de stockage cloud, d’un processus daemon fournissant un accès local à une base distante, et d’un module VFS pour accéder à la base cloud.
  • Pour utiliser CBS, l’application doit compiler et lier les fichiers C et en-têtes nécessaires, ainsi que lier libcurl et openssl.
  • Le système peut être testé à l’aide d’une suite de tests automatisée.
  • Les bases de données peuvent être téléversées vers un compte de stockage cloud à l’aide d’outils en ligne de commande.
  • Pour accéder à une base stockée dans le cloud, il faut créer un VFS, connecter un conteneur, ouvrir le handle de base de données et exécuter les scripts SQL.
  • Le système fournit une API pour prendre en charge de nouveaux systèmes de stockage cloud et implémenter des tables virtuelles.
  • Cet article aborde l’utilisation de conteneurs sécurisés dans les systèmes de stockage cloud.
  • Les conteneurs peuvent être connectés de manière sécurisée ou non sécurisée ; les connexions sécurisées chiffrent les données avec AES OFB.
  • Le client local doit disposer d’identifiants valides pour le stockage cloud afin d’obtenir la clé de chiffrement auprès du processus daemon.
  • L’article mentionne les modules intégrés azure et google pour les systèmes de stockage cloud.
  • L’API CBS et les outils en ligne de commande requièrent une spécification de module, un nom d’utilisateur et une valeur d’authentification.
  • L’article fournit des détails sur le module azure ainsi que sur la manière de générer un jeton SAS pour l’authentification.
  • Le module google requiert un ID de projet et un jeton d’accès pour connecter CBS à Google Cloud Storage.
  • L’article mentionne l’accès concurrent depuis plusieurs clients et la nécessité d’interroger régulièrement le conteneur pour détecter les changements.
  • Blockcachevfs prend en charge trois instructions PRAGMA : bcv_upload, bcv_poll et bcv_client.
  • L’interface de table virtuelle se compose des tables bcv_container et bcv_database.
  • La table bcv_container contient des informations sur les conteneurs connectés, et la table bcv_database contient des informations sur les bases de données de chaque conteneur.
  • L’article traite de la structure et des fonctions des différentes tables de la base de données blockcachevfs.
  • La table bcv_database contient des informations sur les modifications locales apportées à la base de données.
  • La table bcv_http_log enregistre les requêtes HTTP effectuées par le VFS ou le daemon connecté.
  • La table bcv_kv permet à l’application d’écrire des données dans le conteneur de stockage cloud.
  • La table bcv_kv_meta fournit un accès en lecture seule aux en-têtes HTTP du serveur de stockage cloud.
  • L’article fournit également une référence en ligne de commande pour diverses opérations dans la base de données blockcachevfs.
  • La commande daemon permet au processus blockcachevfsd de s’exécuter comme serveur et d’accepter les connexions des clients.
  • Le processus daemon prend en charge diverses options de configuration et de journalisation.

1 commentaires

 
GN⁺ 2023-07-07
Avis sur Hacker News
  • Partage d’expérience d’un développeur sur la manière de servir une grande base de données SQLite par morceaux et de l’interroger via des requêtes HTTP de plage
  • Mention d’une bibliothèque, sql.js-httpvfs, qui aide à ce processus
  • Le développeur a découpé une base de données SQLite de 350 Mo en petits fragments puis les a téléversés sur GitHub
  • Il recommande de consulter le projet et de le tester dans la console et l’onglet réseau
  • Un autre commentateur soulève des inquiétudes concernant la cohérence du cache, la concurrence, les coupures réseau et les problèmes d’authentification lors de l’utilisation d’un stockage de données distant
  • Il propose une solution plus simple consistant à copier périodiquement la base de données dans un système de fichiers tmpfs, puis à la copier vers un stockage objet
  • Il met en avant des avantages comme la résolution du problème, des copies de fichiers peu coûteuses et rapides, l’absence de démon externe, un verrou global simple, la sûreté des threads, l’absence de coupure réseau et l’authentification externe
  • Un autre commentateur se demande pourquoi déployer dans un service cloud SQLite, une base de données embarquée, alors que PostgreSQL résout déjà ce même problème
  • Il affirme qu’en déplaçant le stockage vers le cloud, on perdra en latence et en simplicité
  • Un autre commentateur demande s’il existe pour SQLite une commande équivalente à pg_dump et mysqldump
  • Il est mentionné que le système prend actuellement en charge Azure Blob Storage et Google Cloud Storage, et qu’AWS pourrait être exclu
  • Un autre commentateur n’est pas certain qu’il s’agisse d’une fonctionnalité officiellement prise en charge ou simplement d’un cas de « techniquement possible »
  • Il se demande s’il est possible d’exécuter Datasette avec un stockage cloud externe
  • Un autre commentateur exprime des inquiétudes quant à la garantie qu’un seul client à la fois puisse écrire dans la base de données
  • Il est mentionné que la couche VFS de SQLite est suffisamment flexible et facile à utiliser pour implémenter un stockage objet cloud
  • Il est indiqué que la mise en cache peut être l’aspect délicat de l’implémentation
  • Un autre commentateur se dit perplexe face à l’idée d’utiliser SQLite dans le cloud au lieu d’une autre base de données relationnelle, puisque SQLite a été conçu à l’origine pour un usage local.