Azure 007 – Cosmos DB

https://azure.microsoft.com/pt-br/services/cosmos-db/

O Cosmos DB é um serviço de banco de dados não relacional.

“O nome vem do fato de que o banco de dados não utiliza SQL como uma linguagem de consulta. Em vez disso, ele é manipulado por meio de shell scripts, que podem ser combinados em encadeamentos (pipelines) no Unix”

“O uso do termo ‘NoSQL’ que conhecemos hoje é resultado de uma reunião realizada no dia 11 de junho de 2009, em São Francisco, nos Estados Unidos, organizada por Johan Oskarsson, um desenvolvedor de Software de Londres. O exemplo do BigTable e do Dynamo inspirou a criação de vários projetos, que faziam experimentações com armazenamentos alternativos de dados, e discussões sobre o assunto haviam se tornado uma das partes essenciais das melhores conferências sobre software daquela época.”

“Os bancos de dados NoSQL atuam sem um esquema, permitindo que sejam adicionados, livremente, campos aos registros do banco de dados, sem ter de definir primeiro quaisquer mudanças na estrutura. Isso é especialmente útil ao lidar com dados não uniformes e campos personalizados, os quais faziam que os banco de dados relacionais utilizassem nomes como customField6 (campoPersonalizado6) ou tabelas de campos personalizados, que são difíceis de processar e entender.”

SADALAGE, P. FOWLER, M. NoSQL – Um guia conciso para o mundo emergente da persistência poliglota. Novatec, 2013. link

Modelos de bancos de dados suportados

ModeloDescriçãoUso comum
Chave-valorArmazena o dado vinculado a uma chave única. Quando a chave é passada para o banco, o valor é retornado.Diverso
ColunasNo modelo colunar conhecido como keyspaces, o banco possui uma família de colunas, cada coluna possui um conjunto de linhas que são compostas por colunas mas sem um esquema definido, podendo variar.Uma possibilidade de uso é para armazenamento de dados de um usuário.
DocumentoA informação é armazenada em formato de texto e é chamada de documento. Esse documento pode ter como padrão o JSON. Possui dentro do documento atributos que podem ser utilizados para consulta.Permite a busca por um atributo chave retornando todo o documento.
GrafosArmazena o dado e a relação dele com outro dado. Cada informação é armazenada em um vértice, e arestas representam a conexão entre vértices.Muito utilizado para armazenar grandes volumes de dados ligados a relacionamento entre dados. Ex: redes sociais.
Exam Ref AZ-900 Microsoft Azure Fundamentals. Microsoft Press.

Modelos de APIs

O Cosmos DB utiliza o conceito de APIs para definir o modelo que será utilizado para armazenar os dados e como os clientes irão interagir com esses modelos de dados.

  • Core (SQL): Cria um banco de dados baseado em documentos, que você pode utilizar consultas SQL com uma sintaxe similar aos bancos relacionais.
  • Azure Cosmos DB for Mongo DB API: É um modelo de banco de dados baseado em documentos compatível com o Mongo DB (versão 3.6)
  • Cassandra: Modelo de banco de dados colunar, compatível com o banco de dados Cassandra (versão 4)
  • Azure Table: Utiliza o modelo de chave-valor e é utilizado como alternativa para migrar dados de uma Tabela da Conta de Armazenamento do Azure.
  • Gremlin: Utiliza o modelo de banco de dados em grafos, e é compatível com o Gremlin (Apache TinkerPop 3.2)

Replicação de dados

Suporte a replicação de dados baseado no modelo “turnkey global distribution”, você simplesmente seleciona as regiões para onde a replicação deve ser feita, e o Azure cuida do processo.

Fixed Containers in Azure Cosmos DB Deprecated - MikaBerglund.com

https://docs.microsoft.com/pt-br/azure/cosmos-db/distribute-data-globally

https://docs.microsoft.com/pt-br/azure/cosmos-db/global-dist-under-the-hood

Níveis de consistência dos dados

A consistência dos dados em um banco de dados, significa que os dados controlados pelo banco estão em um estado íntegro para uso. Bancos de dados distribuídos, são concebidos para ter uma alta disponibilidade e uma baixa latência. A alta disponibilidade pode influenciar nos níveis de consistência dos dados neste tipo de banco de dados.

Consistência como um espectro

ACESSE: https://docs.microsoft.com/pt-br/azure/cosmos-db/consistency-levels

Criando Cosmos DB

O primeiro passo é acessar o menu para criar um novo recurso, e buscar no Azure Marketplace a opção Databases e selecionar o Azure Cosmos DB.

Em seguida a assinatura e o grupo de recurso.

Em seguida informe o nome da conta que deverá ser único dentro do Azure por ser utilizado como DNS de acesso. Escolha a API que será utilizada, a localização e aplique o nível de serviço gratuito.

Na tela de networking é possível dar acesso ao banco pela internet, ou pela internet mas somente de uma VNET selecionada ou através de um IP privado pela rede interna do Azure.

Na próxima etapa, selecione o método de criptografia, o padrão a chave é gerenciada pelo próprio Cosmos DB, caso contrário você pode informar um Azure Key Vault e a chave que deverá ser utilizada.

Uma vez que o recurso do Cosmos DB é criado ele apresenta um conjunto de documentações que podem ser utilizadas para acessar o banco de dados.

Para criar um novo banco de dados e um container, selecione a opção Browse e clique em Adicionar Coleção.

Informe o nome do banco de dados e nome do container.

Informe o nome da propriedade que será utilizada para particionar os dados entre as diversas instâncias do Cosmos DB.

Agora que o banco e o primeiro container foi criado vamos criar um novo documento, selecionando o container e clicando o botão New Item.

Informe um documento contendo as propriedades que desejar. Clique no botão salvar.

Os documentos serão apresentados com os demais atributos que são automaticamente criados para controle da versão do documento.