SQLite ishlab chiquvchilari ma'lumotlar bazasi tarkibini mahalliy faylda emas, balki tashqi bulutli xotirada saqlash imkonini beruvchi eksperimental CBS (Cloud Backed SQLite) VFS modulini ishlab chiqmoqda. Saqlash uchun tashqi xotira uchun maxsus optimallashtirilgan ma'lumotlar bazasi formati qo'llaniladi, bu sizga kerak bo'lganda, barcha ma'lumotlar bazasini mahalliy tizimga ko'chirmasdan, ma'lumotlarni dinamik ravishda yuklash imkonini beradi. Hozirda bulutli omborlardan Azure Blob Storage va Google Cloud Storage qo‘llab-quvvatlanadi. Oddiy SQLite-ni qo'llab-quvvatlaydigan har qanday dastur CBS-dan foydalanishga aylantirilishi mumkin.
VFS moduli fonda va faol rejimda ishlashi mumkin. Orqa fonda tizimda doimiy ravishda fon jarayoni ishlaydi, bu faqat o'qish rejimida tashqi ma'lumotlar bazasiga kirishga ruxsat beradi, lekin turli jarayonlar tomonidan birgalikda foydalanilishi mumkin bo'lgan umumiy keshni saqlaydi. Faol rejimda o'qish va yozishga ruxsat beriladi, lekin faqat joriy jarayonning mahalliy keshi ishlatiladi. Bir vaqtning o'zida faqat bitta mijoz yozishi mumkin va boshqa mijozlar bulutli xotiradan aniq so'ramaguncha yozilgan o'zgarishlarni ko'rmaydi. Turli xil yozish so'rovlarini ajratish uchun WAL jurnaliga asoslangan odatiy SQLite qulflash tizimi ishlatiladi.
Ishlab chiquvchilar kengaytirilgan C API va buyruq qatori interfeysi bilan ta'minlangan bo'lib, ular tashqi xotirani yaratish va tozalash, ma'lumotlar bazasini tashqi xotiraga yuklash va tushirish, tashqi xotirada ma'lumotlar bazasi nusxasini yaratish, ro'yxatni ko'rish kabi operatsiyalarni bajarishga imkon beradi. bulutli saqlashdagi ma'lumotlar bazalari, foydalanilmagan bloklarni bulutli saqlashdan o'chirish.
Alohida-alohida, libSQL loyihasini ishlab chiquvchilari (SQLite-ning kengaytirilgan vilkalari) SQLite-ning server versiyasini e'lon qilishdi - sqld, bu sizga PostgreSQL yoki HTTP yordamida mijozlarning ulanishi amalga oshiriladigan umumiy ma'lumotlar bazasi ishini tashkil qilish imkonini beradi. protokol. Masalan, sqld ga ulanish uchun PostgreSQL DBMS uchun yaratilgan mavjud mijozlar kutubxonalari va boshqa narsalar qatorida psql CLI interfeysidan foydalanish mumkin. Sqld serveriga HTTP-ga asoslangan API yordamida ham kirish mumkin, bu esa veb-ilovalar bilan integratsiyani osonlashtiradi. Sqld kodi Rustda yozilgan va MIT litsenziyasi ostida tarqatiladi.
SQLD uchun qo'llanilish sohalariga zaxira nusxasini yaratish, boshqa tizimlarga replikatsiya qilish va serversiz infratuzilmalarda SQlite ma'lumotlar bazasiga kirish kiradi, bu yerda doimiy saqlash imkoniyati yo'q va mahalliy fayllar bazasini saqlab turish imkonsiz. Serversiz tizimlarda sqld ishlaydigan ma'lumotlar bazasi boshqa tizimlardan replikatsiya qilinishi mumkin. serverlarYuqori darajadagi mavjudlik va xatolarga chidamlilikni ta'minlash uchun mvSQLite (FoundationDB ustida ishlaydigan taqsimlangan SQLite varianti) bilan integratsiya qo'llab-quvvatlanadi. Faol zaxira rejimi ma'lumotlar bazasi holatining davriy suratlari va Amazon S3 bilan mos keladigan WAL jurnalidan bulutli saqlashga o'zgarishlarni takrorlash orqali amalga oshiriladi.
Ilovalar uchun ma'lumotlarni mahalliy faylda saqlashdan sqld orqali ishlashga o'tish uchun LD_PRELOAD orqali yuklanishi mumkin bo'lgan SQLite mos kutubxonasi taqdim etiladi. SQLite kengaytmalarini yuklab olish mumkin. Mijoz kutubxonalari TypeScript, JavaScript, Rust, Go va Python uchun tayyorlangan. Siz standart SQLite vositalaridan foydalangan holda bir vaqtning o'zida sqld bilan bog'langan ma'lumotlar bazasi bilan ishlashingiz mumkin, ya'ni. sqld ma'lumotlar bazasiga tarmoq kirishini ta'minlash, replikatsiya va zaxiralash uchun qo'shimcha sifatida ishlaydi. Masalan: # foo.db SQLite ma'lumotlar bazasi serverini ishga tushiring: sqld -d foo.db -p 127.0.0.1:5432 --http-listen-addr=127.0.0.1:8000 # PostgreSQL utilitlari yordamida ma'lumotlar bazasiga kirish: psql -q postgres ://127.0.0.1 # SQLite asboblar to'plamidan foydalanib ma'lumotlar bazasiga mahalliy ulanish: sqlite3 foo.db # HTTP orqali kirish: curl -s -d "{\"statements\": [\"SELECT * ma'lumotlar bazalaridan; \"] } »\http://127.0.0.1:8000
Xulosa qilib aytganda, Fly.io tomonidan ishlab chiqilgan LiteFS loyihasini eslatib o'tishimiz mumkin. LiteFS - bu bir nechta xostlarda bitta umumiy SQLite ma'lumotlar bazasi bilan ishlashni tashkil qilish uchun FUSE moduli. LiteFS bir nechta tizimlar o'rtasida ma'lumotlar bazasi holatini ma'lumotlar bazasidan faylga yozish operatsiyalarini ushlab turish va bu operatsiyalarni boshqa tizimlarga translyatsiya qilish, tranzaksiya mexanizmining bir turidan foydalanish va tranzaktsiyalarni LTX formatida alohida faylda saqlash orqali takrorlaydi. LiteFS kodi Go'da yozilgan va Apache 2.0 litsenziyasi ostida tarqatiladi.
Manba: opennet.ru
