Bancos de dados, contêineres e itens no Azure Cosmos DB

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

O Azure Cosmos DB é uma plataforma como serviço (PaaS) totalmente gerenciada. Para começar a usar o Azure Cosmos DB, crie uma conta do Azure Cosmos DB em um grupo de recursos do Azure em sua assinatura. Em seguida, crie bancos de dados e contêineres dentro da conta.

Sua conta do Azure Cosmos DB contém um nome DNS (Sistema de Nomes de Domínio) exclusivo. Você pode gerenciar o nome DNS usando muitas ferramentas, incluindo:

  • Portal do Azure
  • Modelos do Azure Resource Manager
  • Modelos de bíceps
  • Azure PowerShell
  • CLI do Azure
  • SDKs de Gerenciamento do Azure
  • API REST do Azure

Para replicar seus dados e taxa de transferência em várias regiões do Azure, você pode adicionar e remover regiões do Azure à sua conta a qualquer momento. Você pode configurar sua conta para ter uma única região ou várias regiões de gravação. Para obter mais informações, consulte Gerenciar uma conta do Azure Cosmos DB usando o portal do Azure. Você também pode configurar o nível de consistência padrão em uma conta.

Elementos em uma conta do Azure Cosmos DB

Atualmente, você pode criar um máximo de 50 contas do Azure Cosmos DB em uma assinatura do Azure. Você pode aumentar esse limite fazendo uma solicitação de suporte.

Você pode gerenciar uma quantidade virtualmente ilimitada de dados e taxa de transferência provisionada usando uma única conta do Azure Cosmos DB. Para gerenciar seus dados e taxa de transferência provisionada, crie um ou mais bancos de dados em sua conta e, em seguida, crie um ou mais contêineres para armazenar seus dados.

A imagem a seguir mostra a hierarquia de elementos em uma conta do Azure Cosmos DB.

Diagram of the hierarchy of an Azure Cosmos DB account, including an account, database, and container.

A imagem a seguir mostra a hierarquia de entidades em uma conta do Azure Cosmos DB.

Diagram of the relationship between a container and items, including sibling entities such as stored procedures, user-defined functions, and triggers.

Bancos de dados do Azure Cosmos DB

No Azure Cosmos DB, um banco de dados é semelhante a um namespace. Um banco de dados é simplesmente um grupo de contêineres. A tabela a seguir mostra como um banco de dados é mapeado para várias entidades específicas da API:

Entidade do Azure Cosmos DB API para NoSQL API para Apache Cassandra API para MongoDB API para Apache Gremlin API para Tabela
Base de dados do Azure Cosmos DB Base de Dados Espaço-chave Base de Dados Base de Dados Não aplicável

Nota

Com a API para contas de Tabela, as tabelas no Azure Cosmos DB são criadas no nível da conta para manter a compatibilidade com o Armazenamento de Tabela do Azure.

Contêineres do Azure Cosmos DB

Um contêiner do Azure Cosmos DB é onde os dados são armazenados. Ao contrário da maioria dos bancos de dados relacionais, que são dimensionados com tamanhos maiores de máquinas virtuais, o Azure Cosmos DB é dimensionado.

Os dados são armazenados em um ou mais servidores chamados partições. Para aumentar as partições, aumente a taxa de transferência ou elas crescem automaticamente à medida que o armazenamento aumenta. Essa relação fornece uma quantidade virtualmente ilimitada de taxa de transferência e armazenamento para um contêiner.

Ao criar um contêiner, você precisa fornecer uma chave de partição. A chave de partição é uma propriedade que você seleciona entre seus itens para ajudar o Azure Cosmos DB a distribuir os dados de forma eficiente entre partições. O Azure Cosmos DB usa o valor dessa propriedade para rotear dados para a partição apropriada a ser gravada, atualizada ou excluída. Você também pode usar a chave de partição na WHERE cláusula em consultas para recuperação eficiente de dados.

O mecanismo de armazenamento subjacente para dados no Azure Cosmos DB é chamado de partição física. As partições físicas podem ter uma taxa de transferência de até 10.000 unidades de solicitação por segundo e podem armazenar até 50 GB de dados. O Azure Cosmos DB abstrai esse conceito de particionamento com uma partição lógica, que pode armazenar até 20 GB de dados.

As partições lógicas permitem que o serviço forneça maior elasticidade e melhor gerenciamento de dados nas partições físicas subjacentes à medida que você adiciona mais partições. Para saber mais sobre particionamento e chaves de partição, consulte Particionamento e dimensionamento horizontal no Azure Cosmos DB.

Ao criar um contêiner, você configura a taxa de transferência em um dos seguintes modos:

  • Taxa de transferência dedicada: a taxa de transferência em um contêiner é reservada exclusivamente para esse contêiner. Existem dois tipos de taxa de transferência dedicada: padrão e dimensionamento automático. Para saber mais, consulte Taxa de transferência padrão (manual) de provisionamento em um contêiner do Azure Cosmos DB.

  • Taxa de transferência compartilhada: a taxa de transferência é especificada no nível do banco de dados e, em seguida, compartilhada com até 25 contêineres dentro do banco de dados. O compartilhamento de taxa de transferência exclui contêineres configurados com sua própria taxa de transferência dedicada.

    A taxa de transferência compartilhada pode ser uma boa opção quando todos os contêineres no banco de dados têm solicitações e necessidades de armazenamento semelhantes ou quando você não precisa de um desempenho previsível nos dados. Para saber mais, consulte Provisionar taxa de transferência padrão (manual) em um banco de dados no Azure Cosmos DB.

Nota

Não é possível alternar entre taxa de transferência dedicada e compartilhada. Os contêineres criados em um banco de dados de taxa de transferência compartilhado não podem ser atualizados para ter taxa de transferência dedicada. Para alterar um contêiner de taxa de transferência compartilhada para dedicada, você deve criar um novo contêiner e copiar dados para ele. O recurso de cópia de contêiner no Azure Cosmos DB pode facilitar esse processo.

Os contêineres são agnósticos ao esquema. Os itens dentro de um contêiner podem ter esquemas arbitrários ou entidades diferentes, desde que compartilhem a mesma chave de partição. Por exemplo, um contêiner pode conter um item ou documento que tenha informações de perfil do cliente, juntamente com um ou mais itens ou documentos que representem todas as ordens de venda do cliente. Você pode colocar informações semelhantes para todos os clientes no mesmo contêiner.

Por padrão, todos os dados que você adiciona a um contêiner são indexados automaticamente sem exigir indexação explícita. Você pode personalizar a indexação de um contêiner configurando sua política de indexação.

Para evitar afetar o desempenho, você pode definir um tempo de vida (TTL) em itens selecionados em um contêiner ou em todo o contêiner para excluir esses itens automaticamente em segundo plano com taxa de transferência não utilizada. No entanto, mesmo que os dados expirados não sejam excluídos, eles não aparecem em nenhuma operação de leitura. Para saber mais, consulte Configurar o tempo para viver no Azure Cosmos DB.

O Azure Cosmos DB fornece um recurso interno para captura de dados de alteração chamado feed de alterações. Você pode usá-lo para assinar todas as alterações de dados dentro do seu contêiner.

Você pode registrar procedimentos armazenados, gatilhos, funções definidas pelo usuário (UDFs) e procedimentos de mesclagem para seu contêiner.

Cada documento dentro de um contêiner deve ter uma id propriedade exclusiva dentro do valor de propriedade de uma chave lógica para esse contêiner. Você pode usar essa combinação de propriedades para fornecer uma restrição exclusiva dentro de um contêiner, sem precisar definir explicitamente uma.

Você também pode especificar uma restrição de chave exclusiva em seu contêiner do Azure Cosmos DB que usa uma ou mais propriedades. Uma restrição de chave exclusiva garante a exclusividade de um ou mais valores por chave de partição lógica. Se você criar um contêiner usando uma política de chave exclusiva, não poderá criar itens novos ou atualizados com valores que dupliquem os valores especificados pela restrição de chave exclusiva.

Um contêiner é especializado em entidades específicas da API, conforme mostrado na tabela a seguir:

Entidade do Azure Cosmos DB API para NoSQL API para Cassandra API para MongoDB API para Gremlin API para Tabela
Contêiner do Azure Cosmos DB Contentor Tabela Coleção Gráfico Tabela

Nota

Certifique-se de não criar dois contêineres com o mesmo nome, mas com invólucros diferentes. Algumas partes da plataforma Azure não diferenciam maiúsculas de minúsculas, e esse tipo de nomeação pode resultar em confusão ou colisão de dados de diagnóstico e ações em contêineres.

Propriedades de um contêiner do Azure Cosmos DB

Um contêiner do Azure Cosmos DB tem um conjunto de propriedades definidas pelo sistema. Dependendo da API usada, algumas propriedades podem não estar diretamente expostas. A tabela a seguir descreve as propriedades definidas pelo sistema:

Propriedade definida pelo sistema Sistema gerado ou configurável pelo utilizador Propósito API para NoSQL API para Cassandra API para MongoDB API para Gremlin API para Tabela
_rid Sistema gerado Identificador exclusivo de um contêiner. Sim No No No Não
_etag Sistema gerado Tag de entidade usada para controle de simultaneidade otimista. Sim No No No Não
_ts Sistema gerado Carimbo de data/hora da última atualização do contêiner. Sim No No No Não
_self Sistema gerado URI endereçável do contêiner. Sim No No No Não
id Configurável pelo utilizador Nome do contentor. Sim Sim Sim Sim Sim
indexingPolicy Configurável pelo utilizador Política para criar o índice para o contêiner. Sim No Sim Sim Sim
TimeToLive Configurável pelo utilizador Exclusão automática de um item de um contêiner após um período de tempo definido. Para obter detalhes, consulte Tempo de viver. Sim No No No Sim
changeFeedPolicy Configurável pelo utilizador Política para ler alterações feitas em itens em um contêiner. Para obter detalhes, consulte Alterar feed. Sim No No No Sim
uniqueKeyPolicy Configurável pelo utilizador Política para garantir a exclusividade de um ou mais valores em uma partição lógica. Para obter mais informações, consulte Restrições de chave exclusivas. Sim No No No Sim
AnalyticalTimeToLive Configurável pelo utilizador Exclusão automática de um item de um contêiner após um período de tempo definido, no contexto de um armazenamento analítico. Para obter detalhes, consulte Repositório analítico. Sim No Sim No Não

Itens do Azure Cosmos DB

Dependendo da API usada, as entidades de dados individuais podem ser representadas de várias maneiras:

Entidade do Azure Cosmos DB API para NoSQL API para Cassandra API para MongoDB API para Gremlin API para Tabela
Item do Azure Cosmos DB Item Linha Documento Nó ou borda Item

Propriedades de um item

Cada item do Azure Cosmos DB tem as seguintes propriedades definidas pelo sistema. Dependendo da API usada, algumas delas podem não estar diretamente expostas.

Propriedade definida pelo sistema Sistema gerado ou definido pelo utilizador Propósito API para NoSQL API para Cassandra API de banco de dados para MongoDB API para Gremlin API para Tabela
_rid Sistema gerado Identificador exclusivo do item Sim No No No Não
_etag Sistema gerado Tag de entidade usada para controle de simultaneidade otimista Sim No No No Não
_ts Sistema gerado Carimbo de data/hora da última atualização do item Sim No No No Não
_self Sistema gerado URI endereçável do item Sim No No No Não
id Ambas Nome exclusivo definido pelo usuário em uma partição lógica Sim Sim Sim Sim Sim
Propriedades arbitrárias definidas pelo usuário Definido pelo usuário Propriedades definidas pelo usuário na representação nativa da API (incluindo JSON, BSON e CQL) Sim Sim Sim Sim Sim

Nota

A unicidade da propriedade é imposta id dentro de cada partição lógica. Vários documentos podem ter o mesmo id valor de propriedade com diferentes valores de chave de partição.

Operações sobre itens

Os itens do Azure Cosmos DB dão suporte às seguintes operações. Você pode usar qualquer uma das APIs do Azure Cosmos DB para executar as operações.

Operação API para NoSQL API para Cassandra API para MongoDB API para Gremlin API para Tabela
Inserir, substituir, excluir, atualizar, ler Sim Sim Sim Sim Sim

Próximos passos

Saiba mais sobre como gerenciar sua conta do Azure Cosmos DB e outros conceitos: