RavenDB

RavenDB
Originalförfattare Oren Eini (alias Ayende Rahien)
Utvecklare Hibernerande noshörningar
Initial release 2010 ; 13 år sedan ( 2010 )
Stabil frisättning
5.3 / november 2021 ; 1 år sedan ( 2021-11 )
Förvar
Skrivet i C#
Motor Voron
Operativ system Windows , Linux , Mac OS , Docker och Raspberry Pi
Tillgänglig i engelsk
Typ Dokumentorienterad databas
Licens AGPLv3
Hemsida
ravendb .net hibernatingrhinos .com

RavenDB är en helt ACID -dokumentorienterad databas med öppen källkod skriven i C# , utvecklad av Hibernating Rhinos Ltd. Den är plattformsoberoende, stöds på Windows , Linux och Mac OS . RavenDB lagrar data som JSON- dokument och kan distribueras i distribuerade kluster med master-master-replikering.

Historia

som ursprungligen hette " Rhino DivanDB ", började 2008 som ett projekt av Oren Eini (alias Ayende Rahien) och är utvecklat av Hibernating Rhinos Ltd. Företaget hävdar att det var den första dokumentdatabasen som kördes inbyggt i .NET Framework . Det var en tidig dokumentdatabas för att erbjuda ACID- garantier.

2019 började Hibernating Rhinos erbjuda RavenDB som en molntjänst med namnet RavenDB Cloud.

Versionshistorik

Version Datum Funktioner tillagda (delvis lista)
1.0 maj 2010
2.0 Januari 2013 Replikering
2.5 Juni 2013 Projektioner; facettfråga
3.0 november 2014 Java API ; Voron lagringsmotor
3.5 oktober 2016 Klustring
4.0 februari 2018 Blev plattformsoberoende; tillgänglig med en gratis licens
4.1 augusti 2018 Klusterövergripande transaktioner
4.2 maj 2019 Graffråga
5.0 juli 2020 Tidsserier ; Datakomprimering med Zstd-algoritmen
5.1 november 2020 Indexering av bilagor; Hub/Sink-replikering med filtrering
5.2 juni 2021 OLAP ETL; Anpassade analysatorer
5.3 november 2021 Samtidiga dataabonnemang; Stöd för Microsoft Power BI
  • Röd : Stöds inte
  • Grön : Stöds

System arkitektur

Data lagras som schemalösa dokument i JSON- format. Dokument grupperas i samlingar, där varje dokument har exakt en samling.

Databaser kan distribueras på ett distribuerat kluster av servrar (kallade "noder") med hjälp av multi-master replikering. Vissa operationer på klusternivå kräver konsensus av en majoritet av noder; konsensus bestäms med hjälp av en implementering av Raft -algoritmen som kallas Rachis. Uppgifterna fördelas till de olika noderna på ett balanserat sätt.

Versioner 1.0 till 3.5 stödde sharding, men version 4.x gör det inte.

RavenDB använde ursprungligen ESENT- lagringsmotorn. Version 3.0 ersatte den med en ny lagringsmotor med öppen källkod som heter Voron.

Klienter stöds för C# , C++ , Java , NodeJS , Python , Ruby och Go .

Huvuddrag

  • Klusteromfattande ACID - transaktioner - ACID- transaktioner kan utföras inom ramen för ett kluster (utöver enstaka nodtransaktioner). Transaktionen kommer endast att fortsätta om den bekräftas av en konsensus av noder; om det inte är det, avbryts transaktionen och återställs.
  • Distribuerade räknare

Indexer och förfrågningar

Frågor uttrycks i LINQ eller med ett anpassat frågespråk som heter RQL (står för Raven Query Language) med syntax som liknar SQL .

  • Dynamiska index - i RavenDB är att frågor endast kan tillfredsställas av ett index; om inget lämpligt index finns skapas ett nytt index för att tillfredsställa frågan.
  • Grafförfrågningar - relaterade dokument kan behandlas som hörn i en graf, med anslutningarna behandlade som kanter. Detta gör det möjligt att skapa rekursiva frågor.
  • Projektion - index kan konfigureras för att transformera indexerad data, utföra beräkningar, utföra aggregering och exekvera JavaScript- kod på serversidan.
  • Fulltextsökning - på en låg nivå indexeras data med Lucene.net , vilket innebär att index stöder fulltextsökning.

Dokumenttillägg

Dokument kan utökas med andra datatyper som är mindre lämpade för JSON. Dessa tillägg kan laddas, ändras och lagras oberoende av själva dokumentet.

  • Bilagor - dokument kan ha flera bilagor av vilken datatyp som helst, till exempel bilder, ljud eller rent binärt.
  • Tidsserier - numeriska data kopplade till specifika tider och ordnade kronologiskt.

RavenDB Cloud

RavenDB Cloud är en hanterad databas-som-en-tjänst som lanserades 2019 på AWS , Azure och GCP . Tjänsten utför administrativa uppgifter som hårdvaruunderhåll och säkerhet för användare. Den har delning av CPU-resurser mellan de olika noderna i ett kluster för att undvika strypning.

Inbäddad instans

RavenDB kan också köras som en inbäddad instans, ett bra alternativ för mindre applikationer och proof of concepts, till exempel.

Från deras server: Köra en inbäddad instanssida : "RavenDB gör det väldigt enkelt att bäddas in i din applikation, med RavenDB Embedded-paketet kan du integrera din RavenDB-server med några enkla steg."

Licensiering

RavenDB är öppen källkod under en AGPLv3 -licens. Det är tillgängligt med en kommersiell licens och en gratis licens för projekt med öppen källkod, men det måste ansökas om.

externa länkar