La società Yandex ha pubblicato i codici sorgente del database distribuito YDB, che supporta il dialetto SQL e le transazioni ACID. Il database è stato creato da zero e si è evoluto tenendo conto della resilienza, del recupero automatico in caso di guasti e della scalabilità. Si segnala che Yandex ha avviato cluster operativi YDB, composti da oltre 10.000 nodi, che conservano centinaia di petabyte di dati e gestiscono milioni di transazioni distribuite al secondo. YDB è utilizzato in progetti di Yandex come Market, Cloud, Smart Home, Alice, Metrics e Auto.ru. Il codice è scritto in C/C++ e distribuito sotto licenza Apache 2.0. Per una rapida familiarizzazione e avvio, è possibile utilizzare un contenitore Docker predefinito.
Caratteristiche del progetto:
- Utilizzo del modello relazionale dei dati con tabelle. Per le query e la definizione degli schemi di dati viene utilizzato il linguaggio YQL (YDB Query Language), un dialetto di SQL adattato per lavorare con grandi basi di dati distribuite. Durante la creazione dello schema di archiviazione, viene supportata la raggruppamento ad albero delle tabelle, simile a directory nel sistema di file. È fornito un API per interagire con i dati in formato JSON.

- Supporto per l'accesso ai dati utilizzando query di scansione, progettate per eseguire query analitiche ad hoc su DB, eseguite in modalità di sola lettura e restituenti uno stream grpc.
- L'interazione con il DBMS e l'invio delle richieste avviene tramite l'interfaccia della riga di comando, l'interfaccia web integrata o l'insieme YDB SDK, che fornisce librerie per i linguaggi C++, C# (.NET), Go, Java, Node.js, PHP e Python.
- La possibilità di creare configurazioni ad alta disponibilità che continuano a funzionare anche in caso di guasti a singoli dischi, nodi, rack e persino data center. YDB supporta il deployment e la replica sincrona in tre zone di disponibilità, mantenendo la funzionalità del cluster in caso di guasto di una delle zone.
- Ripristino automatico dopo guasti con latency minima per le applicazioni e mantenimento automatico della ridondanza specificata per l'archiviazione dei dati.
- Creazione automatica di indici sulla chiave primaria e possibilità di definire indici secondari per migliorare l'efficienza di accesso a colonne arbitrarie.
- Scalabilità orizzontale. Man mano che cresce il carico e la dimensione dei dati archiviati, il cluster può essere ampliato semplicemente con l'aggiunta di nuovi nodi. I livelli di calcolo e di archiviazione sono separati, consentendo di potenziare separatamente la potenza di calcolo e la capacità di archiviazione. Il DBMS gestisce autonomamente la distribuzione uniforme dei dati e del carico in base alle risorse hardware disponibili. È possibile implementare configurazioni geograficamente distribuite che coprono diversi data center in tutto il mondo.
- Supporto per un modello di coerenza rigorosa e transazioni ACID durante l'elaborazione delle richieste, che coinvolgono più nodi e tabelle. Per migliorare le prestazioni, è possibile disabilitare selettivamente il controllo della coerenza.
- Replicazione automatica dei dati, partizionamento automatico (sharding) in caso di aumento delle dimensioni o del carico e bilanciamento automatico del carico e dei dati tra i nodi.
- Archiviazione dei dati direttamente su dispositivi a blocchi utilizzando il proprio componente PDisk e il livello VDisk. Sopra VDisk viene eseguito DSProxy, che analizza disponibilità e prestazioni dei dischi, escludendoli in caso di problemi identificati.
- Architettura flessibile che consente di costruire, sopra YDB, vari servizi, inclusi dispositivi a blocchi virtuali e code persistenti. Idoneità all'uso per vari tipi di carico, OLTP e OLAP (query analitiche).
- Supporto per configurazioni multiutente (multitenant) e serverless. Possibilità di autenticazione dei clienti. Gli utenti possono creare i propri cluster virtuali e database all'interno di un'infrastruttura condivisa, tenendo conto del consumo di risorse a livello di numero di richieste e dimensione dei dati, oppure noleggiando/riserando specifiche risorse di calcolo e spazio di archiviazione.
- Possibilità di configurare il tempo di vita delle registrazioni per la rimozione automatica dei dati obsoleti.
Fonte: opennet.ru

