Partilhar via


Meça o Azure Cosmos DB para desempenho NoSQL com uma framework de benchmarking

Agora há mais opções do que nunca sobre o tipo de base de dados a utilizar com a sua carga de trabalho de dados. Um dos fatores-chave para escolher uma base de dados é o desempenho da base de dados ou serviço, mas o desempenho em benchmarking pode ser complicado e propenso a erros. A framework de benchmarking para Azure Databases simplifica o processo de medição do desempenho com ferramentas populares de benchmarking open-source, com receitas de baixa fricção que implementam as melhores práticas comuns. No Azure Cosmos DB para NoSQL, o framework implementa as melhores práticas para o Java SDK e utiliza a ferramenta open source YCSB . Neste guia, usa esta estrutura de benchmarking para implementar uma carga de trabalho de leitura e assim se familiarizar com a estrutura.

Pré-requisitos

Criar recursos de conta Azure Cosmos DB

Primeiro, cria-se uma base de dados e um contentor na API existente para a conta NoSQL.

  1. Navegue até à sua API existente para a conta NoSQL no Portal Azure.

  2. No menu de recursos, selecione Data Explorer.

    Captura de ecrã da opção Data Explorer destacada no menu de recursos.

  3. Na página do Data Explorer , selecione a opção Novo Contentor na barra de comandos.

    Captura de ecrã da opção Novo Contentor na barra de comandos do Explorador de Dados.

  4. No diálogo Novo Contentor , crie um novo contentor com as seguintes definições:

    Configuração Valor
    ID da base de dados ycsb
    Tipo de rendimento da base de dados Manual
    Taxa de transferência da base de dados 400
    ID do contentor usertable
    Chave de partição /id

    Captura de ecrã do diálogo do Novo Contentor na página do Explorador de Dados.

Implementar o framework de benchmarking no Azure

Agora, usas um modelo do Gerenciador de Recursos do Azure para implementar o framework de benchmarking no Azure com a receita de leitura padrão.

  1. Implemente o framework de benchmarking usando um modelo Azure Resource Manager disponível neste link.

    Botão de deployar para Azure.

  2. Na página de Implantação Personalizada, os seguintes parâmetros

    Captura de ecrã da página de Implementação Personalizada com os valores dos parâmetros preenchidos.

  3. Selecione Rever + criar e depois Criar para implementar o modelo.

  4. Aguarde até que a implementação seja concluída.

    Sugestão

    O desdobramento pode demorar entre 5 a 10 minutos a completar.

Ver resultados do benchmark

Agora, pode usar a conta Azure Storage existente para verificar o estado do trabalho de benchmark e visualizar os resultados agregados. O estado é armazenado usando uma tabela de armazenamento e os resultados são agregados num blob de armazenamento usando o formato CSV.

  1. Navegue até à sua conta Azure Storage existente no portal Azure.

  2. Navegue até uma tabela de armazenamento chamada ycsbbenchmarkingmetadata e localize a entidade com uma chave de partição de ycsb_sql.

    Captura de ecrã da tabela ycsbbenchmarkingMetadata numa conta de armazenamento.

  3. Observe o JobStatus campo da entidade da tabela. Inicialmente, o estado do trabalho é Started e inclui um carimbo temporal na propriedade JobStartTime, mas não na JobFinishTime.

  4. Espere até que o trabalho tenha um estado de Finished e que inclua um carimbo temporal na propriedade JobFinishTime.

    Sugestão

    Pode demorar aproximadamente 20-30 minutos para o trabalho terminar.

  5. Aceda ao contentor de armazenamento na mesma conta, com o prefixo ycsbbenchmarking-*. Observe os blobs de saída e de diagnóstico da ferramenta.

    Captura de ecrã do contentor e dos blobs de saída da ferramenta de benchmarking.

  6. Abre o aggregation.csv blob e observa o conteúdo. Agora deves ter um conjunto de dados CSV com resultados agregados de todos os clientes de benchmark.

    Captura de ecrã do conteúdo do blob de resultados da agregação.

    Operation,Count,Throughput,Min(microsecond),Max(microsecond),Avg(microsecond),P9S(microsecond),P99(microsecond)
    READ,180000,299,706,448255,1079,1159,2867
    

Receitas

A estrutura de benchmarking para Azure Databases inclui receitas para encapsular as definições da carga de trabalho que são passadas para a ferramenta de benchmarking subjacente para uma experiência "1-Clique". As definições da carga de trabalho foram desenhadas com base nas melhores práticas publicadas pela equipa Azure Cosmos DB e pela equipa da ferramenta de benchmarking. As receitas foram testadas e validadas para resultados consistentes.

Pode esperar ver as seguintes latências para todos os processos de leitura e escrita no repositório do GitHub.

  • Latência de leitura

    Diagrama da latência típica de leitura com uma média de cerca de 1 milissegundo a 2 milissegundos.

  • Latência de escrita

    Diagrama da latência típica de escrita com uma média de cerca de 4 milissegundos.

Problemas comuns

Esta secção inclui os erros comuns que podem ocorrer ao executar a ferramenta de benchmarking. Os registos de erro da ferramenta estão normalmente disponíveis num contentor dentro da conta Azure Storage.

Captura de ecrã do contentor e dos blobs numa conta de armazenamento.

  • Se os registos não estiverem disponíveis na conta de armazenamento, este problema é normalmente causado por uma cadeia de ligação de armazenamento incorreta ou em falta. Neste caso, este erro está listado no ficheiro agent.out dentro da pasta /home/benchmarking da máquina virtual do cliente.

    Error while accessing storage account, exiting from this machine in agent.out on the VM
    
  • Este erro está listado no ficheiro agent.out tanto na VM cliente como na conta de armazenamento se o URI do endpoint do Azure Cosmos DB estiver incorreto ou inacessível.

    Caused by: java.net.UnknownHostException: rtcosmosdbsss.documents.azure.com: Name or service not known 
    
  • Este erro está listado no ficheiro agent.out tanto na VM cliente como na conta de armazenamento se a chave da base de dados Azure Cosmos estiver incorreta.

    The input authorization token can't serve the request. The wrong key is being used….
    

Próximos passos