Fala Galera,
Hoje venho falar sobre um banco de dados noSQL, feito nativamente em .NET e ainda por cima open-source, o nome dele é o RavenDB.
O RavenDB é um banco 100% nativo .NET, Open Source, extremamente rápido e facilmente escalável permitindo que a sua aplicação .NET faça leituras e escritas de maneira rápida e com uma performance muito boa.
O RavenDB é um banco NoSQL do tipo “Document Database”, o que significa que ele armazena e recupera documentos, que podem estar em formato XML, JSON, entre outros.
Um banco do tipo “Document” é orientado a agregações que vem do Domain-Driven Design “Aggregates” que significa que cada documento é uma coleção de objetos relacionados que age sobre um contexto.
Exemplo de utilização do RavenDB
Para esse exemplo precisamos instalar o RavenDB, para isso devemos ir em https://ravendb.net/downloads e pegar o zip ou o seu executavél.
Dentro do zip deverá ter um command chamado start.cmd, selecione este arquivo e execute-o. Isso irá startar o servidor do RavenDB (Raven.Server.exe) e ainda abrirá no browser o Management Studio, ferramenta de administração do RavenDB.
Nosso foco será o Client .NET que podemos adicionar via NuGet no nosso projeto, ao adicionar o Client .NET do RavenDB estaremos fazendo referência a dois pacotes chamado Raven.Abstractions e Raven.Client.Lightweight
Para o nosso exemplo vamos criar um Console Application e adicionar os pacotes do RavenDB. Neste exemplo vamos usar um exemplo de Autor, Post e Comentários. Abaixo temos nosso modelo de classe que fará representação do domínio citado acima.
public class Author { public Guid Id { get; set; } public String Name { get; set; } public String Email { get; set; } public List<Post> Post { get; set; } } public class Post { public Guid Id { get; set; } public String Title { get; set; } public String Article { get; set; } public DateTime DtPost { get; set; } public List<Comment> Comments { get; set; } } public class Comment { public Guid Id { get; set; } public String Title { get; set; } public String Text { get; set; } public String CommentUser { get; set; } public DateTime DtComment { get; set; } }
Acima está a implementação do nosso modelo, agora vamos fazer um test-drive do RavenDB, para isso no Main do nosso Console Application, vamos gravar um documento, alterar e consultar, com isso vamos poder ver como funciona o RavenDB
Vamos adicionar o Client do RavenDB, como foi mencionado acima, ele está disponível no NuGet. No Package Manager Console execute o comando abaixo:
- Install-Package RavenDB.Client
Com o pacote instalado, vamos fazer nosso test-drive do RavenDB, no método Main adicione o código abaixo:
static void Main(string[] args) { var documentStore = new DocumentStore(); documentStore.Url = "http://localhost:8080"; documentStore.Initialize(); //Cria a base de dados caso necessario documentStore.DatabaseCommands.GlobalAdmin.EnsureDatabaseExists("Post"); //Armazena o Id para posteriormente seguir o exemplo de alteração e delete var idAuthor = Guid.NewGuid(); //Cria um novo documento using (var session = documentStore.OpenSession("Post")) { var author = new Author() { Id = idAuthor, Email = "xpto@teste.com.br", Name = "Rafael Cruz", Post = new List<Post>() { new Post() { Id = Guid.NewGuid(), Article = "Lorem ipsum", DtPost = DateTime.Now, Title = "Novo Artigo de Teste", Comments = new List<Comment>() { new Comment() { Title = "Novo Comentário", Text = "Lorem Ipsum", CommentUser = "User Comment", DtComment = DateTime.Now, Id = Guid.NewGuid(), } } } } }; session.Store(author); session.SaveChanges(); } //Alterando uma ou mais propriedades using (var session = documentStore.OpenSession("Post")) { // usamos o método Load para recuperar um documento pelo Id var author = session.Load<Author>($"authors/{idAuthor}"); author.Name = "Rafael Cruz Alterado"; session.SaveChanges(); } //Deletando um documento using (var session = documentStore.OpenSession("Post")) { // usamos o método Load para recuperar um documento pelo Id var author = session.Load<Author>($"authors/{idAuthor}"); session.Delete<Author>(author); session.SaveChanges(); } documentStore.Dispose(); Console.WriteLine("Operação concluída"); Console.ReadKey(); }
Neste código estamos criando uma nova base de dados chamada Post e inserindo um objeto chamado Author.
Ao instalar o RavenDB, ele vem com uma parte administrativa chamada Management Studio, nele é possível fazer administração da nossa base de dados.
Ao entrar na nossa base de dados chamada Post podemos ver um documento gravado como JSON conforme figura abaixo
Conclusão
O RavenDB é um banco de dados NoSQL, Open Source, escrito em .NET e que funciona como uma API REST. Ele é muito simples de usar pois se assemelha muito com os ORM’s já conhecidos como Entity Framework e NHibernate
Além de contar com uma interface de administração muito fácil de se usar e com muitos recursos.
Quer saber mais sobre o RavenDB, clique aqui e conheça sua documentação.
O exemplo acima pode ser encontrado no meu GitHub atráves deste link
Abs e até a próxima