RavenDB
Originalförfattare | Oren Eini (alias Ayende Rahien) |
---|---|
Utvecklare | Hibernerande noshörningar |
Initial release | 2010 |
Stabil frisättning | 5.3 / november 2021
|
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 ä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.