RavenDB

Base de datos NoSQL de código abierto orientada a documentos De Wikipedia, la enciclopedia libre

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]

Datos rápidos Información general, Tipo de programa ...
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 7.0.127 de marzo de 2025
Última versión en pruebas 5.0 / julio de 2020[3] (24 de julio de 2020 (4 años, 8 meses y 16 días))
Historial de versiones 1.0, 2.0, 2.5, 3.0, 3.5, 4.0, 4.1, 4.2, 5.0
Enlaces
Cerrar

Historia

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

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

Arquitectura del sistema

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

  • 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

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

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

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

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

Referencias

Enlaces externos

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.