Identificar estratégias de indexação para os dados do Azure Cosmos DB

Concluído

Um índice refere-se a informações adicionais que se encontram junto de uma coleção para tornar a consulta mais eficiente. As consultas utilizam o índice para localizar os documentos.

O índice é atualizado sempre que um documento for atualizado ou adicionado a uma coleção. Esta atualização adiciona às RUs utilizadas para cada operação de escrita.

A estratégia de indexação certa depende dos padrões de acesso às coleções. As cargas de trabalho de leitura intensiva exigem uma estratégia de indexação diferente das de escrita intensiva. Ao contrário da configuração de criação de partições, pode alterar a configuração de indexação do Azure Cosmos DB depois de uma coleção ser aprovisionada. Quando a base de dados estiver ativa e em execução, meça e ajuste o desempenho da sua configuração de índice.

Por predefinição, todas as propriedades dos documentos no Azure Cosmos DB são indexadas.

Modos de indexação

Seguem-se os três modos de indexação que pode utilizar com o Azure Cosmos DB:

  • Consistente: o índice é atualizado de forma síncrona sempre que um novo documento for escrito para a coleção. Novas consultas na recolha utilizam imediatamente o índice atualizado. Os resultados da consulta são consistentes com os documentos atualizados na coleção.

  • Em diferido: o índice é atualizado com uma prioridade inferior. As leituras e escritas da coleção assumem uma prioridade mais alta. No modo “em diferido”, as escritas são mais baratas porque o índice não é atualizado imediatamente. A altura em que o índice é atualizado totalmente depende das procuras na coleção. Os resultados da consulta só incluem os documentos atualizados quando o índice estiver consistente com a coleção.

  • Nenhum: não é criado nenhum índice. As consultas são dispendiosas nas coleções que não estão indexadas. Se estiver a utilizar a sua coleção do Azure Cosmos DB para ler registos diretamente em vez de consultar a coleção, será possível evitar a sobrecarga da indexação.

Um cenário da carga de trabalho da coleção Encomendas é a escrita intensiva:

  • As encomendas são feitas ou atualizadas a qualquer altura do dia.
  • Os relatórios são gerados com menos frequência para a quantidade e tipo dos itens vendidos.

Neste caso, pode optar por manter a indexação em todas as propriedades dos documentos, mas definir o modo de indexação para preguiçoso.

Alterar a estratégia de indexação

Pode alterar a configuração do índice a qualquer altura:

  • Se adicionar propriedades à configuração do índice, o Azure Cosmos DB analisará as coleções e atualizará o índice. O índice utiliza mais armazenamento.
  • Se reduzir o número de propriedades do índice, o Azure Cosmos DB removerá estas informações do índice. O índice utiliza menos armazenamento.

Adicionar propriedades documentais ao índice

Para incluir uma propriedade de documento no índice, pode adicionar o respetivo caminho à configuração do índice. Por exemplo:

  • Para incluir a propriedade E-Mail do Cliente no índice, adicione Customer/Email/? à matriz includedPaths.
  • Para excluir uma propriedade, adicione-a à matriz excludedPaths.

No seguinte exemplo, o modo de indexação está definido como consistente e algumas das propriedades estão indexadas.

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/Item/id/?"
        },
        {
            "path": "/Customer/email/?"
        },
        {
            "path": "/OrderTime/?"
        },
        {
            "path": "/Merchant/?"
        },
        {
            "path": "/OrderStatus/?"
        }
    ],
    "excludedPaths": [
        {
            "path": "/"
        }
    ]
}