YDB

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 25 iunie 2022; verificările necesită 2 modificări .
YDB
Tip de SGBD
Dezvoltator Yandex
Licență Apache 2.0
Site-ul web site-ul oficial al proiectului YDB

YDB este un sistem de gestionare a bazelor de date relaționale (DBMS) cu sursă deschisă  , distribuit, tolerant la erori , dezvoltat de Yandex .

Funcționalitate

YDB este o tehnologie care vă permite să creați servicii mari care pot rezista la o sarcină operațională mare (până la nivelul de milioane de solicitări pe secundă). Limbajul de interogare implicit este YQL [1] (YDB Query Language), un dialect puternic tipat al SQL [2] .

Este unul dintre SGBD-urile care oferă garanții pentru tranzacții ACID [3] .

Cei mai apropiati analogi dintre sistemele de baze de date, disponibile și ca software open source, sunt YugabyteDB și CockroachDB.

YDB implică implementarea automată în clustere de gazde fizice sau mașini virtuale folosind instrumente Kubernetes sau ca serviciu gestionat în Yandex Cloud. Pentru o implementare gestionată, este selectat modul de calcul fără server sau modul Dedicat.

Caracteristici de implementare

YDB nu acceptă UUID ca tip de date autonom [4] .

Nu există nicio funcție încorporată pentru incrementarea automată a valorii unui câmp atunci când adăugați date la un tabel [4] .

Arhitectură

YDB rulează pe clustere cu o arhitectură „shared nothing” și utilizează hardware standard (hardware de bază). Sistemul este construit pe baza unor componente logice - tablete. Tableta implementează un protocol pentru rezolvarea problemei consensului într-o rețea de computere nesigure. Acest protocol este similar ca funcționalitate cu protocoalele Paxos și Raft .

Tabelele de utilizator au o cheie primară obligatorie, tabelele sunt fragmentate de intervale de chei primare. Fragmentul de date este controlat de o tabletă, dimensiunea unui fragment poate fi de până la unități de gigaocteți. Astfel de tablete se numesc DataShard. O tabletă DataShard se poate împărți automat în mai multe tablete atunci când pragul de stocare a datelor sau pragul de încărcare a fragmentelor este depășit. Astfel, sistemul se scalează în mod transparent odată cu creșterea sarcinii utilizatorilor.

Există multe tipuri diferite de tablete în afară de DataShard: tablete SchemeShard pentru stocarea metadatelor despre tabelele utilizatorilor, Hive pentru echilibrarea și rularea tabletelor, Coordonator și Mediator pentru programarea tranzacțiilor distribuite și multe altele.

Datele pilulelor sunt stocate în stratul Distributed Storage, care este un magazin cheie-valoare cu un protocol specializat pentru a sprijini protocolul pilulelor. Stocarea distribuită oferă replicarea datelor, datele tabletei sunt stocate ca BLOB [3] .

YDB implementează tranzacții distribuite între date într-unul sau mai multe tabele. Mecanismul tranzacției distribuite se bazează pe algoritmul Calvin [5] . Cu toate acestea, spre deosebire de Calvin, YDB acceptă tranzacții interactive și nedeterministe. Pentru aceasta, sunt folosite încuietori optimiste .

La dezvoltarea codului YDB, se folosește modelul actorului . Actorii sunt mașini de stat cu un singur thread care fac schimb de mesaje între ele și rezidă pe servere diferite din cluster. Pentru schimbul de mesaje prin rețea, se folosește biblioteca de interconectare dezvoltată în cadrul proiectului. Pe lângă YDB au fost dezvoltate diverse servicii. De exemplu, dispozitive bloc virtuale și cozi persistente.

Interacțiunea utilizatorului cu YDB are loc prin protocolul gRPC [3] . Pentru YDB, există o serie de SDK -uri client care implementează mecanisme pentru descoperirea nodurilor (descoperirea), echilibrarea clienților etc.

Istorie

În 2010, Yandex a început să-și dezvolte propriul DBMS NoSQL KiWi [1] . A început să fie folosit în 2011. Cu toate acestea, KiWi a oferit „ consecvență supremă ” și a avut alte dezavantaje ale modelului NoSQL [3] .

În 2012, a început dezvoltarea internă a proiectului KiKiMR și numai pentru nevoile Yandex. În afara companiei, proiectul se numea YDB [1] . În 2016, DBMS a început să fie utilizat în serviciile Yandex.

În 2018, a fost lansată platforma cloud Yandex Cloud , stocarea datelor în care se baza pe YDB [6] . În același timp, compania a anunțat [7] că în viitor va face YDB disponibil în Yandex Cloud ca serviciu gestionat. Mai târziu, un astfel de acces a început să fie furnizat cu adevărat împreună cu alte servicii gestionate - pentru PostgreSQL, MongoDB și altele. Această versiune în cloud a fost numită Yandex Database (mai târziu, serviciul gestionat pentru YDB).

În aprilie 2022, SGBD-ul YDB a fost publicat pe GitHub ca software gratuit sub licența Apache 2.0 [1] .

Note

  1. 1 2 3 4 Yandex a postat YDB în sursă deschisă . Habr . Preluat: 12 iunie 2022.
  2. Cum se scrie mai puțin cod pentru MR, sau De ce lumea are nevoie de un alt limbaj de interogare? Istoria limbajului de interogare Yandex . Habr . Preluat: 14 iunie 2022.
  3. ↑ 1 2 3 4 Alternativă fără server la bazele de date tradiționale  (rusă)  ? . osp.ru. _ Data accesului: 23 iunie 2022.
  4. ↑ 1 2 Nikolai Matrosov. Incrementare automată în baza de date Yandex  (ing.) . Mediu (14 februarie 2022). Data accesului: 24 aprilie 2022.
  5. ↑ Calvin  : Tranzacții rapide distribuite pentru sisteme de baze de date partiționate  ? . cs.yale.edu . Preluat: 19 iunie 2022.
  6. 001. Yandex Cloud: prezentare generală a platformei - Jan Leshchinsky  (rus)  ? . Youtube . Preluat: 12 iunie 2022.
  7. despre:cloud, noiembrie 2018 | Înregistrare transmisă  (rusă)  ? . Youtube . Preluat: 12 iunie 2022.