Yandex hà apertu u codice di u DBMS distribuitu YDB chì sustene SQL

Yandex hà publicatu i testi fonte di u DBMS YDB distribuitu, chì implementa u supportu per u dialettu SQL è transazzione ACID. U DBMS hè statu creatu da zero è inizialmente sviluppatu cù un ochju à assicurà a tolleranza di difetti, a ricuperazione automatica in casu di fallimenti è scalabilità. Hè nutatu chì Yandex hà lanciatu clusters YDB di travagliu, cumprese più di 10 mila nodi, almacenendu centinaie di petabytes di dati è serve milioni di transazzioni distribuite per seconda. YDB hè adupratu in prughjetti Yandex cum'è Market, Cloud, Smart Home, Alice, Metrika è Auto.ru. U codice hè scrittu in C/C++ è distribuitu sottu a licenza Apache 2.0. Per a familiarizazione è u lanciu rapidu, pudete aduprà un containeru Docker prontu.

Caratteristiche di u prughjettu:

  • Utilizà u mudellu di dati relazionale cù tavule. YQL (YDB Query Language) hè utilizatu per interrogà è definisce u schema di dati, chì hè un dialettu di SQL adattatu per travaglià cù grandi basa di dati distribuiti. Quandu crea un schema di almacenamento, un raggruppamentu di tavule cum'è l'arburu hè supportatu, s'assumiglia à i cartulari in un sistema di fugliale. Un API hè furnitu per travaglià cù dati in formatu JSON.
    Yandex hà apertu u codice di u DBMS distribuitu YDB chì sustene SQL
  • Supportu per l'accessu à e dati utilizendu e dumande di scansione pensate per eseguisce dumande analitiche ad-hoc contr'à a basa di dati, eseguite in modu di sola lettura è rinviendu un flussu grpc.
  • L'interazzione cù u DBMS è l'inviu di e dumande hè realizatu utilizendu l'interfaccia di linea di cumanda, l'interfaccia web integrata o l'SDK YDB, chì furnisce librerie per C ++, C # (.NET), Go, Java, Node.js, PHP è Python.
  • A capacità di creà cunfigurazioni toleranti à i difetti chì cuntinueghjanu à travaglià quandu i dischi individuali, nodi, rack, è ancu centri di dati fallenu. YDB supporta l'implementazione è a replicazione sincrona in trè zoni di dispunibilità mentre mantene a salute di u cluster in casu di fallimentu di una di e zoni.
  • Recuperate automaticamente da i fallimenti cù ritardi minimi per l'applicazioni è mantene automaticamente a redundanza specificata quandu almacenà e dati.
  • Creazione automatica di indici nantu à a chjave primaria è a capacità di definisce indici secundarii per migliurà l'efficienza di l'accessu à e colonne arbitrarie.
  • Scalabilità horizontale. Cume a carica è a dimensione di e dati almacenati crescenu, u cluster pò esse allargatu solu cunnessu novi nodi. I livelli di calculu è di almacenamento sò separati, chì permettenu a scala di calculu è di almacenamiento separatamente. U DBMS stessu monitoreghja a distribuzione uniforme di dati è carica, tenendu in contu i risorsi hardware dispunibili. Hè pussibule implementà cunfigurazioni distribuite geograficamente chì coprenu parechji centri di dati in diverse parti di u mondu.
  • Supportu per un mudellu di coerenza forte è transazzioni ACID durante u processu di e dumande chì copre parechji nodi è tabelle. Per migliurà u rendiment, pudete disattivà selettivamente u cuntrollu di a coerenza.
  • Replicazione automatica di dati, partizionamentu automaticu (spartizione, sharding) quandu a dimensione o a carica aumenta, è a carica automatica è l'equilibriu di dati trà i nodi.
  • Salvà i dati direttamente nantu à i dispositi di bloccu utilizendu u componente nativu PDisk è u stratu VDisk. In cima di VDisk, DSProxy corre, chì analizeghja a dispunibilità è u rendiment di i dischi per escludiri se i prublemi sò rilevati.
  • Una architettura flexibule chì permette di creà in cima à YDB, diversi servizii, finu à i dispositi di bloccu virtuale è fila persistenti (fila persistente). Idoneità di l'applicazione per diversi tipi di carichi di travagliu, OLTP è OLAP (questioni analitiche).
  • Supportu per cunfigurazioni multi-utilizatori (multitenant) è serverless. Capacità di autentificà i clienti. L'utilizatori ponu creà i so propri clusters virtuali è basa di dati in una infrastruttura cumunu cumuni, tenendu in contu u cunsumu di risorse à u livellu di u numeru di richieste è a dimensione di dati, o affittu / riservà certi risorse informatiche è spaziu di almacenamento.
  • Possibilità di aghjustà a vita di i registri per l'eliminazione automatica di dati obsoleti.

Source: opennet.ru

Add a comment