I progetti CBS e sqld sviluppano opzioni cloud e server per SQLite

Gli sviluppatori di SQLite stanno portando avanti un modulo VFS sperimentale, CBS (Cloud Backed SQLite), che consente di archiviare il contenuto del database non in un file locale, ma in uno storage cloud esterno. Utilizza un formato di database appositamente ottimizzato per l'archiviazione esterna, che permette di caricare i dati dinamicamente dallo storage esterno secondo necessità, senza dover copiare preventivamente l'intero DB sul sistema locale. Attualmente sono supportati gli storage cloud di Azure Blob Storage e Google Cloud Storage. Qualsiasi applicazione che supporta l'uso di SQLite standard può essere convertita per utilizzare CBS.

Il modulo VFS può operare in modalità background e attiva. In modalità background, è presente un processo in background nel sistema che consente l'accesso a un database esterno solo in modalità lettura, ma supporta una cache condivisa accessibile da diversi processi. In modalità attiva, sono consentite lettura e scrittura, ma viene utilizzata solo la cache locale del processo corrente. In ogni momento, solo un cliente può eseguire operazioni di scrittura, mentre gli altri clienti non vedranno le modifiche registrate fino a quando non le richiederanno esplicitamente dallo storage cloud. Per separare le diverse richieste di scrittura, viene utilizzato un sistema di blocco tipico di SQLite basato su log WAL.

Agli sviluppatori viene fornita una API C avanzata e un'interfaccia a riga di comando che consentono di eseguire operazioni come la creazione e la pulizia di uno storage esterno, il caricamento e il download di database in/dallo storage esterno, la creazione di una copia del database nello storage esterno, la visualizzazione dell'elenco dei database nello storage cloud e la rimozione di blocchi non utilizzati dallo storage cloud.

I programmatori del progetto libSQL (un fork avanzato di SQLite) hanno annunciato una versione server di SQLite - sqld, che consente di organizzare il funzionamento di un database condiviso, con i client connessi tramite protocollo PostgreSQL o HTTP. Ad esempio, per connettersi a sqld possono essere utilizzate le librerie client esistenti create per i database PostgreSQL, incluso, tra l'altro, l'interfaccia CLI psql. Si può anche accedere al server sqld tramite un'API basata sul protocollo HTTP, semplificando l'integrazione con le applicazioni web. Il codice di sqld è scritto in Rust e distribuito con licenza MIT.

Le aree di applicazione di sqld includono backup, replica su altri sistemi e organizzazione dell'accesso al database SQLite in infrastrutture serverless, dove non è presente uno storage permanente e non è possibile mantenere un database in un file locale. Nei sistemi serverless, il database con cui lavora sqld può essere replicato da altri. server. Per garantire alta disponibilità e resilienza ai guasti, è supportata l'integrazione con mvSQLite (una versione distribuita di SQLite che funziona su FoundationDB). È disponibile una modalità di mantenimento di una copia di backup attiva, implementata attraverso il salvataggio periodico di snapshot dello stato del database e la replica delle modifiche dal WAL log in uno storage cloud compatibile con Amazon S3.

Per le applicazioni è disponibile una libreria compatibile con SQLite, che può essere caricata tramite LD_PRELOAD per passare dallo storage locale a un'operazione tramite sqld. È possibile caricare estensioni per SQLite. Le librerie client sono pronte per TypeScript, JavaScript, Rust, Go e Python. È possibile lavorare simultaneamente con un database C collegato a sqld utilizzando gli strumenti standard di SQLite, il che significa che sqld funge da strato intermedio per fornire accesso di rete al DB, replica e backup. Ad esempio: # Avviamo il server per il database SQLite foo.db: sqld -d foo.db -p 127.0.0.1:5432 —http-listen-addr=127.0.0.1:8000 # Accediamo al database tramite strumenti PostgreSQL: psql -q postgres://127.0.0.1 # Ci connettiamo localmente al database tramite strumenti SQLite: sqlite3 foo.db # Accediamo tramite HTTP: curl -s -d "{\"statements\": [\"SELECT * from databases;\"]}" \ http://127.0.0.1:8000

In conclusione, si può menzionare il progetto LiteFS, sviluppato da Fly.io. LiteFS è un modulo FUSE per gestire un'unica base di dati SQLite su più host. LiteFS replica lo stato del database tra diversi sistemi intercettando le operazioni di scrittura nel file del database e traducendo queste operazioni su altri sistemi, utilizzando un meccanismo simile alle transazioni e salvando le transazioni in un file separato in formato LTX. Il codice di LiteFS è scritto in Go ed è distribuito sotto licenza Apache 2.0.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster