RavenDB
RavenDB | |
Utvecklare | Hibernating Rhinos[1] |
---|---|
Först släppt | 2010[2] |
Senaste utgåva | 5.0[3] (24 juli 2020 ) |
Skriven i | C# |
Utvecklingsstatus | Aktiv |
Operativsystem | Multiplattform: Windows, Linux, MacOS, Docker, Raspberry Pi |
Licens | AGPL v3.0 |
Webbplats | ravendb.net hibernatingrhinos.com |
RavenDB är en med öppen källkod fullt ACID dokumentorienterad databas skriven i C# och utvecklad av Hibernating Rhinos Ltd.[4][5][6][1][7] 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.[4][6]
Historia
[redigera | redigera wikitext]RavenDB hette ursprungligen "Rhino DivanDB"[4][8], och började som ett projekt av Oren Eini (alias Ayende Rahien) 2008[9] och är utvecklat av Hibernating Rhinos Ltd.[1][10] Företaget hävdar att det var den första dokumentdatabasen som kunde köras inbyggt i .NET-ramverket.[11][12][5][13] Den var också tidigt för ute med att erbjuda ACID-garantier.[6][13][14]
2019 började Hibernating Rhinos erbjuda RavenDB som en molntjänst som heter RavenDB Cloud.[15][16][17][18]
Versionshistorik
[redigera | redigera wikitext]Version | Datum | Funktioner som lagts till (delvis lista) | Kompatibel? |
---|---|---|---|
1,0 | Maj 2010[2] | Nej | |
2,0 | Januari 2013[19] | Replikering[20][21] | Nej |
2,5 | Juni 2013[22] | Prognoser; facet frågor[20] | Nej |
3,0 | November 2014[23] | Java API; Voron lagringsmotor[24][25] | Nej |
3,5 | Oktober 2016[26] | Klustring[26] | Ja |
4,0 | Februari 2018[27] | Blev plattformsoberoende; tillgänglig med en fri licens[28] | Nej |
4,1 | Augusti 2018[29] | Klusterövergripande transaktioner[16][29] | Nej |
4,2 | Maj 2019[30] | Support för Graf-baserade frågor[16] | Ja |
5,0 | Juli 2020[3] | Tidsserier[31]; Datakomprimering med hjälp av Zstd-algoritmen[32] | Ja |
Systemarkitektur
[redigera | redigera wikitext]Data lagras i databasen som schemalösa dokument i JSON-format.[4][8][5][20][21][7] På lagringsnivån sparas dokumenten i ett binärt format som kallas "blittable".[33] Dokument grupperas i samlingar och varje dokument tillhör alltid en samling.[20][21]
Databaser kan distribueras på ett distribuerat kluster av servrar (som kallas 'noder') med hjälp av multi-master replikering.[4][6] 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.[4] Uppgifter fördelas till de olika noderna på ett balanserat sätt.[4][34]
RavenDB använde ursprungligen Esent-lagringsmotorn[8][9][21]. Version 3.0 ersatte denna med en ny öppen-källkod baserad lagringsmotor som kallas Voron.[24][25]
Klienter finns för C#, C++, Java, Node.js, Python, Ruby och Go.[6]
Huvudfunktioner
[redigera | redigera wikitext]- 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.[4][16]
Indexering och frågor
[redigera | redigera wikitext]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.[4][5][6]
- 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.[4][12][35][20][21][7]
- 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.[36][37][38]
- Projektioner - index kan konfigureras för att omvandla indexerade data, utföra beräkningar, utföra aggregeringar och köra javascript-kod på serversidan.[4][6][39]
- Fulltextsökning - på en låg nivå indexeras data med Lucene.net, vilket innebär att index stöder fulltextsökning.[4][14][20][21][40][41]
Dokumenttillägg
[redigera | redigera wikitext]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.[42]
- Bifogade filer - dokument kan ha flera bilagor av valfri datatyp, till exempel bilder, ljud eller rent binära filer.[35]
- Tidsserier - numeriska data som är associerade med specifika tider och ordnade kronologiskt.[32][31]
RavenDB-moln
[redigera | redigera wikitext]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.[16][17][18][43]
Licens
[redigera | redigera wikitext]RavenDB är öppen källkod under en AGPLv3-licens.[4] Den finns med en fri licens och en kommersiell licens.
Referenser
[redigera | redigera wikitext]- ^ [a b c] ”Other Vendors to Consider for Operational DBMSs”. 2018. https://www.gartner.com/en/documents/3892294/other-vendors-to-consider-for-operational-dbmss.
- ^ [a b] ”RavenDB goes live!”. 2010. https://ayende.com/blog/4507/ravendb-goes-live.
- ^ [a b] ”RavenDB 5.0 has been released”. 2020. https://ravendb.net/articles/ravendb-5-0-has-been-released.
- ^ [a b c d e f g h i j k l m] ”RavenDB”. https://dbdb.io/.
- ^ [a b c d] ”Raven, a Document Database for .NET”. 2010. https://www.infoq.com/news/2010/05/Raven/.
- ^ [a b c d e f g] ”RavenDB System Properties”. https://db-engines.com/en/system/RavenDB.
- ^ [a b c] 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).
- ^ [a b c] ”Ayende's DivanDB (also, is esent the most widely used database engine?)”. 2008. https://blogs.msdn.microsoft.com/laurionb/2008/12/23/ayendes-divandb-also-is-esent-the-most-widely-used-database-engine/.
- ^ [a b] ”Hidden Windows Gems: Extensible Storage Engine”. 2008. https://ayende.com/blog/3769/hidden-windows-gems-extensible-storage-engine.
- ^ ”Hibernating Rhino”. https://hibernatingrhinos.com/.
- ^ ”RavenDB Development: Finally, A Solid Document-based Database for Windows?”. 2019. https://www.whoishostingthis.com/resources/ravendb/. Arkiverad 8 oktober 2020 hämtat från the Wayback Machine. ”Arkiverade kopian”. Arkiverad från originalet den 8 oktober 2020. https://web.archive.org/web/20201008090120/https://www.whoishostingthis.com/resources/ravendb/. Läst 16 mars 2021.
- ^ [a b] ”NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application”. 2011. https://docs.microsoft.com/en-us/archive/msdn-magazine/2011/november/nosql-document-database-embedding-ravendb-into-an-asp-net-mvc-3-application.
- ^ [a b] ”Why Raven DB?”. 2010. https://dzone.com/articles/why-raven-db.
- ^ [a b] ”RavenDB vs SQL Server”. 2012. https://www.integrace.nl/nl/News/307/RavenDB.
- ^ ”Managed RavenDB Cloud Hosting”. https://cloud.ravendb.net/.
- ^ [a b c d e] ”RavenDB Launches Managed Cloud Service”. 2019. https://www.datanami.com/2019/07/02/ravendb-launches-managed-cloud-service/.
- ^ [a b] ”SD Times news digest: Google robots.text parser open sourced, Bonitasoft’s cloud and low-code capabilities, and OWASP ZAP 2.8”. 2019. https://sdtimes.com/goog/sd-times-news-digest-google-robots-text-parser-open-sourced-bonitasofts-cloud-and-low-code-capabilities-and-owasp-zap-2-8/.
- ^ [a b] ”New capabilities in database infrastructure service ensure high availability in Cloud-only scenarios”. 2019. https://it.toolbox.com/blogs/shrutiumathe/ravendb-adds-new-enhancements-to-its-cloud-based-database-service-ensuring-high-availability-in-cloud-110419.
- ^ ”RavenDB 2.0 RTM”. 2013. https://ayende.com/blog/160642/ravendb-2-0-rtm.
- ^ [a b c d e f] ”RavenDB”. https://learning.oreilly.com/library/view/ravendb-2x-beginners/9781783283798/ch01s04.html.[död länk]
- ^ [a b c d e f] ”A document database for the .NET platform”. https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html. Arkiverad 2 november 2020 hämtat från the Wayback Machine. ”Arkiverade kopian”. Arkiverad från originalet den 2 november 2020. https://web.archive.org/web/20201102211752/https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html. Läst 16 mars 2021.
- ^ ”RavenDB 2.5 Release Candidate is out”. 2013. https://ayende.com/blog/162498/ravendb-2-5-release-candidate-is-out.
- ^ ”RavenDB 3.0 RTM”. 2014. https://ayende.com/blog/169313/ravendb-3-0-rtm.
- ^ [a b] ”NoSQL for .NET: RavenDB 3.0 Takes Flight”. 2014. https://visualstudiomagazine.com/articles/2014/12/02/ravendb-3-for-dotnet.aspx.
- ^ [a b] ”NoSQL: RavenDB 3.0 erhält weitere Storage Engine”. 2014. https://www.heise.de/developer/meldung/NoSQL-RavenDB-3-0-erhaelt-weitere-Storage-Engine-2480210.html.
- ^ [a b] ”RavenDB 3.5 RTM released”. 2016. https://ayende.com/blog/175937/ravendb-3-5-rtm-released.
- ^ ”RavenDB 4.0 is out”. 2018. https://ayende.com/blog/181857-A/ravendb-4-0-is-out.
- ^ ”NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar”. 2018. https://www.heise.de/developer/meldung/NoSQL-RavenDB-4-0-jetzt-fuer-Windows-Linux-macOS-und-Docker-verfuegbar-3971913.html.
- ^ [a b] ”RavenDB 4.1 Release Candidate is out”. 2018. https://ayende.com/blog/184194-A/ravendb-4-1-release-candidate-is-out.
- ^ ”RavenDB 4.2 has been released”. 2019. https://ayende.com/blog/187361-A/ravendb-4-2-has-been-released.
- ^ [a b] ”RavenDB Adds Time Series Query Support”. https://www.i-programmer.info/news/84-database/13846-ravendb-adds-time-series-query-support.html.
- ^ [a b] ”RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing”. 2020. https://www.infoq.com/news/2020/08/ravendb-5-release-document-db/.
- ^ ”The Design of RavenDB 4.0: The Implications of the Blittable Format”. 2016. https://dzone.com/articles/the-design-of-ravendb-40-the-implications-of-the-b.
- ^ ”Review: NoSQL database RavenDB”. 2019. http://techgenix.com/review-nosql-database-ravendb/.
- ^ [a b] ”RavenDB: Driving DX through DB infrastructure management”. https://ciostory.com/technology/ravendb-driving-dx-through-db-infrastructure-management/. Arkiverad 11 oktober 2020 hämtat från the Wayback Machine. ”Arkiverade kopian”. Arkiverad från originalet den 11 oktober 2020. https://web.archive.org/web/20201011205901/https://ciostory.com/technology/ravendb-driving-dx-through-db-infrastructure-management/. Läst 16 mars 2021.
- ^ ”RavenDB Adds Graph Queries”. 2019. https://www.datanami.com/2019/05/15/ravendb-adds-graph-queries/.
- ^ ”SD Times news digest: New Relic One, WhiteSource for Developers, RavenDB4.2, and VMware’s acquisition of Bitnami”. 2019. https://sdtimes.com/softwaredev/sd-times-news-digest-new-relic-one-whitesource-for-developers-ravendb4-2-and-vmware-acquisition-of-bitnami/.
- ^ ”Graph API”. https://ravendb.net/features/querying/graph-api.
- ^ ”Data Modeling with Indexes in RavenDB”. 2019. https://www.codeproject.com/Articles/1348454/Data-Modeling-with-Indexes-in-RavenDB.
- ^ Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.
- ^ ”Data Points - What the Heck Are Document Databases?”. 2011. https://docs.microsoft.com/en-us/archive/msdn-magazine/2011/november/data-points-what-the-heck-are-document-databases.
- ^ ”A document database for the .NET platform”. https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html. Arkiverad 2 november 2020 hämtat från the Wayback Machine. ”Arkiverade kopian”. Arkiverad från originalet den 2 november 2020. https://web.archive.org/web/20201102211752/https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html. Läst 16 mars 2021.
- ^ ”RavenDB Adds New Enhancements to Its Cloud-Based Database Service”. https://bigdata-madesimple.com/interview-with-oren-eini-of-ravendb-on-database-management-analytics-security/. Arkiverad 8 oktober 2020 hämtat från the Wayback Machine. ”Arkiverade kopian”. Arkiverad från originalet den 8 oktober 2020. https://web.archive.org/web/20201008141436/https://bigdata-madesimple.com/interview-with-oren-eini-of-ravendb-on-database-management-analytics-security/. Läst 16 mars 2021.