close
Hoppa till innehållet

RavenDB

Från Wikipedia
RavenDB
UtvecklareHibernating Rhinos[1]
Först släppt2010[2]
Senaste utgåva5.0[3]
(24 juli 2020; för 5 år sedan (2020-07-24))
Skriven iC#
UtvecklingsstatusAktiv
OperativsystemMultiplattform: Windows, Linux, MacOS, Docker, Raspberry Pi
LicensAGPL v3.0
Webbplatsravendb.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]

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]
VersionDatumFunktioner som lagts till (delvis lista)Kompatibel?
1,0Maj 2010[2]Nej
2,0Januari 2013[19]Replikering[20][21]Nej
2,5Juni 2013[22]Prognoser; facet frågor[20]Nej
3,0November 2014[23]Java API; Voron lagringsmotor[24][25]Nej
3,5Oktober 2016[26]Klustring[26]Ja
4,0Februari 2018[27]Blev plattformsoberoende; tillgänglig med en fri licens[28]Nej
4,1Augusti 2018[29]Klusterövergripande transaktioner[16][29]Nej
4,2Maj 2019[30]Support för Graf-baserade frågor[16]Ja
5,0Juli 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]

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

  1. 1 2 3 ”Other Vendors to Consider for Operational DBMSs”. 2018. https://www.gartner.com/en/documents/3892294/other-vendors-to-consider-for-operational-dbmss.
  2. 1 2 ”RavenDB goes live!”. 2010. https://ayende.com/blog/4507/ravendb-goes-live.
  3. 1 2 ”RavenDB 5.0 has been released”. 2020. https://ravendb.net/articles/ravendb-5-0-has-been-released.
  4. 1 2 3 4 5 6 7 8 9 10 11 12 13 ”RavenDB”. https://dbdb.io/.
  5. 1 2 3 4 ”Raven, a Document Database for .NET”. 2010. https://www.infoq.com/news/2010/05/Raven/.
  6. 1 2 3 4 5 6 7 ”RavenDB System Properties”. https://db-engines.com/en/system/RavenDB.
  7. 1 2 3 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).
  8. 1 2 3 ”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/.
  9. 1 2 ”Hidden Windows Gems: Extensible Storage Engine”. 2008. https://ayende.com/blog/3769/hidden-windows-gems-extensible-storage-engine.
  10. ”Hibernating Rhino”. https://hibernatingrhinos.com/.
  11. ”RavenDB Development: Finally, A Solid Document-based Database for Windows?”. 2019. Arkiverad från originalet den 2020-10-08. https://web.archive.org/web/20201008090120/https://www.whoishostingthis.com/resources/ravendb/. Läst 16 mars 2021. ”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.
  12. 1 2 ”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.
  13. 1 2 ”Why Raven DB?”. 2010. https://dzone.com/articles/why-raven-db.
  14. 1 2 ”RavenDB vs SQL Server”. 2012. Arkiverad från originalet den 2020-10-08. https://web.archive.org/web/20201008214658/https://www.integrace.nl/nl/News/307/RavenDB. Läst 16 mars 2021.
  15. ”Managed RavenDB Cloud Hosting”. https://cloud.ravendb.net/.
  16. 1 2 3 4 5 ”RavenDB Launches Managed Cloud Service”. 2019. https://www.datanami.com/2019/07/02/ravendb-launches-managed-cloud-service/.
  17. 1 2 ”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/.
  18. 1 2 ”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.
  19. ”RavenDB 2.0 RTM”. 2013. https://ayende.com/blog/160642/ravendb-2-0-rtm.
  20. 1 2 3 4 5 6 ”RavenDB”. https://learning.oreilly.com/library/view/ravendb-2x-beginners/9781783283798/ch01s04.html.[död länk]
  21. 1 2 3 4 5 6 ”A document database for the .NET platform”. Arkiverad från originalet den 2020-11-02. https://web.archive.org/web/20201102211752/https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html. Läst 16 mars 2021. ”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.
  22. ”RavenDB 2.5 Release Candidate is out”. 2013. https://ayende.com/blog/162498/ravendb-2-5-release-candidate-is-out.
  23. ”RavenDB 3.0 RTM”. 2014. https://ayende.com/blog/169313/ravendb-3-0-rtm.
  24. 1 2 ”NoSQL for .NET: RavenDB 3.0 Takes Flight”. 2014. https://visualstudiomagazine.com/articles/2014/12/02/ravendb-3-for-dotnet.aspx.
  25. 1 2 ”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.
  26. 1 2 ”RavenDB 3.5 RTM released”. 2016. https://ayende.com/blog/175937/ravendb-3-5-rtm-released.
  27. ”RavenDB 4.0 is out”. 2018. https://ayende.com/blog/181857-A/ravendb-4-0-is-out.
  28. ”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.
  29. 1 2 ”RavenDB 4.1 Release Candidate is out”. 2018. https://ayende.com/blog/184194-A/ravendb-4-1-release-candidate-is-out.
  30. ”RavenDB 4.2 has been released”. 2019. https://ayende.com/blog/187361-A/ravendb-4-2-has-been-released.
  31. 1 2 ”RavenDB Adds Time Series Query Support”. https://www.i-programmer.info/news/84-database/13846-ravendb-adds-time-series-query-support.html.
  32. 1 2 ”RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing”. 2020. https://www.infoq.com/news/2020/08/ravendb-5-release-document-db/.
  33. ”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.
  34. ”Review: NoSQL database RavenDB”. 2019. Arkiverad från originalet den 2020-02-03. https://web.archive.org/web/20200203075939/http://techgenix.com/review-nosql-database-ravendb/. Läst 16 mars 2021.
  35. 1 2 ”RavenDB: Driving DX through DB infrastructure management”. Arkiverad från originalet den 2020-10-11. https://web.archive.org/web/20201011205901/https://ciostory.com/technology/ravendb-driving-dx-through-db-infrastructure-management/. Läst 16 mars 2021. ”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.
  36. ”RavenDB Adds Graph Queries”. 2019. https://www.datanami.com/2019/05/15/ravendb-adds-graph-queries/.
  37. ”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/.
  38. ”Graph API”. https://ravendb.net/features/querying/graph-api.
  39. ”Data Modeling with Indexes in RavenDB”. 2019. https://www.codeproject.com/Articles/1348454/Data-Modeling-with-Indexes-in-RavenDB.
  40. Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.
  41. ”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.
  42. ”A document database for the .NET platform”. Arkiverad från originalet den 2020-11-02. https://web.archive.org/web/20201102211752/https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html. Läst 16 mars 2021. ”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.
  43. ”RavenDB Adds New Enhancements to Its Cloud-Based Database Service”. Arkiverad från originalet den 2020-10-08. 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. ”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.

Externa länkar

[redigera | redigera wikitext]