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.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). RavenDB armazena dados como documentos JSON e pode operar em clusters distribuídos com replicação master-master.

História 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.

Histórico de Versões Versão Data Principais Caracteristicas Adicionadas Maio de 2010 Janeiro de 2013 Suporte a replicação Junho de 2013 Projeções e consultas baseadas em Facets Novembro de 2014 Java API; Mecanismo de armazenamento Voron Outubro de 2016 Suporte a execução em Clusters Fevereiro de 2018 Tornou-se multi-plataforma; disponível em licença livre Agosto de 2018 Suporte completo a transações em Cluster Maio de 2019 Suporte a grafos

Verde: Suporta Vermelho: No suporta

Arquitetura do Sistema 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.

Características Principais Suporte completo a transações ACID no Cluster - Transações ACID podem ser executadas no escopo do Cluster (além de transações em um único nó). A transação somente será persistida se for confirmada por consenso em todos os nós. Caso isso não seja possível, a operação será desfeita. Contadores distribuídos

Indexação e consultas Consultas podem ser escritas em LINQ (para .NET) ou com uma linguagem customizada chamada RQL (Raven Query Language), com sintaxe similar a SQL.

Indexação dinâmica, no RavenDB todas as consultas utilizam índices. Caso não existir um índice que satisfaça uma consulta, ele é criado automaticamente pelo RavenDB. Consultas de Grafos – documentos podem ser tratados como vértices em um grafo (graph), e o campo ID do documento tratado como as arestas. Isso possibilita a criação de consultas recursivas. Projeções – índices podem ser configurados para realizar cálculos, agregações e outras operações complexas, incluindo execução de código Javascript no lado do servidor. Pesquisas com Full-text – em nível mais baixo, os dados são indexados usando Apache Lucene. Isso significa que os índices podem suportar buscas em full-textStevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.

RavenDB Cloud 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.

Aplicações RavenDB e utilizado: Na indústria da saúde Ponto de venda

Licenciamento 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.

Ligações externas

GitHub Ayende Blog

Categoria:Bancos de dados orientados a documentos Categoria:Software de 2010 Categoria:NoSQL