.NET - Apresentando Azure Cosmos DB


 Hoje vou apresentar os conceitos básicos sobre o Azure Cosmos DB.

A Microsoft fornece diferentes tipos de armazenamento de banco de dados, como SQL do Azure, Azure Cosmos DB, etc. Neste artigo, vamos apresentar uma visão geral do Azure Cosmos DB, juntamente com seu objetivo e arquitetura.

O Conceito de banco de dados NoSQL

O termo NoSQL significa Not Only SQL sendo uma alternativa aos bancos de dados relacionais e podem executar todos os tipos de operações de consulta como qualquer RDBMS como o Microsoft SQL Server.

Assim os banco de dados NoSQL fornecem um mecanismo para armazenar e recuperar dados que são modelados de formas diferentes das relações tabulares usadas nos banco de dados relacionais e possuem como principal objetivo  ter um design simples e a possibilidade de escala horizontal e vertical, e, acima de tudo, oferecer um fácil controle operacional sobre os dados disponíveis.

O banco de dados NoSQL quebra a estrutura de dados tradicional do banco de dados relacional e oferece uma oportunidade para o desenvolvedor armazenar os dados no banco de dados da mesma forma que seus requisitos de programação.

Os bancos de dados NoSQL podem ser divididos em  quatro categorias diferentes :

  1. Chave-Valor - Consiste em uma modelagem que indexa os dados a uma chave. Ao se armazenar os dados, sua forma de procura se dá por uma base similar a um dicionário, onde estes possuem uma chave.
     
  2. Documento - Consiste em uma estrutura baseada em uma coleção de documentos, sendo que um documento é um objeto que contém um código único com um conjunto de informações, podendo ser strings, documentos aninhados ou ainda listas.
     
  3. Grafos - Este modelo de armazenamento utiliza três componentes básicos: um grafo para representar um dado, arrestas ou ligações para representar a associação entre os grafos e os atributos (ou propriedades) dos nós e relacionamentos. A principal idéia por trás do banco de dados de gráficos é que cada item de dados pode ter um relacionamento entre si.
     
  4. Colunar - Este modelo foi inicialmente desenvolvido baseado no Big Table da Google. Basicamente consiste em uma Tabela, onde nela existem várias famílias de colunas, e dentro destas famílias, colunas onde estão as propriedades.

Uma visão geral do Cosmos DB

A Microsoft criou o Cosmos DB com base na experiência adquirida no Azure DocumentDb.

O Azure Cosmos DB é um serviço de banco de dados com base em NoSQL, com modelo global e distribuído globalmente, hospedado na plataforma do Azure, e foi desenvolvido como um padrão agnóstico de esquema.

O Cosmos DB indexa automaticamente todos os dados armazenados como um documento e atua como um serviço que pode distribuir dados globalmente, permitindo que o desempenho seja dimensionado horizontalmente e oferece suporte a vários níveis de consistência. Para acessar os dados, o usuário sempre especifica uma medida de quão ágil ele precisa que o banco de dados seja usado (essa medida é normalmente conhecida como uma unidade de solicitação).

No Azure Cosmos DB, a Microsoft fornece várias APIs usadas para manipulação e implementação de dados do Cosmos DB, e , nos permite implementar os seguintes armazenamentos:

  1. Armazenamento de valor-chave usando a API de armazenamento de tabelas do Azure;
  2. Um banco de dados de documentos usando as APIs MongoDB ou DocumentDB;
  3. Um banco de dados gráfico que suporta a API do Apache Gremlin (que faz parte da estrutura TinkerPop);
  4. Uma coluna-store banco de dados que suporta a API Cassandra;

Em segundo plano, o Cosmos DB usa o mesmo mecanismo de armazenamento para cada uma das APIs. Com a ajuda dessas APIs, o desenvolvedor não precisa fazer muitas alterações no código do aplicativo para implementar o Cosmos DB.

Hierarquia de um banco de dados Cosmos

O Cosmos DB sempre usa um modelo hierárquico consistente para armazenar e processar dados. No nível mais alto, há uma Conta do Azure Cosmos DB - com uma conta, um usuário pode adicionar os bancos de dados. Todo banco de dados pode conter vários usuários, que podem conceder permissões. Exceto para os usuários, cada banco de dados sempre contém uma combinação de coleção, documentos e anexos. As coleções também podem conter procedimentos armazenados relacionados, gatilhos e funções definidas pelo usuário.

Cada um desses recursos é endereçável diretamente por meio de um URI lógico e estável. Esses URLs são acessíveis através de um protocolo TCP altamente disponível e eficiente. A seguir, exemplos de endereços:

No Cosmos DB, cada recurso de banco de dados é categorizado como sistema ou definido pelo usuário. Os recursos do sistema sempre têm um esquema fixo e destinam-se a bancos de dados como contas, bancos de dados, coleções, usuários ou permissões.

Os recursos definidos pelo usuário são os documentos e anexos adicionados ao banco de dados pelo usuário por meio do Portal ou aplicativos do Azure. Para esse tipo de recurso, não há restrições em seus esquemas. Ambas as categorias de recursos são definidas e gerenciadas como JSON compatível com o padrão. Todos os recursos, sistema ou definidos pelo usuário, devem conter um conjunto comum de propriedades :

_rid: identificador hierárquico exclusivo gerado pelo sistema.
_etag: gerado pelo sistema para ativar o controle de concorrência otimista.
_ts: último carimbo de data/hora atualizado mantido pelo sistema.
_self: URI endereçável exclusivo gerado pelo sistema.
ID: nome exclusivo especificado pelo usuário ou pelo sistema para um recurso.

Existem diversas formas de criar um banco de dados Cosmos DB, sendo que o mecanismo primário é usar u Portal Azure.

Criando um banco de dados Cosmos DB

Vejamos a seguir um roteiro básico para criar um banco de dados Cosmos DB no Azure.

Você vai precisar possuir uma conta e um registro no Portal Azure : https://portal.azure.com/#home

Clique no item - Criar um recurso



Selecione a opção Bacos de dados e clique em Azure Comos DB;

Na página Criar Conta do Azure Cosmos DB, insira as configurações da nova conta do Azure Cosmos DB, incluindo o local, o nome do banco de dados etc.

Ao final clique no botão :  Revisar + Criar

Após a validação clique no botão : Criar

Após a conclusão da implantação clique no botão:  Ir par ao recurso

Agora clique em Data Explorer

Selecione o item New Database

Informe o nome do banco de dados em : Database id e clique em OK

Após a conclusão do banco de dados, clique no botão Novo contêiner para criar uma nova coleção.

Aqui, precisamos fornecer o ID da coleção e o ID da chave da partição, conforme mostrado na imagem abaixo.

Após concluir a criação da coleção ou do contêiner, basta expandir o ícone do banco de dados, onde podemos ver o nome do contêiner ou da coleção com alguns outros recursos definidos pelo usuário, como procedimentos armazenados, gatilhos etc.

Agora, clique na opção Itens e, em seguida, clique em New Item para inserir os dados na coleção.

O formato dos dados deve estar no formato JSON, vou criar um id e name e a seguir clicar no botão Save para obter o resultado abaixo:

Pronto !

Criamos nosso banco de dados NoSQL no Cosmos DB, definimos uma coleção e incluimos um item no Portal Azure.

E estamos conversados...

"Bendito seja o Deus e Pai de nosso Senhor Jesus Cristo, o Pai das misericórdias e o Deus de toda a consolação;
Que nos consola em toda a nossa tribulação, para que também possamos consolar os que estiverem em alguma tribulação, com a consolação com que nós mesmos somos consolados por Deus."
2 Coríntios 1:3,4


Referências:


José Carlos Macoratti