Criar uma instância do Cosmos DB

Concluído

Nesta unidade, você aprenderá sobre o Azure Cosmos DB e como ele organiza dados. Você verá como usar o Visual Studio Code para criar e manter bancos de dados e contêineres do Azure Cosmos DB.

O que é o Azure Cosmos DB?

O Azure Cosmos DB é um serviço de nuvem que implementa bancos de dados de documentos. Os dados presentes num documento devem estar em conformidade com a sintaxe JSON. Um documento JSON pode conter propriedades, subdocumentos e matrizes de documentos.

{
    "id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
    "partitionKey": "Bikes",
    "name": "Touring-1000 Blue, 50",
    "description": "The product called \"Touring-1000 Blue, 50\"",
    "price": 2384.0700000000002,
    "inventory": [
        { "location": "Dallas", "inventory": 96 },
        { "location": "Seattle", "inventory": 85 }
      ]
}

Ao contrário de uma tabela em um banco de dados relacional, os documentos em um Azure Cosmos DB não seguem um esquema predefinido. Isso permite que o banco de dados contenha vários documentos com diferentes formas e tamanhos. Por exemplo, pode armazenar variadas informações acerca de clientes diferentes na mesma base de dados. Pode eventualmente registar um histórico completo de endereços como uma matriz de um cliente. Pode registar informações adicionais, como as classificações de crédito.

O serviço de nuvem do Azure Cosmos DB é organizado como uma hierarquia. Na parte superior está uma conta do Azure Cosmos DB (seu recurso). A conta do Azure Cosmos DB é a unidade de segurança para um conjunto de bancos de dados. A conta do Azure Cosmos DB especifica o local dos bancos de dados juntamente com as informações de segurança necessárias para acessar esses bancos de dados. Dentro de uma conta, cria uma ou mais bases de dados. Dentro de cada bases de dados, cria um ou mais contentores. Armazena os documentos nos contentores.

Conceptual image of parent-child relationship of account, database, and container in Cosmos D B.

Contêineres e chaves de partição do Cosmos DB

Cada contentor é organizado como uma série de partições. As partições correspondem praticamente aos ficheiros físicos no disco. Uma partição grande pode ter o seu próprio ficheiro, mas várias partições pequenas podem ser combinadas num único ficheiro. Cada documento tem uma chave de partição que define a partição à qual pertence. Utiliza a criação de partições para armazenar documentos relacionados juntos e para ajudar a otimizar a forma como acede aos dados.

O exemplo a seguir mostra um documento JSON que armazena informações do produto, como parte do aplicativo Contoso . Como esses dados são provenientes de outro sistema, os IDs já estão configurados para serem GUIDs. Em seu próprio contêiner, você pode trazer sua ID ou permitir que o Cosmos DB forneça uma. Quando você insere um novo documento, você precisa fornecer o ID e a chave de partição (se estiver usando chaves de partição).

{
    "id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
    "categoryName": "Bikes, Touring Bikes",
    "sku": "BK-T79U-50",
    "name": "Touring-1000 Blue, 50",
    "description": "The product called \"Touring-1000 Blue, 50\"",
    "price": 2384.0700000000002,
    "tags": [
        {
            "_id": "27B7F8D5-1009-45B8-88F5-41008A0F0393",
            "name": "Tag-61"
        }
    ],
    "inventory": [
        { "location": "Dallas", "inventory": 96 },
        { "location": "Seattle", "inventory": 85 },
        { "location": "Boston", "inventory": 4 },
        { "location": "Miami", "inventory": 12 },
        { "location": "San Diego", "inventory": 58 }
      ]
}

A empresa Contoso decidiu usar o nome da categoria, categoryName, como a chave de partição, porque isso fornece uma distribuição um pouco uniforme de documentos pelo contêiner. O campo de chave de partição é definido para o contêiner quando o contêiner é criado. Para cada novo documento inserido no contêiner, a chave de partição é incluída como parte do documento JSON. No exemplo acima, os requisitos mínimos para um documento formado corretamente são o id exclusivo e como a chave de partição, id e categoryName. Se você trouxer um conjunto de dados de outro sistema e quiser manter sua ID exclusiva para se conectar a outros sistemas, poderá optar por usar o campo ou permitir que o id Cosmos DB crie um novo exclusivo id e sua ID poderá ser armazenada em um nome de propriedade separado.

Nota

O Azure Cosmos DB adiciona alguns campos próprios aos seus documentos. Muitos destes campos são utilizados para fins internos e, na maioria dos casos, não os deve modificar diretamente. A exceção é um campo chamado id. O Azure Cosmos DB usa esse campo para identificar o documento no banco de dados e cada documento deve ter uma ID exclusiva.

Custo de taxa de transferência do Azure Cosmos DB

O Azure Cosmos DB usa o conceito de Unidades de Solicitação por segundo (RU/s) para gerenciar o desempenho e a cobrança de bancos de dados. Esta medida abstrai os recursos físicos subjacentes que têm de ser aprovisionados para suportar o desempenho necessário. Quando cria uma base de dados ou um contentor, especifica o número de RUs/s a alocar. Os custos ser-lhe-ão cobrados em conformidade.

O custo para fazer uma leitura pontual (buscar um único item pelo seu ID e valor de chave de partição) para um item de 1 KB é 1 Unidade de Solicitação (ou 1 RU). É atribuído um custo através das RUs, de forma semelhante, a todas as outras operações de bases de dados. Não interessa que API utiliza para interagir com o contentor do Azure Cosmos DB: os custos são sempre medidos por RUs. Seja a operação da base de dados de escrita, de leitura de ponto ou de consulta, os custos são sempre medidos em RU.

Se você provisionar 400 RU/s e emitir uma consulta que custa 40 RUs, poderá emitir 10 consultas desse tipo por segundo. Qualquer solicitação além disso terá taxa limitada e você deve tentar novamente a solicitação. Se você estiver usando drivers de cliente, eles suportam a lógica de repetição automática.

Para manter o seu RU/s o mais baixo possível, considere o seguinte:

Objeto Considerações
Tamanho do documento Um documento maior em KBs aumenta as RUs.
Indexação de documentos A indexação de desempenho pode diminuir as RUs.
Contagem de propriedades do documento Se você indexar todas as suas propriedades, usar mais propriedades aumentará as RUs. A indexação seletiva de propriedades de chave exigirá menos RUs.
Consistência de dados Níveis de consistência fortes e limitados consomem mais RUs do que outros níveis de consistência relaxados.
Tipo de documento lido A leitura de pontos usando o ID e a chave de partição de um item custa significativamente menos RUs do que as consultas.
Padrões de consulta A complexidade de uma consulta afeta quantos RUs são consumidos.
Uso de scripts Procedimentos armazenados, gatilhos e funções definidas pelo usuário consomem RUs, além das consultas dentro desses scripts.

Acesso ao Cosmos DB

O Azure Cosmos DB inclui as seguintes maneiras de se conectar ao Cosmos DB:

  • Visual Studio Code
  • SDKs de JavaScript (e outras linguagens)
  • Portal do Azure
  • CLI do Azure
  • PowerShell
  • API REST

Azure Cosmos DB APIs

O Azure Cosmos DB dá suporte a várias APIs programáticas. Estas APIs estão em conformidade, tanto quanto possível, com as APIs utilizadas por outras bases de dados NoSQL comuns. A intenção é fornecer um caminho de migração fácil para o Azure Cosmos DB a partir desses bancos de dados, sem que os desenvolvedores tenham que aprender um novo paradigma ou fazer alterações significativas em seus aplicativos. As APIs atualmente suportadas são:

  • Núcleo (SQL)
  • MongoDB
  • Cassandra
  • Gremlin (uma API comum de base de dados de grafos)
  • Armazenamento de Tabelas do Azure

A API Core (SQL) é uma variante da linguagem SQL usada pela maioria dos sistemas de gerenciamento de banco de dados relacional. Existem restrições e adaptações para processar conjuntos de documentos sem esquemas em vez de tabelas.

Usar o Visual Studio Code para gerenciar o Azure Cosmos DB

Ao usar o Visual Studio Code como seu ambiente de desenvolvimento, você pode instalar a extensão Bancos de Dados do Azure para criar bancos de dados e aplicativos do Azure Cosmos DB.

Screenshot of the Azure Databases extension in Visual Studio Code marketplace

Deverá instalar a extensão a partir do Marketplace de Extensões para o Visual Studio Code. Depois de instalar a extensão Bancos de Dados, use o explorador do Azure, Shift + Alt + A, para usar a extensão do Cosmos DB.

Gerenciar o Cosmos DB a partir do explorador do Azure

A extensão Bancos de Dados, no explorador do Azure do Visual Studio Code, fornece uma interface gráfica do usuário integrada ao Visual Studio Code. Usando a extensão, você pode criar, excluir e gerenciar contas, bancos de dados, contêineres e documentos do Azure Cosmos DB.

Screenshot of the Azure Databases extension in Visual Studio Code as user right-clicks on the Documents node for a contextual menu to create a new document.

Aceder à conta no portal

A extensão também fornece acesso fácil a todas as funcionalidades do Cosmos DB, fornecendo a capacidade de abrir sua conta no portal do Azure. Você pode acessá-lo quando clicar com o botão direito do mouse em sua conta e selecionar Abrir no portal.

Screenshot of the Azure Databases extension in Visual Studio Code as user right-clicks on the account node to open account in Azure portal.

O portal oferece acesso a todas as configurações para seu Cosmos DB e o Data Explorer para seus bancos de dados e contêineres. Use o Data Explorer para inserir, atualizar, excluir e consultar seus dados.

Screenshot of the Azure portal with the Data Explorer showing the query window open with a JSON document displayed.