RavenDB är en med öppen källkod fullt ACID dokumentorienterad databas skriven i C# och utvecklad av Hibernating Rhinos Ltd. Den är plattformsoberoende, och har stöd för Windows, Linux och MacOS. RavenDB lagrar data som JSON-dokument, och kan distribueras i distribuerade kluster med master-master-replikering.

Historia RavenDB hette ursprungligen "Rhino DivanDB", och började som ett projekt av Oren Eini (alias Ayende Rahien) 2008 och är utvecklat av Hibernating Rhinos Ltd. Företaget hävdar att det var den första dokumentdatabasen som kunde köras inbyggt i .NET-ramverket. Den var också tidigt för ute med att erbjuda ACID-garantier.

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

Versionshistorik Version Datum Funktioner som lagts till (delvis lista) Kompatibel? 1,0 Maj 2010 2,0 Januari 2013 Replikering 2,5 Juni 2013 Prognoser; facet frågor 3,0 November 2014 Java API; Voron lagringsmotor 3,5 Oktober 2016 Klustring 4,0 Februari 2018 Blev plattformsoberoende; tillgänglig med en fri licens 4,1 Augusti 2018 Klusterövergripande transaktioner 4,2 Maj 2019 Support för Graf-baserade frågor 5,0 Juli 2020 Tidsserier; Datakomprimering med hjälp av Zstd-algoritmen

Systemarkitektur Data lagras i databasen som schemalösa dokument i JSON-format. På lagringsnivån sparas dokumenten i ett binärt format som kallas "blittable". Dokument grupperas i samlingar och varje dokument tillhör alltid en samling.

Databaser kan distribueras på ett distribuerat kluster av servrar (som kallas '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 kallad Rachis. Uppgifter fördelas till de olika noderna på ett balanserat sätt.

RavenDB använde ursprungligen Esent-lagringsmotorn. Version 3.0 ersatte denna med en ny öppen-källkod baserad lagringsmotor som kallas Voron.

Klienter finns för C#, C++, Java, Node.js, Python, Ruby och Go.

Huvudfunktioner Klusterövergripande: ACID-transaktioner - ACID-transaktioner kan utföras både mot klustret eller enstaka noder. Transaktioner kommer bara att genomföras om den bekräftas genom en konsensus av noder, annars avbryts transaktionen och rullas tillbaka.

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

Dynamiska index - RavenDB-frågor kan endast uppfyllas med ett index; om inget lämpligt index finns skapas ett nytt index automatiskt för att tillfredsställa frågan. Kaur, Harpreet, and Kamal Jeet Kaur. "A Review: Study of Document oriented databases and their Security." International Journal of Advanced Research in Computer Science 4.8 (2013). Graf frågor - relaterade dokument kan behandlas som hörn i en graf, med anslutningarna som behandlas som kanter. Detta gör det möjligt att skapa rekursiva frågor. Projektioner - index kan konfigureras för att omvandla indexerade data, utföra beräkningar, utföra aggregeringar och köra 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.Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.

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

Bifogade filer - dokument kan ha flera bilagor av valfri datatyp, till exempel bilder, ljud eller rent binära filer. Tidsserier - numeriska data som är associerade med specifika tider och ordnade kronologiskt.

RavenDB-moln RavenDB Cloud är en databas-som-en-tjänst som lanserades 2019 på AWS, Azure och GCP. Tjänsten utför administrationsuppgifter som maskinvaruunderhå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 begränsningar.

Licens RavenDB är öppen källkod under en AGPLv3-licens. Den finns med en fri licens och en kommersiell licens.

Referenser

Externa länkar Officiell webbplats GitHub RavenDB-moln Ayende blogg

Kategori:Databaser