Yandex a ouvert le code du SGBD distribué YDB prenant en charge SQL

Yandex a publié les textes sources du SGBD YDB distribué, qui implémente la prise en charge du dialecte SQL et des transactions ACID. Le SGBD a été créé à partir de zéro et initialement développé dans le but d'assurer la tolérance aux pannes, la récupération automatique en cas de panne et l'évolutivité. Il est à noter que Yandex a lancé des clusters YDB fonctionnels, comprenant plus de 10 2.0 nœuds, stockant des centaines de pétaoctets de données et servant des millions de transactions distribuées par seconde. YDB est utilisé dans des projets Yandex tels que Market, Cloud, Smart Home, Alice, Metrika et Auto.ru. Le code est écrit en C/C++ et distribué sous la licence Apache XNUMX. Pour une familiarisation et un lancement rapide, vous pouvez utiliser un conteneur Docker prêt à l'emploi.

Caractéristiques du projet:

  • Utilisation du modèle de données relationnel avec des tables. YQL (YDB Query Language) est utilisé pour interroger et définir le schéma de données, qui est un dialecte de SQL adapté pour fonctionner avec de grandes bases de données distribuées. Lors de la création d'un schéma de stockage, un regroupement de tables en forme d'arborescence est pris en charge, ressemblant à des répertoires dans un système de fichiers. Une API est fournie pour travailler avec des données au format JSON.
    Yandex a ouvert le code du SGBD distribué YDB prenant en charge SQL
  • Prise en charge de l'accès aux données à l'aide de requêtes d'analyse conçues pour effectuer des requêtes ad hoc analytiques sur la base de données, exécutées en mode lecture seule et renvoyant un flux grpc.
  • L'interaction avec le SGBD et l'envoi 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.
  • La possibilité de créer des configurations tolérantes aux pannes qui continuent de fonctionner lorsque des disques, des nœuds, des racks et même des centres de données individuels tombent en panne. YDB prend en charge le déploiement et la réplication synchrone sur trois zones de disponibilité tout en maintenant la santé du cluster en cas de défaillance de l'une des zones.
  • Récupérez automatiquement des pannes avec des retards minimaux 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 aux colonnes arbitraires.
  • Évolutivité horizontale. À mesure que la charge et la taille des données stockées augmentent, le cluster peut être étendu en connectant simplement de nouveaux nœuds. Les niveaux de calcul et de stockage sont séparés, ce qui permet une mise à l'échelle du calcul et du stockage séparément. Le SGBD lui-même surveille la distribution uniforme des données et de la charge, en tenant compte des ressources matérielles disponibles. Il est possible de déployer des configurations distribuées géographiquement couvrant plusieurs centres de données dans différentes parties du monde.
  • Prise en charge du modèle de cohérence forte et des transactions ACID lors du traitement de requêtes couvrant plusieurs nœuds et tables. Pour améliorer les performances, vous pouvez désactiver de manière sélective le contrôle de 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.
  • Stockage des données directement sur les périphériques de bloc à l'aide du composant PDisk natif et de la couche VDisk. En plus de VDisk, DSProxy s'exécute, qui analyse la disponibilité et les performances des disques afin de les exclure si des problèmes sont détectés.
  • Une architecture flexible qui vous permet de créer au-dessus de YDB, divers services, jusqu'à des périphériques de bloc virtuels et des files d'attente persistantes (file d'attente persistante). Adéquation des applications pour différents types de charge de travail, OLTP et OLAP (requêtes analytiques).
  • Prise en charge des configurations multi-utilisateurs (multilocataires) et sans serveur. Capacité à authentifier les clients. Les utilisateurs peuvent créer leurs propres clusters virtuels et bases de données dans une infrastructure partagée commune, en tenant compte de la consommation de ressources au niveau du nombre de requêtes et de la taille des données, ou en louant/réservant certaines ressources de calcul et espace de stockage.
  • Possibilité d'ajuster la durée de vie des enregistrements pour la suppression automatique des données obsolètes.

Source: opennet.ru

Ajouter un commentaire