Distribuerad SQL

En distribuerad SQL- databas är en enda relationsdatabas som replikerar data över flera servrar. Distribuerade SQL-databaser är starkt konsekventa och de flesta stöder konsistens över rack, datacenter och wide area-nätverk inklusive molntillgänglighetszoner och molngeografiska zoner. Distribuerade SQL-databaser använder vanligtvis Paxos- eller Raft- algoritmerna för att uppnå konsensus över flera noder.

Ibland kallas distribuerade SQL-databaser som NewSQL men NewSQL är en mer inkluderande term som inkluderar databaser som inte är distribuerade databaser .

Historia

Googles Spanner populariserade det moderna distribuerade SQL - databaskonceptet. Google beskrev databasen och dess arkitektur i ett whitepaper från 2012 kallat "Spanner: Google's Globally-Distributed Database." Uppsatsen beskrev Spanner som att ha utvecklats från ett Big Table -liknande nyckelvärdeslager till en temporär multiversionsdatabas där data lagras i "schematiserade semirelationella tabeller."

Spanner använder atomklockor med Paxos-algoritmen för att uppnå konsensus med avseende på tillstånd fördelat mellan servrar. Under 2010, och tidigare implementering, ClustrixDB (nu MariaDB Xpand) från en hårdvaruenhet till en Paxos-baserad mjukvarudatabas och förvärvades senare av MariaDB och lades till ett SaaS -molnerbjudande som heter SkySQL . 2015 lämnade två Google-ingenjörer företaget för att skapa Cockroach DB som uppnår liknande resultat med Raft-algoritmen utan atomur eller anpassad hårdvara.

Spanner används främst för transaktions- och tidsserieanvändningsfall. Google fortsatte dock denna forskning med en uppföljning på papper om Google F1 som den beskriver som en hybrid transaktions-/analytisk bearbetningsdatabas byggd på Spanner.

Arkitektur

Distribuerade SQL-databaser har följande allmänna egenskaper:

  • synkron replikering
  • stark transaktionskonsistens över åtminstone tillgänglighetszoner (dvs. ACID- överensstämmelse)
  • relationsdatabas gränssnittsstruktur – betyder data representerade som tabeller med rader och kolumner som liknar alla andra RDBMS
  • automatiskt delad datalagring
  • underliggande nyckel-värde lagring
  • inbyggd SQL-implementering

Efter CAP-teorem är distribuerade SQL-databaser "CP" eller konsekventa och partitionstoleranta. Algoritmiskt offras tillgängligheten genom att ett fel på en primär nod kan göra databasen otillgänglig för skrivningar. Tillgänglighet uppnås dock genom ökad tillförlitlighet för mjukvara och hårdvara, val av nya primärval och heuristiska återställningsmetoder.

Alla distribuerade SQL-implementeringar kräver någon form av tidssynkronisering för att garantera konsekvens. Med undantag för Spanner använder de flesta inte anpassad hårdvara för att tillhandahålla atomklockor. Spanner kan synkronisera skrivningar med tidsmässiga garantier. Implementeringar utan anpassad hårdvara kräver att servrar jämför klockförskjutningar och eventuellt försöker läsa igen.

Distribuerade SQL-implementationer

Säljare API
Amazon Aurora PostgreSQL & MySQL
Citus Data (Microsoft) PostgreSQL
KackerlackaDB PostgreSQL- liknande
Google Spanner Proprietär SQL-liknande
NuoDB Proprietär SQL
YugabyteDB PostgreSQL & Cassandra CQL-liknande
TiDB MySQL - gillar
MariaDB XPand MariaDB
Teradata Proprietär SQL-liknande
YDB Proprietär SQL-liknande

Jämfört med NewSQL

CockroachDB, YugabyteDB och andra har ibland kallat sig för NewSQL- databaser. Några av NewSQL-databaserna som Citus och Vitess har fundamentalt olika arkitekturer, men citerades som exempel på NewSQL av Matthew Aslett som myntade termen. I huvudsak byggs distribuerade SQL-databaser från grunden och NewSQL-databaser inkluderar replikerings- och skärningsteknologier som läggs till befintliga klient-server-relationsdatabaser som PostgreSQL . Vissa experter definierar DistributedSQL-databaser som en mer specifik delmängd av NewSQL-databaser.

  1. ^ a b c https://storage.googleapis.com/pub-tools-public-publication-data/pdf/41344.pdf [ blottad URL PDF ]
  2. ^ Higginbotham, Stacey (3 maj 2010). "Clustrix Builds the Webscale Holy Grail: A Database That Scales" . gigaom.com .
  3. ^ "MariaDB förvärvar Clustrix" .
  4. ^ Baer (dbInsight), Tony. "För MariaDB är det dags att sätta ihop bitarna" . ZDNet .
  5. ^ Morgan, Timothy Prickett (22 februari 2017). "Google Spanner inspirerar CockroachDB att överträffa det" . Nästa plattform .
  6. ^ Framtiden för databaser: distribuerad SQL & MariaDB ® , hämtad 2022-12-21
  7. ^ "Arkitekturen för en distribuerad SQL-databas" – via www.youtube.com.
  8. ^ "DZone" . dzone.com .
  9. ^ "Att leva utan atomklockor" . Kackerlacka Labs . 21 april 2020.
  10. ^ "YDB är en distribuerad SQL-databas med öppen källkod som kombinerar hög tillgänglighet och skalbarhet med stark konsekvens och ACID-transaktioner. " ydb.tech .
  11. ^ "Vad vi pratar om när vi pratar om NewSQL - För mycket information" .
  12. ^ "SQL vs. NoSQL-databaser: Vad är skillnaden?" . www.ibm.com .
  13. ^ Prabagaren, Gokul (30 oktober 2019). "NewSQL — The Next Evolution in Databases" . Medium .