| RavenDB | |
|---|---|
| Autor | Oren Eini (Ayende Rahien) |
| Desenvolvedor | Hibernating Rhinos |
| Lançamento inicial | 2010 (15–16 anos) |
| Lançamento estável | 4.2
/ maio de 2019 |
| Repositório | |
| Escrito em | C# |
| Sistema operacional | Windows, Linux, MacOS, Docker e Raspberry Pi |
| Disponível em | Inglês |
| Tipo | NoSQL orientado à documentos |
| Licença | AGPLv3 |
| Website | www |
RavenDB é um banco de dados NoSQL orientado à documentos, open-source, escrito em C# e com suporte total a operações ACID. Desenvolvido pela Hibernating Rhinos Ltd ele é multi-plataforma, funcionando em Windows, Linux e MacOS. RavenDB armazena dados como documentos JSON e pode operar em clusters distribuídos com replicação master-master.
Originalmente com o nome de “Rhino DivanDB”, RavenDB começou como um projeto em 2008 sob a liderança de Oren Eini (também conhecido como Ayende Rahien) e é desenvolvido pela Hibernating Rhinos Lta. Segundo a companhia, trata-se do primeiro banco de dados baseado em documentos que funciona nativamente em .NET. Trata-se também de um dos primeiros bancos, desse tipo, a suportar ACID.
Em 2019, Hibernating Rhinos passou a ofertar o RavenDB como um serviço em nuvem cloud service chamado RavenDB Cloud.
| Versão | Data | Principais Caracteristicas Adicionadas |
|---|---|---|
| 1.0 | Maio de 2010 | |
| 2.0 | Janeiro de 2013 | Suporte a replicação |
| 2.5 | Junho de 2013 | Projeções e consultas baseadas em Facets |
| 3.0 | Novembro de 2014 | Java API; Mecanismo de armazenamento Voron |
| 3.5 | Outubro de 2016 | Suporte a execução em Clusters |
| 4.0 | Fevereiro de 2018 | Tornou-se multi-plataforma; disponível em licença livre |
| 4.1 | Agosto de 2018 | Suporte completo a transações em Cluster |
| 4.2 | Maio de 2019 | Suporte a grafos |
Os dados são armazenados em documentos com esquema livre (schema-less) em formato JSON. Em nível mais baixo, no mecanismo de armazenamento, os documentos são mantidos em formato binário chamado Blittable. Documentos são agrupados em coleções e cada documento pertence a apenas uma coleção.
Os bancos de dados podem ser distribuídos em clusters de servidores (também chamados de nós) usando replicação multi-master. Algumas operações, entretanto, requerem consenso da maioria dos nós. Esse consenso é obtido usando uma implementação do protocolo Raft, chamada Rachis.Todas as tarefas são distribuídas, de maneira balanceada, entre os diferentes nós.
Da versão 1 at é a versão 3.5 havia suporte nativo para sharding. A partir da versão 4.x não há mais.
RavenDB usava, originalmente, Esent como mecanismo de armazenamento. Entretanto, a partir da versão 3, passou a utilizar também um mecanismo de armazenamento, otimizado para RavenDB, chamado Voron.
Atualmente, há suporte para clients escritos em C#, C++, Java, Node.js, Python, Ruby e Go.
Consultas podem ser escritas em LINQ (para .NET) ou com uma linguagem customizada chamada RQL (Raven Query Language), com sintaxe similar a SQL.
RavenDB Cloud é um banco de dados gerenciado como serviço em nuvem (database-as-a-service) lançado em 2019, suportando AWS, Azure and GCP. O serviço executa toda a administração, como a manutenção do hardware e segurança para o usuário. Além disso, há compartilhamento de recursos de CPU entre diferentes nós para impedir throttling.
RavenDB e utilizado:
RavenDB é open-source sob a licença AGPLv3. Está disponível em licença livre, com restrições e também uma licença comercial.