Проектите CBS и sqld развиват облачни и сървърни варианти на SQLite

Разработчиците на SQLite развиват експериментален VFS модул CBS (Cloud Backed SQLite), който позволява съхранение на съдържанието на базата данни не в локален файл, а в външно облачно хранилище. За съхранение се използва специално оптимизиран формат за външно съхранение, който позволява динамично зареждане на данни от външното хранилище, без предварително копиране на цялата БД в локалната система. В момента се поддържат облачните хранилища Azure Blob Storage и Google Cloud Storage. Всяко приложение, което поддържа работа с обикновен SQLite, може да бъде прехвърлено на CBS.

VFS модулът може да работи в фонов режим и активен режим. Във фонов режим в системата постоянно се изпълнява фонов процес, който позволява достъп до външната БД само в режим на четене, но поддържа общ кеш, до който различни процеси могат да имат достъп. В активен режим е разрешено четене и запис, но се използва само локалният кеш на текущия процес. Във всеки момент само един клиент може да извършва запис, а другите клиенти няма да виждат записаните изменения, докато не поискат explícitно от облачното хранилище. За разделяне на различни заявки за запис се прилага типовата система за заключвания на SQLite, основана на WAL журнала.

На разработчиците се предоставя разширен C API и интерфейс за команден ред, които позволяват извършване на операции като създаване и почистване на външно хранилище, зареждане и изтегляне на БД в/от външно хранилище, копиране на БД във външно хранилище, преглед на списъка с БД в облачното хранилище, изтриване на неизползвани блокове от облачното хранилище.

Отделно разработчиците на проекта libSQL (разширен fork на SQLite) обявиха сървърната версия на SQLite — sqld, която позволява организиране на работа с общо ползваема база данни, като свързването на клиентите става чрез прилагане на протоколи PostgreSQL или HTTP. Например, за свързване със sqld могат да се използват съществуващите клиентски библиотеки, създадени за PostgreSQL, и, между другото, CLI интерфейсът psql. Сървърът sqld може да бъде достъпен и чрез API на базата на HTTP протокола, което улеснява интеграцията с уеб приложения. Кодът на sqld е написан на езика Rust и се разпространява под лиценз MIT.

В качеството на области на приложение на sqld се отбелязват резервно копиране, репликация към други системи и организация на достъп до БД SQLite в безсървърни инфраструктури, където липсва постоянно хранилище и не е възможно да се осигури водене на база в локален файл. В безсървърни системи, БД, с която работи sqld, може да се репликира от други. сървъри. За осигуряване на висока наличност и устойчивост на повреди се поддържа интеграция с mvSQLite (разпределен вариант на SQLite, работещ на основата на FoundationDB). Има режим на поддържане на активно резервно копие, реализиран чрез периодично запазване на снимки на състоянието на БД и репликация на измененията от WAL лог в облачно хранилище, съвместимо с Amazon S3.

За приложенията се предоставя библиотека, съвместима с SQLite, която може да се зарежда чрез LD_PRELOAD за преминаване от съхранение на данни в локален файл към работа през sqld. Възможно е зареждане на разширения за SQLite. Клиентските библиотеки са подготвени за TypeScript, JavaScript, Rust, Go и Python. С БД, свързана със sqld, може да се работи едновременно с обичайния инструментариум на SQLite, т.е. sqld действа като надстройка за предоставяне на мрежов достъп до БД, репликация и резервно копиране. Например: # Стартираме сървър за SQLite БД foo.db: sqld -d foo.db -p 127.0.0.1:5432 —http-listen-addr=127.0.0.1:8000 # Достъпваме БД с помощта на инструменти на PostgreSQL: psql -q postgres://127.0.0.1 # Свързваме се локално с БД с помощта на инструменти на SQLite: sqlite3 foo.db # Достъпваме през HTTP: curl -s -d "{\"statements\": [\"SELECT * from databases;\"] }" http://127.0.0.1:8000

Накрая, може да се спомене проектът LiteFS, разработван от компанията Fly.io. LiteFS представлява FUSE модул за организиране на работа с една обща SQLite база данни на няколко хоста. LiteFS репликира състоянието на базата данни между няколко системи чрез прихващане на операции за запис в файла на базата данни и транслация на тези операции към други системи, използвайки подобие на механизма за транзакции и запазване на транзакции в отделен файл във формат LTX. Кодът на LiteFS е написан на Go и се разпространява под лицензия Apache 2.0.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster