RavenDB
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
editarOriginalmente 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
editarVersió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] | Sí |
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] | Sí |
5.0 | julio de 2020[3] | Series temporales;[31] Compresión de datos mediante el algoritmo Zstd[32] | Sí |
Arquitectura del sistema
editarLos 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Índices y consultas
editarLas 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
editarLos 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]
Nube de RavenDB
editarRavenDB 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
editarRavenDB es de código abierto bajo una licencia AGPLv3.[4] Está disponible con una licencia gratuita y una licencia comercial.
Referencias
editar- ↑ a b c «Other Vendors to Consider for Operational DBMSs». www.gartner.com. 2018. Consultado el 4 de enero de 2021.
- ↑ a b «RavenDB goes live!». ayende.com. 2010. Consultado el 4 de enero de 2021.
- ↑ a b «RavenDB 5.0 has been released». ravendb.net. 2020. Consultado el 4 de enero de 2021.
- ↑ a b c d e f g h i j k l m «RavenDB». Databases of Databases. Consultado el 4 de enero de 2021.
- ↑ a b c d «Raven, a Document Database for .NET». www.infoq.com. 2010. Consultado el 4 de enero de 2021.
- ↑ a b c d e f g «RavenDB System Properties». db-engines.com. Consultado el 4 de enero de 2021.
- ↑ 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?)». blogs.msdn.microsoft.com. 2008. Consultado el 4 de enero de 2021.
- ↑ a b «Hidden Windows Gems: Extensible Storage Engine». ayende.com. 2008. Consultado el 4 de enero de 2021.
- ↑ «Hibernating Rhino». hibernatingrhinos.com. Consultado el 4 de enero de 2021.
- ↑ «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.
- ↑ 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.
- ↑ a b «Why Raven DB?». dzone.com. 2010. Consultado el 4 de enero de 2021.
- ↑ a b «RavenDB vs SQL Server». www.integrace.nl. 2012. Consultado el 4 de enero de 2021.
- ↑ «Managed RavenDB Cloud Hosting». cloud.ravendb.net. Consultado el 4 de enero de 2021.
- ↑ a b c d e «RavenDB Launches Managed Cloud Service». www.datanami.com. 2019. Consultado el 4 de enero de 2021.
- ↑ 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.
- ↑ 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.
- ↑ «RavenDB 2.0 RTM». ayende.com. 2013. Consultado el 4 de enero de 2021.
- ↑ a b c d e f «RavenDB». learning.oreilly.com. Consultado el 4 de enero de 2021.
- ↑ 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.
- ↑ «RavenDB 2.5 Release Candidate is out». ayende.com. 2013. Consultado el 4 de enero de 2021.
- ↑ «RavenDB 3.0 RTM». ayende.com. 2014. Consultado el 4 de enero de 2021.
- ↑ a b «NoSQL for .NET: RavenDB 3.0 Takes Flight». visualstudiomagazine.com. 2014. Consultado el 4 de enero de 2021.
- ↑ a b «NoSQL: RavenDB 3.0 erhält weitere Storage Engine». www.heise.de. 2014. Consultado el 4 de enero de 2021.
- ↑ a b «RavenDB 3.5 RTM released». ayende.com. 2016. Consultado el 4 de enero de 2021.
- ↑ «RavenDB 4.0 is out». ayende.com. 2018. Consultado el 4 de enero de 2021.
- ↑ «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.
- ↑ a b «RavenDB 4.1 Release Candidate is out». ayende.com. 2018. Consultado el 4 de enero de 2021.
- ↑ «RavenDB 4.2 has been released». ayende.com. 2019. Consultado el 4 de enero de 2021.
- ↑ a b «RavenDB Adds Time Series Query Support». i-programmer.info. Consultado el 4 de enero de 2021.
- ↑ a b «RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing». infoq.com. 2020. Consultado el 4 de enero de 2021.
- ↑ «The Design of RavenDB 4.0: The Implications of the Blittable Format». dzone.com. 2016. Consultado el 4 de enero de 2021.
- ↑ «Review: NoSQL database RavenDB». techgenix.com. 2019. Consultado el 4 de enero de 2021.
- ↑ 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.
- ↑ «RavenDB Adds Graph Queries». www.datanami.com. 2019. Consultado el 4 de enero de 2021.
- ↑ «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.
- ↑ «Graph API». ravendb.net. Consultado el 4 de enero de 2021.
- ↑ «Data Modeling with Indexes in RavenDB». www.codeproject.com. 2019. Consultado el 4 de enero de 2021.
- ↑ 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?». docs.microsoft.com. 2011. Consultado el 4 de enero de 2021.
- ↑ «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.
- ↑ «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.