YDB

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 25 de junio de 2022; las comprobaciones requieren 2 ediciones .
YDB
Tipo de SGBD
Desarrollador Yandex
Licencia apache 2.0
Sitio web sitio web oficial del proyecto YDB

YDB es un sistema de administración de bases de datos relacionales (DBMS) tolerante a fallas  , distribuido y de código abierto desarrollado por Yandex .

Funcionalidad

YDB es una tecnología que le permite crear grandes servicios que pueden soportar una gran carga operativa (hasta el nivel de millones de solicitudes por segundo). El lenguaje de consulta predeterminado es YQL [1] (YDB Query Language), un dialecto fuertemente tipado de SQL [2] .

Es uno de los DBMS que proporciona garantías de transacciones ACID [3] .

Los análogos más cercanos entre los sistemas de bases de datos, también disponibles como software de código abierto, son YugabyteDB y CockroachDB.

YDB implica la autoimplementación en clústeres de hosts físicos o máquinas virtuales utilizando herramientas de Kubernetes, o como un servicio administrado en Yandex Cloud. Para una implementación administrada, se selecciona el modo de computación sin servidor o el modo Dedicado.

Funciones de implementación

YDB no admite UUID como un tipo de datos independiente [4] .

No hay una función integrada para incrementar automáticamente un valor de campo al agregar datos a una tabla [4] .

Arquitectura

YDB se ejecuta en clústeres con una arquitectura de "nada compartido" y utiliza hardware estándar (hardware básico). El sistema está construido sobre la base de componentes lógicos: tabletas. La tableta implementa un protocolo para resolver el problema de consenso en una red de computadoras poco confiables. Este protocolo es similar en funcionalidad a los protocolos Paxos y Raft .

Las tablas de usuario tienen una clave principal obligatoria, las tablas están fragmentadas por rangos de clave principal. El fragmento de datos está controlado por una tableta, el tamaño de un fragmento puede ser de hasta unidades de gigabytes. Tales tabletas se llaman DataShard. Una tableta DataShard puede dividirse automáticamente en varias tabletas cuando se supera el umbral de almacenamiento de datos o el umbral de carga de fragmentos. Por lo tanto, el sistema se escala de forma transparente con el aumento de la carga de usuarios.

Hay muchos tipos diferentes de tabletas además de DataShard: tabletas SchemeShard para almacenar metadatos sobre tablas de usuarios, Hive para equilibrar y ejecutar tabletas, Coordinador y Mediador para programar transacciones distribuidas, y muchos otros.

Los datos de la píldora se almacenan en la capa de almacenamiento distribuido, que es un almacén de valores clave con un protocolo especializado para admitir el protocolo de la píldora. El almacenamiento distribuido proporciona replicación de datos, los datos de la tableta se almacenan como BLOB [3] .

YDB implementa transacciones distribuidas entre datos en una o más tablas. El mecanismo de transacciones distribuidas se basa en el algoritmo de Calvin [5] . Sin embargo, a diferencia de Calvin, YDB admite transacciones interactivas y no deterministas. Para ello se utilizan bloqueos optimistas .

Al desarrollar el código YDB, se utiliza el modelo actor . Los actores son máquinas de estado de subproceso único que intercambian mensajes entre sí y residen en diferentes servidores del clúster. Para intercambiar mensajes a través de la red, se utiliza la biblioteca de interconexión desarrollada como parte del proyecto. Se han desarrollado varios servicios sobre YDB. Por ejemplo, dispositivos de bloques virtuales y colas persistentes.

La interacción del usuario con YDB se produce a través del protocolo gRPC [3] . Para YDB, hay una serie de SDK de cliente que implementan mecanismos para el descubrimiento de nodos (discovery), equilibrio de clientes, etc.

Historia

En 2010, Yandex comenzó a desarrollar su propio NoSQL DBMS KiWi [1] . Comenzó a utilizarse en 2011. Sin embargo, KiWi proporcionaba la " coherencia final " y tenía otras desventajas del modelo NoSQL [3] .

En 2012, comenzó el desarrollo interno del proyecto KiKiMR, y solo para las necesidades de Yandex. Fuera de la empresa, el proyecto se llamó YDB [1] . En 2016, el DBMS comenzó a usarse en los servicios de Yandex.

En 2018, se lanzó la plataforma en la nube Yandex Cloud , cuyo almacenamiento de datos se basó en YDB [6] . Al mismo tiempo, la compañía anunció [7] que en el futuro hará que YDB esté disponible en Yandex Cloud como un servicio administrado. Más tarde, dicho acceso realmente comenzó a proporcionarse junto con otros servicios administrados, para PostgreSQL, MongoDB y otros. Esta versión en la nube se llamó Yandex Database (más tarde Servicio administrado para YDB).

En abril de 2022, YDB DBMS se publicó en GitHub como software gratuito bajo la licencia Apache 2.0 [1] .

Notas

  1. 1 2 3 4 Yandex publicó YDB en código abierto . Habr . Recuperado: 12 junio 2022.
  2. Cómo escribir menos código para MR o ¿Por qué el mundo necesita otro lenguaje de consulta? Historia del lenguaje de consulta de Yandex . Habr . Recuperado: 14 junio 2022.
  3. ↑ 1 2 3 4 ¿Alternativa sin servidor a las bases de datos tradicionales  (ruso)  ? . osp.ru._ _ Fecha de acceso: 23 de junio de 2022.
  4. ↑ 1 2 Nikolái Matrosov. Incremento automático en Yandex Database  (ing.) . Medio (14 de febrero de 2022). Fecha de acceso: 24 de abril de 2022.
  5. ↑ Calvin  : ¿ Transacciones distribuidas rápidas para sistemas de bases de datos particionadas  ? . cs.yale.edu . Recuperado: 19 junio 2022.
  6. 001. Yandex Cloud: descripción general de la plataforma - Jan Leshchinsky  (ruso)  ? . youtube _ Recuperado: 12 junio 2022.
  7. sobre:nube, noviembre de 2018 | Grabación de transmisión  (ruso)  ? . youtube _ Recuperado: 12 junio 2022.