RavenDB

Base de datos NoSQL de código abierto orientada a documentos

RavenDB es una base de datos documental de código abierto con soporte transaccional nativo escrita íntegramente en C# y desarrollada por Hibernating Rhinos Ltd.[4][5][6][1][7]​ Es una base de datos multiplataforma compatible con Windows, Linux y MacOS. RavenDB almacena datos como documentos JSON y soporta clústeres distribuidos con replicación maestro-maestro.[4][6]

RavenDB
Información general
Tipo de programa Base de datos documental, NoSQL
Autor Oren Eini (también conocido como Ayende Rahien)
Desarrollador Hibernating Rhinos[1]
Modelo de desarrollo Código abierto
Lanzamiento inicial 2010[2]
Licencia GNU AGPL v3.0
Información técnica
Programado en C#
Versiones
Última versión estable 6.2.017 de septiembre de 2024
Última versión en pruebas 5.0 / julio de 2020[3]( 24 de julio de 2020 (4 años, 3 meses y 13 días))
Historial de versiones 1.0, 2.0, 2.5, 3.0, 3.5, 4.0, 4.1, 4.2, 5.0
Enlaces

Historia

editar

Originalmente llamada “Rhino DivanDB”,[4][8]​ RavenDB comenzó como un proyecto de Oren Eini en 2008[9]​ y fue desarrollado por Hibernating Rhinos Ltd.[1][10]​ La empresa afirma que fue la primera base de datos de documentos que se ejecutó de forma nativa en el Framework .NET.[11][12][5][13]​ Fue una de las primeras bases de datos de documentos en ofrecer garantías transaccionales (ACID).[6][13][14]

En 2019, Hibernating Rhinos comenzó a ofrecer RavenDB como un servicio en la nube llamado RavenDB Cloud.[15][16][17][18]

Historial de versiones

editar
Versión Fecha Funciones agregadas (lista parcial) Compatible?
1.0 mayo de 2010[2]   No
2.0 enero de 2013[19] Replicación[20][21]   No
2.5 junio de 2013[22] Proyecciones; consulta por facetas[20]   No
3.0 noviembre de 2014[23] API de Java; Motor de almacenamiento Voron[24][25]   No
3.5 octubre de 2016[26] Soporte de clúster de alta disponibilidad[26]   
4.0 febrero de 2018[27] Soporte de multiplataforma; disponibilidad con una licencia gratuita[28]   No
4.1 agosto de 2018[29] Transacciones a nivel de clúster[16][29]   No
4.2 mayo de 2019[30] Consultas en grafos[16]   
5.0 julio de 2020[3] Series temporales;[31]​ Compresión de datos mediante el algoritmo Zstd[32]   

Arquitectura del sistema

editar

Los datos se almacenan como documentos sin esquema en formato JSON.[4][8][5][20][21][7]​ A nivel de almacenamiento, los documentos se escriben en un formato binario nativo llamado "blittable".[33]​ Los documentos se agrupan en colecciones, y cada documento pertenece exactamente a una colección.[20][21]

Las bases de datos se pueden implementar en un clúster distribuido de servidores (llamados "nodos") mediante replicación multimaestro.[4][6]​ Algunas operaciones a nivel de clúster requieren el consenso de la mayoría de los nodos; el consenso se determina mediante una implementación del algoritmo Raft llamado Rachis.[4]​ Las tareas se distribuyen a los diferentes nodos de forma equilibrada.[4][34]

RavenDB utilizó originalmente el motor de almacenamiento Esent.[8][9][21]​ La versión 3.0 lo reemplazó con un nuevo motor de almacenamiento de código abierto llamado Voron.[24][25]

Los clientes son compatibles con C#, C++, Java, Node.js, Python, Ruby y Go.[6]

Principales características

editar
  • Transacciones ACID en todo el clúster: las transacciones ACID se pueden ejecutar en el alcance de un clúster (además de las transacciones de un solo nodo). La transacción solo se mantendrá si es confirmada por un consenso de nodos; de lo contrario, la transacción se cancela y se revierte.[4][16]

Índices y consultas

editar

Las consultas se expresan en LINQ o con un lenguaje de consulta propietario llamado RQL (siglas de Raven Query Language) que tiene una sintaxis similar a SQL.[4][5][6]

  • Índices dinámicos: en RavenDB, las consultas solo pueden satisfacerse mediante un índice; si no existe un índice apropiado, se crea un nuevo índice para satisfacer la consulta.[4][12][35][20][21][7]
  • Consultas de grafos: los documentos relacionados se pueden tratar como vértices en un grafo, y las conexiones se tratan como bordes. Esto permite entre otras cosas crear consultas recursivas.[36][37][38]
  • Proyecciones: los índices se pueden configurar para transformar datos indexados, realizar cálculos, realizar agregaciones y ejecutar código javascript en el lado del servidor.[4][6][39]
  • Búsqueda de texto completo: en un nivel bajo, los datos se indexan con Lucene.net, lo que significa que los índices admiten la búsqueda de texto completo.[4][14][20][21][40][41]

Extensiones de documentos

editar

Los documentos se pueden ampliar con otros tipos de datos menos adecuados para JSON. Estas extensiones se pueden cargar, modificar y almacenar en forma independiente del documento.[42]

  • Archivos adjuntos: los documentos pueden tener varios archivos adjuntos de cualquier tipo de datos, como imágenes, audio o binario puro.[35]
  • Series de tiempo: datos numéricos asociados con tiempos específicos y ordenados cronológicamente.[32][31]

Nube de RavenDB

editar

RavenDB Cloud es una base de datos administrada como servicio lanzada en 2019 en AWS, Azure y Google Compute Platform. El servicio realiza tareas de administración como mantenimiento de hardware y seguridad para los usuarios. Cuenta con el uso compartido de recursos de CPU entre los diferentes nodos en un clúster para limitar la sobrecarga.[16][17][18][43]

Licencia

editar

RavenDB es de código abierto bajo una licencia AGPLv3.[4]​ Está disponible con una licencia gratuita y una licencia comercial.

Referencias

editar
  1. a b c «Other Vendors to Consider for Operational DBMSs». www.gartner.com. 2018. Consultado el 4 de enero de 2021. 
  2. a b «RavenDB goes live!». ayende.com. 2010. Consultado el 4 de enero de 2021. 
  3. a b «RavenDB 5.0 has been released». ravendb.net. 2020. Consultado el 4 de enero de 2021. 
  4. a b c d e f g h i j k l m «RavenDB». Databases of Databases. Consultado el 4 de enero de 2021. 
  5. a b c d «Raven, a Document Database for .NET». www.infoq.com. 2010. Consultado el 4 de enero de 2021. 
  6. a b c d e f g «RavenDB System Properties». db-engines.com. Consultado el 4 de enero de 2021. 
  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?)». blogs.msdn.microsoft.com. 2008. Consultado el 4 de enero de 2021. 
  9. a b «Hidden Windows Gems: Extensible Storage Engine». ayende.com. 2008. Consultado el 4 de enero de 2021. 
  10. «Hibernating Rhino». hibernatingrhinos.com. Consultado el 4 de enero de 2021. 
  11. «RavenDB Development: Finally, A Solid Document-based Database for Windows?». www.whoishostingthis.com. 2019. Archivado desde el original el 8 de octubre de 2020. Consultado el 4 de enero de 2021. 
  12. a b «NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application». docs.microsoft.com. 2011. Consultado el 4 de enero de 2021. 
  13. a b «Why Raven DB?». dzone.com. 2010. Consultado el 4 de enero de 2021. 
  14. a b «RavenDB vs SQL Server». www.integrace.nl. 2012. Consultado el 4 de enero de 2021. 
  15. «Managed RavenDB Cloud Hosting». cloud.ravendb.net. Consultado el 4 de enero de 2021. 
  16. a b c d e «RavenDB Launches Managed Cloud Service». www.datanami.com. 2019. Consultado el 4 de enero de 2021. 
  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». sdtimes.com. 2019. Consultado el 4 de enero de 2021. 
  18. a b «New capabilities in database infrastructure service ensure high availability in Cloud-only scenarios». it.toolbox.com. 2019. Consultado el 4 de enero de 2021. 
  19. «RavenDB 2.0 RTM». ayende.com. 2013. Consultado el 4 de enero de 2021. 
  20. a b c d e f «RavenDB». learning.oreilly.com. Consultado el 4 de enero de 2021. 
  21. a b c d e f «A document database for the .NET platform». learning.oreilly.com. Archivado desde el original el 2 de noviembre de 2020. Consultado el 4 de enero de 2021. 
  22. «RavenDB 2.5 Release Candidate is out». ayende.com. 2013. Consultado el 4 de enero de 2021. 
  23. «RavenDB 3.0 RTM». ayende.com. 2014. Consultado el 4 de enero de 2021. 
  24. a b «NoSQL for .NET: RavenDB 3.0 Takes Flight». visualstudiomagazine.com. 2014. Consultado el 4 de enero de 2021. 
  25. a b «NoSQL: RavenDB 3.0 erhält weitere Storage Engine». www.heise.de. 2014. Consultado el 4 de enero de 2021. 
  26. a b «RavenDB 3.5 RTM released». ayende.com. 2016. Consultado el 4 de enero de 2021. 
  27. «RavenDB 4.0 is out». ayende.com. 2018. Consultado el 4 de enero de 2021. 
  28. «NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar». www.heise.de. 2018. Consultado el 4 de enero de 2021. 
  29. a b «RavenDB 4.1 Release Candidate is out». ayende.com. 2018. Consultado el 4 de enero de 2021. 
  30. «RavenDB 4.2 has been released». ayende.com. 2019. Consultado el 4 de enero de 2021. 
  31. a b «RavenDB Adds Time Series Query Support». i-programmer.info. Consultado el 4 de enero de 2021. 
  32. a b «RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing». infoq.com. 2020. Consultado el 4 de enero de 2021. 
  33. «The Design of RavenDB 4.0: The Implications of the Blittable Format». dzone.com. 2016. Consultado el 4 de enero de 2021. 
  34. «Review: NoSQL database RavenDB». techgenix.com. 2019. Consultado el 4 de enero de 2021. 
  35. a b «RavenDB: Driving DX through DB infrastructure management». ciostory.com. Archivado desde el original el 11 de octubre de 2020. Consultado el 4 de enero de 2021. 
  36. «RavenDB Adds Graph Queries». www.datanami.com. 2019. Consultado el 4 de enero de 2021. 
  37. «SD Times news digest: New Relic One, WhiteSource for Developers, RavenDB4.2, and VMware’s acquisition of Bitnami». sdtimes.com. 2019. Consultado el 4 de enero de 2021. 
  38. «Graph API». ravendb.net. Consultado el 4 de enero de 2021. 
  39. «Data Modeling with Indexes in RavenDB». www.codeproject.com. 2019. Consultado el 4 de enero de 2021. 
  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?». docs.microsoft.com. 2011. Consultado el 4 de enero de 2021. 
  42. «A document database for the .NET platform». learning.oreilly.com. Archivado desde el original el 2 de noviembre de 2020. Consultado el 4 de enero de 2021. 
  43. «RavenDB Adds New Enhancements to Its Cloud-Based Database Service». bigdata-madesimple.com. Archivado desde el original el 8 de octubre de 2020. Consultado el 4 de enero de 2021. 

Enlaces externos

editar