De projecten CBS en sqld ontwikkelen cloud- en serveropties voor SQLite.

De ontwikkelaars van SQLite ontwikkelen een experimentele VFS-module CBS (Cloud Backed SQLite), waarmee het mogelijk is om de inhoud van de database niet in een lokaal bestand, maar in een externe cloudopslag op te slaan. Voor de opslag wordt een speciaal geoptimaliseerd formaat voor externe opslag gebruikt, waarmee gegevens dynamisch vanuit de externe opslag kunnen worden geladen, zodra dat nodig is, zonder dat de hele database vooraf naar het lokale systeem hoeft te worden gekopieerd. Momenteel worden Azure Blob Storage en Google Cloud Storage ondersteund voor cloudopslag. Elke toepassing die werkt met reguliere SQLite kan overstappen naar CBS.

De VFS-module kan in zowel een achtergrond- als actieve modus werken. In de achtergrondmodus draait er voortdurend een achtergrondproces dat toegang tot de externe database alleen in leesmodus mogelijk maakt, maar een gezamenlijke cache ondersteunt waar verschillende processen gezamenlijk gebruik van kunnen maken. In de actieve modus zijn zowel lezen als schrijven toegestaan, maar alleen de lokale cache van het huidige proces wordt gebruikt. Op elk moment kan slechts ƩƩn cliƫnt schrijven, en andere cliƫnten zien de aangebrachte wijzigingen niet totdat ze expliciet om deze opvragen uit de cloudopslag. Voor het scheiden van verschillende schrijfverzoeken wordt het typische vergrendelingssysteem van SQLite op basis van het WAL-logboek gebruikt.

Ontwikkelaars krijgen een uitgebreide C API en een opdrachtregelinterface waarmee ze taken kunnen uitvoeren zoals het aanmaken en wissen van externe opslag, het laden en ontladen van databases naar/van externe opslag, het maken van een kopie van de database in de externe opslag, het bekijken van de lijst van databases in de cloudopslag en het verwijderen van ongebruikte blokken uit de cloudopslag.

Separaat hebben de ontwikkelaars van het libSQL-project (een uitgebreide fork van SQLite) een serverversie van SQLite aangekondigd — sqld, die het mogelijk maakt om samenwerkende databasesystemen op te zetten, waarbij het aansluiten van cliĆ«nten gebeurt via het gebruik van het PostgreSQL- of HTTP-protocol. Bijvoorbeeld, bestaande klantbibliotheken die zijn gemaakt voor PostgreSQL kunnen worden gebruikt om verbinding te maken met sqld, inclusief de CLI-interface psql. De sqld-server kan ook worden benaderd via een HTTP-gebaseerde API, wat de integratie met webapplicaties vereenvoudigt. De code van sqld is geschreven in de programmeertaal Rust en wordt verspreid onder de MIT-licentie.

De toepassingsgebieden van sqld omvatten back-up, replicatie naar andere systemen en het organiseren van toegang tot de SQlite-database in serverless infrastructuren, waar geen permanente opslag beschikbaar is en het niet mogelijk is om een database in een lokaal bestand te beheren. In serverless systemen kan de database waarmee sqld werkt, worden gerepliceerd vanaf andere. servers. Voor hoge beschikbaarheid en fouttolerantie wordt integratie met mvSQLite ondersteund (een gedistribueerde variant van SQLite die bovenop FoundationDB werkt). Er is een modus voor het behouden van een actieve back-up, gerealiseerd door periodieke snapshots van de databasestatus op te slaan en wijzigingen uit de WAL-log naar cloudopslag te repliceren die compatibel is met Amazon S3.

Voor applicaties is er een bibliotheek beschikbaar die compatibel is met SQLite en die via LD_PRELOAD kan worden geladen om over te schakelen van gegevensopslag in een lokaal bestand naar het gebruik van sqld. Het is mogelijk om extensies voor SQLite te laden. Cliƫntbibliotheken zijn voorbereid voor TypeScript, JavaScript, Rust, Go en Python. Met een database die aan sqld is verbonden, kan tegelijkertijd worden gewerkt met de standaard SQLite-tools, d.w.z. sqld fungeert als een laag voor het bieden van netwerktoegang tot de database, replicatie en back-up. Bijvoorbeeld: # Start de server voor SQLite-database foo.db: sqld -d foo.db -p 127.0.0.1:5432 --http-listen-addr=127.0.0.1:8000 # Toegang tot de database met PostgreSQL-tools: psql -q postgres://127.0.0.1 # Lokale verbinding met de database met SQLite-tools: sqlite3 foo.db # Toegang via HTTP: curl -s -d '{"statements": ["SELECT * from databases;"]}' http://127.0.0.1:8000

Ten slotte kan het LiteFS-project worden genoemd, ontwikkeld door Fly.io. LiteFS is een FUSE-module voor het werken met ƩƩn gedeelde SQLite-database op meerdere hosts. LiteFS replicates de staat van de database tussen verschillende systemen door schrijfoperaties naar het databasebestand te onderscheppen en deze operaties naar andere systemen te vertalen, met behulp van een soort transactiemechanisme en het opslaan van transacties in een apart bestand in LTX-indeling. De code van LiteFS is geschreven in Go en wordt verspreid onder de Apache 2.0-licentie.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster