Yandex öppnade koden för den distribuerade DBMS YDB som stöder SQL

Yandex har publicerat källtexterna för det distribuerade YDB DBMS, som implementerar stöd för SQL-dialekt och ACID-transaktioner. DBMS skapades från grunden och utvecklades initialt med sikte på att säkerställa feltolerans, automatisk återställning vid fel och skalbarhet. Det noteras att Yandex lanserade fungerande YDB-kluster, inklusive mer än 10 tusen noder, som lagrar hundratals petabyte data och betjänar miljontals distribuerade transaktioner per sekund. YDB används i Yandex-projekt som Market, Cloud, Smart Home, Alice, Metrika och Auto.ru. Koden är skriven i C/C++ och distribueras under Apache 2.0-licensen. För bekantskap och snabb lansering kan du använda en färdig Docker-behållare.

Projektegenskaper:

  • Använda relationsdatamodellen med tabeller. YQL (YDB Query Language) används för att fråga och definiera dataschemat, som är en dialekt av SQL anpassad för att fungera med stora distribuerade databaser. När du skapar ett lagringsschema stöds en trädliknande gruppering av tabeller, som liknar kataloger i ett filsystem. Ett API tillhandahålls för att arbeta med data i JSON-format.
    Yandex öppnade koden för den distribuerade DBMS YDB som stöder SQL
  • Stöd för dataåtkomst med skanningsfrågor utformade för att utföra analytiska ad-hoc-frågor mot databasen, exekveras i skrivskyddat läge och returnerar en grpc-ström.
  • Interaktion med DBMS och att skicka förfrågningar utförs med kommandoradsgränssnittet, det inbyggda webbgränssnittet eller YDB SDK, som tillhandahåller bibliotek för C ++, C # (.NET), Go, Java, Node.js, PHP och Python.
  • Möjligheten att skapa feltoleranta konfigurationer som fortsätter att fungera när enskilda diskar, noder, rack och till och med datacenter misslyckas. YDB stöder distribution och synkron replikering över tre tillgänglighetszoner samtidigt som klustrets hälsa bibehålls i händelse av ett fel i en av zonerna.
  • Återställ automatiskt från fel med minimala förseningar för applikationer och bibehåll automatiskt den angivna redundansen vid lagring av data.
  • Automatiskt skapande av index på primärnyckeln och möjligheten att definiera sekundära index för att förbättra effektiviteten för åtkomst till godtyckliga kolumner.
  • Horisontell skalbarhet. När belastningen och storleken på lagrad data växer kan klustret utökas genom att helt enkelt ansluta nya noder. Beräknings- och lagringsnivåerna är separerade, vilket möjliggör beräknings- och lagringsskalning separat. DBMS själv övervakar den enhetliga fördelningen av data och belastning, med hänsyn till tillgängliga hårdvaruresurser. Det är möjligt att distribuera geografiskt fördelade konfigurationer som täcker flera datacenter i olika delar av världen.
  • Stöd för stark konsistensmodell och ACID-transaktioner vid bearbetning av frågor som spänner över flera noder och tabeller. För att förbättra prestandan kan du selektivt inaktivera konsistenskontrollen.
  • Automatisk datareplikering, automatisk partitionering (partitionering, skärning) när storleken eller belastningen ökar, och automatisk belastning och databalansering mellan noder.
  • Lagra data direkt på blockenheter med inbyggd PDisk-komponent och VDisk-lager. Utöver VDisk körs DSProxy som analyserar tillgänglighet och prestanda för diskar för att utesluta dem om problem upptäcks.
  • En flexibel arkitektur som låter dig skapa ovanpå YDB, olika tjänster, upp till virtuella blockenheter och beständiga köer (persistent queue). Applikationslämplighet för olika typer av arbetsbelastning, OLTP och OLAP (analytiska frågor).
  • Stöd för fleranvändare (multitenant) och serverlösa konfigurationer. Förmåga att autentisera kunder. Användare kan skapa sina egna virtuella kluster och databaser i en gemensam delad infrastruktur, med hänsyn till resursförbrukning i nivå med antalet förfrågningar och datastorlek, eller genom att hyra/reservera vissa datorresurser och lagringsutrymme.
  • Möjlighet att justera livslängden för poster för automatisk radering av föråldrade data.

Källa: opennet.ru

Lägg en kommentar