Una base de datos SQL distribuida es una única base de datos relacional que replica datos en múltiples servidores. Las bases de datos SQL distribuidas ofrecen una consistencia fuerte y, en su mayoría, admiten la consistencia entre racks, centros de datos y redes de área amplia, incluidas las zonas de disponibilidad y las zonas geográficas de la nube . Generalmente, las bases de datos SQL distribuidas utilizan los algoritmos Paxos o Raft para lograr el consenso entre múltiples nodos.
A veces, a las bases de datos SQL distribuidas se las denomina NewSQL , pero NewSQL es un término más inclusivo que abarca bases de datos que no son distribuidas .
Historia
Spanner de Google popularizó el concepto moderno de base de datos SQL distribuida. Google describió la base de datos y su arquitectura en un documento técnico de 2012 titulado "Spanner: la base de datos distribuida globalmente de Google". El documento describía a Spanner como una base de datos que había evolucionado desde un almacén de clave-valor similar a Big Table hasta una base de datos temporal multiversión donde los datos se almacenan en "tablas semirrelacionales esquematizadas". [ 1 ]
Spanner utiliza relojes atómicos con el algoritmo Paxos para lograr consenso respecto al estado distribuido entre servidores. En 2010, y en una implementación anterior, ClustrixDB (ahora MariaDB Xpand) pasó de ser un dispositivo de hardware a una base de datos de software basada en Paxos [ 2 ] y posteriormente fue adquirida por MariaDB [ 3 ] y añadida a una oferta de nube SaaS llamada SkySQL . [ 4 ] En 2015, dos ingenieros de Google dejaron la empresa para crear Cockroach DB , que logra resultados similares utilizando el algoritmo Raft sin relojes atómicos ni hardware personalizado. [ 5 ]
Spanner se utiliza principalmente para casos de uso transaccionales y de series temporales. Sin embargo, Google amplió esta investigación con un artículo posterior sobre Google F1, que describe como una base de datos híbrida de procesamiento transaccional/analítico construida sobre Spanner. [ 1 ]
Arquitectura
Las bases de datos SQL distribuidas tienen las siguientes características generales:
- replicación síncrona
- fuerte consistencia transaccional en al menos las zonas de disponibilidad (es decir, cumplimiento ACID ) [ 6 ]
- Estructura de interfaz de base de datos relacional : los datos se representan como tablas con filas y columnas, similar a cualquier otro sistema de gestión de bases de datos relacionales (RDBMS).
- almacenamiento de datos fragmentado automáticamente
- almacenamiento subyacente de clave-valor [ 7 ] [ 1 ]
- Implementación SQL nativa
Según el teorema CAP , las bases de datos SQL distribuidas son "CP", es decir, consistentes y tolerantes a particiones. Algorítmicamente, sacrifican la disponibilidad, ya que un fallo en un nodo principal puede dejar la base de datos inaccesible para escrituras.
Todas las implementaciones de SQL distribuidas requieren algún tipo de sincronización temporal para garantizar la consistencia. Con la excepción de Spanner, la mayoría no utiliza hardware personalizado para proporcionar relojes atómicos. Spanner es capaz de sincronizar las escrituras con garantías temporales. Las implementaciones sin hardware personalizado requieren que los servidores comparen los desfases de reloj y, potencialmente, reintenten las lecturas. [ 8 ]
Implementaciones de SQL distribuido
En comparación con NewSQL
CockroachDB, YugabyteDB y otras se han autodenominado en ocasiones bases de datos NewSQL . Algunas de estas bases de datos NewSQL tienen arquitecturas fundamentalmente diferentes, pero Matthew Aslett, quien acuñó el término, las citó como ejemplos de NewSQL. [ 10 ] En esencia, las bases de datos SQL distribuidas se construyen desde cero, y las bases de datos NewSQL incluyen tecnologías de replicación y fragmentación añadidas a bases de datos relacionales cliente-servidor existentes como PostgreSQL . [ 11 ] Algunos expertos definen las bases de datos DistributedSQL como un subconjunto más específico de las bases de datos NewSQL. [ 12 ]
Referencias
- 1 2 3 Shute, Jeff; Whipkey, Chad; Vingralek, Radek; et al. (2013). F1: Una base de datos SQL distribuida que se escala (PDF) . La 39.ª Conferencia Internacional sobre Bases de Datos Muy Grandes, del 26 al 30 de agosto de 2013, Riva del Garda, Trento, Italia . Vol. 6. VLDB Endowment. Archivado (PDF) del original el 10 de marzo de 2026. Recuperado el 10 de mayo de 2026 .
- ↑ Higginbotham, Stacey (3 de mayo de 2010). "Clustrix crea el Santo Grial de la escala web: una base de datos que se adapta a la escala" . gigaom.com .
- ↑ "MariaDB adquiere Clustrix" . 20 de septiembre de 2018.
- ↑ Baer (dbInsight), Tony. "Para MariaDB, es hora de juntar las piezas" . ZDNet .
- ↑ Morgan, Timothy Prickett (22 de febrero de 2017). "Google Spanner inspira a CockroachDB a superarlo" . The Next Platform .
- ↑ El futuro de las bases de datos: SQL distribuido y MariaDB® , consultado el 21/12/2022
- ↑ "La arquitectura de una base de datos SQL distribuida" . 23 de septiembre de 2020 – vía www.youtube.com.
- ↑ "Vivir sin relojes atómicos" . Cockroach Labs . 21 de abril de 2020.
- ↑ "YDB es una base de datos SQL distribuida de código abierto que combina alta disponibilidad y escalabilidad con una fuerte consistencia y transacciones ACID" . ydb.tech .
- ↑ "De qué hablamos cuando hablamos de NewSQL: demasiada información" . Archivado del original el 14 de junio de 2020. Consultado el 26 de enero de 2021 .
- ↑ "Bases de datos SQL vs. NoSQL: ¿Cuál es la diferencia?" . www.ibm.com . 12 de junio de 2022.
- ↑ Prabagaren, Gokul (30 de octubre de 2019). "NewSQL: la próxima evolución en bases de datos" . Medium .
- SQL