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