Lansarea rqlite 6.0, o bază de date distribuită tolerantă la erori bazată pe SQLite.

A fost lansată versiunea 6.0 a sistemului de gestionare a bazelor de date distribuite rqlite, care utilizează SQLite ca motor de stocare și permite organizarea funcționării unui cluster de stocare sincronizat. Printre caracteristicile rqlite se remarcă ușurința de instalare, desfășurare și întreținere a unui stocare distribuită și toleranță la erori, asemănătoare cu etcd și Consul, dar folosind un model relațional pentru gestionarea datelor în loc de formatul cheie/valoare. Codul proiectului este scris în limbajul Go și este distribuit sub licența MIT.

Pentru a menține toate nodurile într-o stare sincronizată, se utilizează algoritmul de consens Raft. Rqlite folosește biblioteca originală SQLite și driverul standard go-sqlite3, deasupra cărora este lansată o interfață care prelucrează cererile clienților, efectuează replicarea către alte noduri și urmărește atingerea consensului pentru alegerea nodului lider.

Schimbările în baza de date pot fi efectuate doar de nodul ales ca lider, dar conexiunile pentru operațiunile de scriere pot fi direcționate și către alte noduri din cluster, care vor returna adresa liderului pentru repetarea cererii (în versiunea următoare se promite adăugarea unui transfer automat către lider). Accentul principal este pus pe toleranța la erori, astfel că SGBD-ul se scalează doar pe operațiunile de citire, iar operațiunile de scriere constituie un punct slab. Este posibilă lansarea unui cluster rqlite dintr-un singur nod, iar această soluție poate fi utilizată pentru a facilita accesul la SQLite prin HTTP fără a oferi toleranță la erori.

Datele SQLite de pe fiecare nod sunt stocate nu într-un fișier, ci în memorie. La nivelul stratului de implementare a protocolului Raft se ține un jurnal al tuturor comenzilor SQLite care duc la modificarea bazei de date. Acest jurnal este utilizat la replicare (replicarea la nivelul reconstrucției cererilor pe alte noduri), lansarea unui nod nou sau recuperarea în cazul pierderii conectivității. Pentru a reduce dimensiunea jurnalului se aplică o compresie automată, care este initiată după un număr specificat de modificări și conduce la salvarea pe disc a unui snapshot, față de care începe să se țină un nou jurnal (starea bazei de date în memorie este identică snapshot-ului + jurnalul de modificări acumulat).

Caracteristici rqlite:

  • Ușurința desfășurării cluster-ului, fără necesitatea unei instalări separate a SQLite.
  • Posibilitatea de a obține rapid un depozit SQL replicat.
  • Pregătit pentru utilizare în proiecte de producție.
  • Există o API HTTP(S) care permite actualizarea datelor în mod de lot și determinarea nodului principal al clusterului. De asemenea, este disponibil un interfață de linie de comandă și posibilitatea de a utiliza diverse biblioteci client create pentru SQLite.
  • Disponibilitatea unui serviciu pentru identificarea altor noduri, care permite crearea dinamică a cluster-elor.
  • Suport pentru criptarea schimbului de date între noduri.
  • Posibilitatea de configurare a nivelului de verificare a actualității și coerenței datelor la citire.
  • O opțiune opțională de conectare a nodurilor în modul doar pentru citire, care nu participă la determinarea consesului și este utilizată pentru a crește scalabilitatea cluster-ului în operațiunile de citire.
  • Suport pentru o formă proprie de tranzacții bazată pe combinarea comenzilor într-o singură solicitare (tranzacțiile bazate pe BEGIN, COMMIT, ROLLBACK, SAVEPOINT și RELEASE nu sunt suportate).
  • Suport pentru crearea de backup-uri la cald.

Versiunea nouă aduce modificări arhitecturale semnificative, menite să îmbunătățească fiabilitatea clusterului prin optimizarea procesului de redirecționare a cererilor de citire și scriere către nodurile corecte ale clusterului. Nodurile rqlite pot acum multiplexa mai multe conexiuni logice între ele, folosind conexiuni TCP stabilite între noduri prin protocolul Raft. Dacă o cerere necesită privilegii de lider, dar este trimisă unui nod secundar, nodul secundar poate determina adresa liderului și o poate transmite clientului, fără a efectua calculul consesului conform protocolului Raft.

Această modificare a permis, de asemenea, eliminarea unui component separat pentru sincronizarea metadatelor și excluzând procesarea separată a stării Raft și a metadatelor. Nodurile secundare direcționează acum cererile către nodul lider doar atunci când este necesar să afle adresa nodului principal. API-ul oferă posibilitatea de a obține informații despre starea celorlalte noduri din cluster. A fost adăugată o comandă „.sysdump” în interfața de linie de comandă.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster