Yandex ha aperto il codice del DBMS distribuito YDB che supporta SQL

Yandex ha pubblicato il codice sorgente del DBMS distribuito YDB, che implementa il supporto per il dialetto SQL e le transazioni ACID. Il DBMS è stato creato da zero ed è stato inizialmente sviluppato con l'obiettivo di garantire tolleranza ai guasti, ripristino automatico dai guasti e scalabilità. Va notato che Yandex ha lanciato cluster YDB funzionanti, che comprendono più di 10mila nodi, che memorizzano centinaia di petabyte di dati e servono milioni di transazioni distribuite al secondo. YDB è utilizzato in progetti Yandex come Market, Cloud, Smart Home, Alice, Metrica e Auto.ru. Il codice è scritto in C/C++ e distribuito sotto la licenza Apache 2.0. Per familiarizzare e avviare rapidamente, è possibile utilizzare un contenitore Docker già pronto.

Caratteristiche del progetto:

  • Utilizzando un modello di dati relazionale con tabelle. Per le interrogazioni e la definizione dello schema dei dati viene utilizzato il linguaggio YQL (YDB Query Language), che è un dialetto SQL adattato per lavorare con database distribuiti di grandi dimensioni. Quando si crea uno schema di archiviazione, è supportato un raggruppamento di tabelle ad albero, che ricorda le directory in un file system. Viene fornita un'API per lavorare con i dati in formato JSON.
    Yandex ha aperto il codice del DBMS distribuito YDB che supporta SQL
  • Supporto per l'accesso ai dati utilizzando query di scansione progettate per eseguire query analitiche ad hoc sul database, eseguite in modalità di sola lettura e restituendo un flusso grpc.
  • L'interazione con il DBMS e l'invio di richieste vengono effettuati utilizzando l'interfaccia della riga di comando, l'interfaccia web integrata o l'SDK YDB, che fornisce librerie per C++, C# (.NET), Go, Java, Node.js, PHP e Python.
  • La capacità di creare configurazioni con tolleranza agli errori che continuano a funzionare anche in caso di guasto di singoli dischi, nodi, rack e persino data center. YDB supporta la distribuzione e la replica sincrona in tre zone di disponibilità, mantenendo la funzionalità del cluster in caso di guasto di una delle zone.
  • Ripristino automatico in caso di errori con latenza minima per le applicazioni e mantenimento automatico della ridondanza dei dati specificata.
  • Creazione automatica di indici basati sulla chiave primaria e possibilità di definire indici secondari per migliorare l'efficienza dell'accesso a colonne arbitrarie.
  • Scalabilità orizzontale. Man mano che il carico e le dimensioni dei dati archiviati crescono, il cluster può essere espanso semplicemente collegando nuovi nodi. I livelli di elaborazione e archiviazione sono separati, consentendoti di espandere separatamente la potenza di elaborazione e le dimensioni di archiviazione. Il DBMS stesso monitora la distribuzione uniforme dei dati e del carico, tenendo conto delle risorse hardware disponibili. È possibile implementare configurazioni distribuite geograficamente che coprano diversi data center in diverse parti del mondo.
  • Supporta il modello di coerenza avanzata e le transazioni ACID durante l'elaborazione di query che si estendono su più nodi e tabelle. Per migliorare le prestazioni, è possibile disabilitare selettivamente il controllo della coerenza.
  • Replica automatica dei dati, partizionamento automatico (partizionamento, partizionamento) quando le dimensioni o il carico aumentano e bilanciamento automatico del carico e dei dati tra i nodi.
  • Memorizzazione dei dati direttamente sui dispositivi a blocchi utilizzando il componente PDisk nativo e il livello VDisk. DSProxy viene eseguito su VDisk, che analizza la disponibilità e le caratteristiche prestazionali dei dischi per eliminarli se vengono rilevati problemi.
  • Architettura flessibile che ti consente di creare vari servizi su YDB, inclusi dispositivi a blocchi virtuali e code persistenti. Idoneità a diversi tipi di carichi di lavoro, OLTP e OLAP (query analitiche).
  • Supporto per configurazioni multitenant e serverless. Possibilità di autenticazione del client. Gli utenti possono creare i propri cluster e database virtuali in un'infrastruttura comune condivisa, tenendo conto del consumo di risorse a livello del numero di richieste e della dimensione dei dati, oppure affittando/prenotando determinate risorse di calcolo e spazio di archiviazione.
  • Possibilità di configurare la durata dei record per rimuovere automaticamente i dati obsoleti.

Fonte: opennet.ru

Aggiungi un commento