RavenDB

Från Wikipedia
RavenDB
UtvecklareHibernating Rhinos[1]
Först släppt2010[2]
Senaste utgåva5.0[3]
(24 juli 2020; för 3 å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]

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]

  1. ^ [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. 
  2. ^ [a b] ”RavenDB goes live!”. 2010. https://ayende.com/blog/4507/ravendb-goes-live. 
  3. ^ [a b] ”RavenDB 5.0 has been released”. 2020. https://ravendb.net/articles/ravendb-5-0-has-been-released. 
  4. ^ [a b c d e f g h i j k l m] ”RavenDB”. https://dbdb.io/. 
  5. ^ [a b c d] ”Raven, a Document Database for .NET”. 2010. https://www.infoq.com/news/2010/05/Raven/. 
  6. ^ [a b c d e f g] ”RavenDB System Properties”. https://db-engines.com/en/system/RavenDB. 
  7. ^ [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).
  8. ^ [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/. 
  9. ^ [a b] ”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. 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. 
  12. ^ [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. 
  13. ^ [a b] ”Why Raven DB?”. 2010. https://dzone.com/articles/why-raven-db. 
  14. ^ [a b] ”RavenDB vs SQL Server”. 2012. https://www.integrace.nl/nl/News/307/RavenDB. 
  15. ^ ”Managed RavenDB Cloud Hosting”. https://cloud.ravendb.net/. 
  16. ^ [a b c d e] ”RavenDB Launches Managed Cloud Service”. 2019. https://www.datanami.com/2019/07/02/ravendb-launches-managed-cloud-service/. 
  17. ^ [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/. 
  18. ^ [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. 
  19. ^ ”RavenDB 2.0 RTM”. 2013. https://ayende.com/blog/160642/ravendb-2-0-rtm. 
  20. ^ [a b c d e f] ”RavenDB”. https://learning.oreilly.com/library/view/ravendb-2x-beginners/9781783283798/ch01s04.html. [död länk]
  21. ^ [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. 
  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. ^ [a b] ”NoSQL for .NET: RavenDB 3.0 Takes Flight”. 2014. https://visualstudiomagazine.com/articles/2014/12/02/ravendb-3-for-dotnet.aspx. 
  25. ^ [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. 
  26. ^ [a b] ”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. ^ [a b] ”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. ^ [a b] ”RavenDB Adds Time Series Query Support”. https://www.i-programmer.info/news/84-database/13846-ravendb-adds-time-series-query-support.html. 
  32. ^ [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/. 
  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. http://techgenix.com/review-nosql-database-ravendb/. 
  35. ^ [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. 
  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”. 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. 
  43. ^ ”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. 

Externa länkar[redigera | redigera wikitext]