Yandex a publié le code source de son SGBD «YDB»

Yandex a récemment annoncé la publication du code source de son SGBD, « YDB » , qui prend en charge le dialecte SQL et les transactions ACID.

Le SGBD a été conçu de A à Z et développé initialement dans le but d'assurer la tolérance aux pannes , la reprise automatique après incident et l'évolutivité. Il convient de noter que Yandex a déployé des clusters YDB opérationnels, comprenant plus de 10 000 nœuds, stockant des centaines de pétaoctets de données et traitant des millions de transactions distribuées par seconde.

Principales nouveautés de YDB

L'une des principales caractéristiques de YDB est son modèle de données relationnel composé de tables. YQL ( YDB Query Language) permet d'interroger et de définir le schéma de données ; il s'agit d'un dialecte SQL adapté à la gestion de bases de données distribuées de grande taille . Lors de la création d'un schéma de stockage, une organisation arborescente des tables est prise en charge, à l'instar des répertoires d'un système de fichiers. Une API est fournie pour la manipulation des données au format JSON.

Il convient également de souligner sa capacité à créer des configurations tolérantes aux pannes , qui restent opérationnelles même en cas de défaillance de disques, de nœuds, de racks, voire de centres de données individuels. YDB prend en charge le déploiement et la réplication synchrones sur trois zones de disponibilité, tout en préservant l'intégrité du cluster en cas de défaillance d'une zone.

Compatibilité avec l'accès aux données via des requêtes de scan, conçues pour effectuer des requêtes analytiques ad hoc sur la base de données, exécutées en mode lecture seule et renvoyant un flux gRPC.

De plus, il se distingue par sa capacité à stocker les données directement sur des périphériques de stockage par blocs grâce au composant natif PDisk et à la couche VDisk. Outre VDisk, DSProxy est exécuté ; ce dernier analyse la disponibilité et les performances du disque afin de l'exclure en cas de problème.

Parmi les autres caractéristiques notables , citons :

  • Une architecture flexible qui vous permet de créer divers services au-dessus de YDB, jusqu'aux périphériques de bloc virtuels et aux files d'attente persistantes. Adaptation à différents types de charge de travail : OLTP et OLAP (requêtes analytiques).
  • Prise en charge des configurations multi-utilisateurs (multi-locataires) et sans serveur.
  • Capacité à authentifier les clients. Les utilisateurs peuvent créer leurs propres clusters virtuels et bases de données sur une infrastructure partagée commune, en considérant la consommation de ressources en termes de nombre de requêtes et de taille de données, ou en louant/réservant certaines ressources informatiques et espace de stockage.
  • Possibilité d'ajuster la durée de vie des enregistrements pour la suppression automatique des données obsolètes.
  • L'interaction avec le SGBD et la soumission de requêtes s'effectuent à l'aide de l'interface de ligne de commande, de l'interface Web intégrée ou du SDK YDB, qui fournit des bibliothèques pour C++, C# (.NET), Go, Java, Node.js, PHP et Python.
  • Récupérez automatiquement des pannes avec un délai minimal pour les applications et maintenez automatiquement la redondance spécifiée lors du stockage des données.
  • Création automatique d'index sur la clé primaire et possibilité de définir des index secondaires pour améliorer l'efficacité de l'accès arbitraire aux colonnes.
  • Évolutivité horizontale. À mesure que la charge et la taille des données stockées augmentent, le cluster peut être étendu simplement en connectant de nouveaux nœuds. Les niveaux de calcul et de stockage sont séparés, ce qui vous permet de faire évoluer le calcul et le stockage séparément. Le SGBD lui-même surveille la répartition uniforme des données et de la charge, en tenant compte des ressources matérielles disponibles. Il est possible de mettre en œuvre des configurations distribuées géographiquement qui couvrent plusieurs centres de données dans différentes parties du monde.
  • Prise en charge d'un modèle de cohérence solide et de transactions ACID lors du traitement de requêtes qui s'étendent sur plusieurs nœuds et tables. Pour améliorer les performances, vous pouvez désactiver de manière sélective la vérification de la cohérence.
  • Réplication automatique des données, partitionnement automatique (partitionnement, sharding) lorsque la taille ou la charge augmente, et équilibrage automatique de la charge et des données entre les nœuds.

Enfin, il convient de noter que YDB est utilisé dans les projets de Yandex, que son code est écrit en C/C++ et distribué sous licence Apache 2.0. Vous trouverez le code source, ainsi que plus de détails à son sujet, en suivant ce lien.


Ajouter comme source préférée dans Google