SQL distribuit - Distributed SQL

O bază de date SQL distribuită este o singură bază de date relațională care reproduce date pe mai multe servere. Bazele de date SQL distribuite sunt puternic consistente și cele mai multe acceptă coerența între rack-uri, centre de date și rețele cu zone largi, inclusiv zone de disponibilitate în cloud și zone geografice în cloud . Bazele de date SQL distribuite folosesc de obicei algoritmii Paxos sau Raft pentru a obține consensul între mai multe noduri.

Uneori bazele de date SQL distribuite sunt denumite NewSQL, dar NewSQL este un termen mai inclusiv care include baze de date care nu sunt baze de date distribuite .

Istorie

Google a lui Spanner popularizat conceptul modern de baze de date SQL distribuite. Google a descris baza de date și arhitectura acesteia într-o carte albă din 2012 numită „Spanner: Google's Global-Distributed Database”. Lucrarea a descris Spanner ca a evoluat dintr-un depozit de valori de tip Big Table într-o bază de date temporală cu mai multe versiuni în care datele sunt stocate în „tabele semi-relaționale schematizate”.

Spanner folosește ceasuri atomice cu algoritmul Paxos pentru a obține un consens în ceea ce privește starea distribuită între servere. În 2010, și o implementare anterioară, ClustrixDB a trecut de la un dispozitiv hardware la o bază de date software bazată pe Paxos și a fost ulterior achiziționată de MariaDB sub numele de Xpand și adăugată la o ofertă cloud SaaS numită SkySQL . În 2017, doi ingineri Google au părăsit compania pentru a crea Cockroach DB care obține rezultate similare utilizând algoritmul Raft fără ceasuri atomice sau hardware personalizat. După aceasta, alți furnizori au intrat pe piață, precum SkySQL și YugabyteDB ale MariaDB. În afară de cererile de implementare și performanță, aceste oferte pot rula pe mai multe cloud-uri sau infrastructuri publice și, în unele cazuri, private.

Spanner este utilizat în principal pentru cazuri de utilizare tranzacționale și pentru serii de timp. Cu toate acestea, Google a continuat această cercetare cu o urmărire pe hârtie despre Google F1 pe care o descrie ca o bază de date de procesare hibridă tranzacțională / analitică construită pe Spanner.

Arhitectură

Bazele de date SQL distribuite au următoarele caracteristici generale:

  • replicare sincronă
  • consistență tranzacțională puternică în cel puțin zonele de disponibilitate (adică conformitatea ACID )
  • structura frontală a bazei de date relaționale - adică date reprezentate ca tabele cu rânduri și coloane similare oricărui alt RDBMS
  • în mod automat sharded de stocare a datelor
  • stocare cheie-valoare de bază
  • implementare nativă SQL

În urma teoremei CAP , bazele de date SQL distribuite sunt „CP” sau consistente și tolerante la partiții. Algoritmic sacrifică disponibilitatea în sensul că eșecul unui nod primar poate face ca baza de date să nu fie disponibilă pentru scrieri. Cu toate acestea, disponibilitatea se realizează printr-o mai mare fiabilitate a software-ului și hardware-ului, alegerea noilor elemente primare și metode de recuperare euristică.

Toate implementările SQL distribuite necesită un fel de sincronizare temporală pentru a garanta coerența. Cu excepția Spanner, majoritatea nu folosesc hardware personalizat pentru a furniza ceasuri atomice. Spanner este capabil să sincronizeze scrierile cu garanții temporale. Implementările fără hardware personalizat necesită ca serverele să compare compensările de ceas și să reîncerce citirile.

Comparativ cu NewSQL

CockroachDB și alții s-au denumit uneori baze de date NewSQL . Unele dintre bazele de date newSQL precum Citus și Vitess au fundamental diferite arhitecturi, dar au fost citate ca exemple de newSQL de Matthew Aslett care a inventat termenul. În esență, bazele de date distribuite SQL sunt construite de la bază, iar bazele de date NewSQL includ tehnologii de replicare și partajare adăugate bazelor de date relaționale client-server existente, cum ar fi PostgreSQL . Unii experți definesc bazele de date DistributedSQL ca un subset mai specific al bazelor de date NewSQL.

Referințe

  1. ^ a b c https://storage.googleapis.com/pub-tools-public-publication-data/pdf/41344.pdf
  2. ^ Higginbotham, Stacey (3 mai 2010). „Clustrix construiește webscala Sfântul Graal: o bază de date care se întinde” . gigaom.com .
  3. ^ "MariaDB achiziționează Clustrix" .
  4. ^ Baer (dbInsight), Tony. „Pentru MariaDB, este timpul să punem piesele laolaltă” . ZDNet .
  5. ^ Morgan, Timothy Prickett (22 februarie 2017). „Google Spanner îl inspiră pe CockroachDB să-l depășească” . Următoarea platformă .
  6. ^ „Arhitectura unei baze de date SQL distribuite” - prin www.youtube.com.
  7. ^ "DZone" . dzone.com .
  8. ^ "Trăind fără ceasuri atomice" . Laboratoare de gândaci . 21 aprilie 2020.
  9. ^ "Despre ce vorbim când vorbim despre NewSQL - Prea multe informații" .
  10. ^ "Bazele de date SQL vs. NoSQL: Care este diferența?" . www.ibm.com .
  11. ^ Prabagaren, Gokul (30 octombrie 2019). "NewSQL - Următoarea evoluție în baze de date" . Mediu .