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.
A imagem a seguir mostra a hierarquia de entidades em uma conta do Azure Cosmos DB.
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 |