KratDB - CrateDB

KratDB
CrateDB Logo.jpg
Ontwikkelaar(s) Crate.io, Inc.
Stabiele vrijlating
4.5 / 31.03.2021
Opslagplaats https://github.com/crate/crate
Geschreven in Java
Besturingssysteem Cross-platform
Type Gegevensopslag
Vergunning Apache-licentie 2.0
Website krat .io

CrateDB is een gedistribueerd SQL- databasebeheersysteem dat een volledig doorzoekbare documentgeoriënteerde gegevensopslag integreert . Het is open-source , geschreven in Java , gebaseerd op een gedeelde-niets-architectuur en ontworpen voor hoge schaalbaarheid. CrateDB bevat componenten van Trino , Lucene , Elasticsearch en Netty .

Geschiedenis

Het CrateDB-project is gestart door Jodok Batlogg, een open source-bijdrager en maker die heeft bijgedragen aan het Open Source Initiative Vorarlberg bij Lovely Systems in Dornbirn . De software is een open source, geclusterde database die wordt gebruikt voor snel zoeken naar tekst en analyses.

Het bedrijf, dat nu Crate.io heet, haalde zijn eerste financieringsronde op in april 2014. In juni van dat jaar won Crate.io de juryprijs bij de GigaOm Structure Launchpad-competitie. In oktober won Crate.io de TechCrunch Disrupt Europe in Londen.

Crate.io sloot in maart 2016 een oprichtingsronde van $ 4 miljoen af. In december werd CrateDB 1.0 uitgebracht met meer dan een miljoen downloads.

CrateDB 2.0, de eerste Enterprise-editie van CrateDB, werd in mei 2017 uitgebracht na een ronde van $ 2,5 miljoen van Dawn Capital, Draper Esprit, Speedinvest en Sunstone Capital.

CrateDB 4.0 werd uitgebracht in juni 2019.

Sinds september 2020 wordt Crate.io geleid door Eva Schönleitner als CEO.

Overzicht

architectuur

CrateDB werkt in een shared-nothing-architectuur als een cluster van identiek geconfigureerde servers (nodes). De knooppunten coördineren om de uitvoering van zowel schrijf- als querybewerkingen automatisch over het cluster te verdelen.

Opvragen

De SQL-syntaxis van CrateDB omvat JOIN's, aggregaties, indexen, subquery's, door de gebruiker gedefinieerde functies en weergaven. Het ondersteunt ook zoeken in volledige tekst, geospatiale query's en geneste JSON-objectkolommen.

Voor querydistributie implementeert CrateDB geheugenresidente kolomveldcaches op elke shard. De caches vertellen de query-engine of er rijen op die shard zijn die voldoen aan de querycriteria en waar de rijen zich bevinden. Dit wordt automatisch uitgevoerd.

Schema's

CrateDB ondersteunt "strikte", "dynamische" of "genegeerde" schema's:

  • Strikt schema: als een INSERT-instructie een kolom bevat die niet in de tabel is gedefinieerd, dwingt CrateDB het oorspronkelijke schema af door de INSERT te weigeren en een fout te genereren.
  • Dynamisch schema: CrateDB werkt het schema automatisch bij door de nieuwe kolom te indexeren.
  • Genegeerd schema: CrateDB indexeert de kolom niet, maar slaat de gewone JSON-waarde op.

Samenhang

CrateDB implementeert een uiteindelijk consistent , niet-blokkerend model voor het invoegen van gegevens. Het omvat recordversiebeheer, optimistische gelijktijdigheidscontrole en een verversingsfrequentie-instelling op tabelniveau, waardoor CrateDB-gegevens elke n milliseconden consistent worden .

CrateDB ondersteunt read-after-write-consistentie: de query's die een specifieke rij ophalen met de primaire sleutel, ontvangen altijd de meest recente rij. Alle andere zoekopdrachten (zoekbewerkingen) retourneren uiteindelijk consistente gegevens.

Zoekbewerkingen worden uitgevoerd op gedeelde IndexReaders , die caching en reverse lookup-mogelijkheden bieden voor shards. Een IndexReader is altijd gebonden aan het Lucene-segment van waaruit het is gestart, wat betekent dat het moet worden vernieuwd om nieuwe wijzigingen te zien. Daarom ziet een zoekopdracht alleen een wijziging als de bijbehorende IndexReader is vernieuwd nadat die wijziging heeft plaatsgevonden. Standaard wordt dit één keer per seconde gedaan, maar het kan opnieuw worden geconfigureerd om meer of minder vaak voor te komen.

Elke replica-shard wordt synchroon bijgewerkt met de primaire en bevat altijd dezelfde informatie. In termen van consistentie maakt het daarom niet uit of de primaire of een replica-shard wordt geopend. In CrateDB heeft alleen het vernieuwen van de IndexReader invloed op de consistentie.

Atomisering en duurzaamheid

CrateDB implementeert WAL ( write-ahead logging):

  • Bewerkingen op rijen (die intern in CrateDB worden opgeslagen als JSON-documenten) zijn atomair.
  • Bewerkingen op rijen blijven op schijf staan ​​zonder dat voor elke schrijfbewerking een Lucene-commit hoeft te worden uitgevoerd. Wanneer de translog wordt gewist, worden alle gegevens naar de persistente indexopslag van Lucene geschreven en wordt de translog gewist.
  • In het geval van een onreine afsluiting van een shard, worden de transacties in de translog bij het opstarten opnieuw afgespeeld om ervoor te zorgen dat alle uitgevoerde bewerkingen permanent zijn.
  • De translog wordt ook rechtstreeks overgedragen wanneer een nieuw toegewezen replica zichzelf initialiseert vanaf de primaire shard.

Referenties

Externe links