Share via


Medir o desempenho do Azure Cosmos DB para NoSQL com uma arquitetura de benchmarking

Existem mais opções, agora do que nunca, no tipo de base de dados a utilizar com a carga de trabalho de dados. Um dos principais fatores para escolher uma base de dados é o desempenho da base de dados ou do serviço, mas o desempenho de benchmarking pode ser pesado e propenso a erros. A arquitetura de benchmarking das Bases de Dados do Azure simplifica o processo de medição do desempenho com ferramentas de benchmarking open source populares com receitas de baixa fricção que implementam melhores práticas comuns. No Azure Cosmos DB para NoSQL, a arquitetura implementa as melhores práticas para o SDK Java e utiliza a ferramenta open source YCSB . Neste guia, vai utilizar esta arquitetura de referência para implementar uma carga de trabalho de leitura para se familiarizar com a arquitetura.

Pré-requisitos

Criar recursos de conta do Azure Cosmos DB

Primeiro, vai criar uma base de dados e um contentor na API existente para a conta NoSQL.

  1. Navegue para a API existente para a conta NoSQL no portal do Azure.

  2. No menu de recursos, selecione Data Explorer.

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

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

    Captura de ecrã a mostrar a opção Novo Contentor na barra de comandos Data Explorer.

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

    Definição Valor
    ID da base de dados ycsb
    Tipo de débito da base de dados Manual
    Quantidade de débito da base de dados 400
    ID do contentor usertable
    Chave de partição /id

    Captura de ecrã a mostrar a caixa de diálogo Novo Contentor na página Data Explorer.

Implementar a arquitetura de benchmarking no Azure

Agora, vai utilizar um modelo de Resource Manager do Azure para implementar a arquitetura de benchmarking no Azure com a receita de leitura predefinida.

  1. Implemente a arquitetura de benchmarking com um modelo de Resource Manager do Azure disponível nesta ligação.

    Botão Implementar no Azure.

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

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

  3. Selecione Rever + criar e, em seguida , Criar para implementar o modelo.

  4. Aguarde pela conclusão da implementação.

    Dica

    A implementação pode demorar entre 5 a 10 minutos a concluir.

Ver os resultados da referência

Agora, pode utilizar a conta de Armazenamento do Azure existente para verificar o estado da tarefa de referência e ver os resultados agregados. O estado é armazenado com uma tabela de armazenamento e os resultados são agregados num blob de armazenamento com o formato CSV.

  1. Navegue para a sua conta de Armazenamento do Azure existente no portal do Azure.

  2. Navegue para uma tabela de armazenamento com o nome 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 de tabela. Inicialmente, o estado da tarefa é Started e inclui um carimbo de data/hora na JobStartTime propriedade, mas não a JobFinishTime propriedade.

  4. Aguarde até que a tarefa tenha o estado e Finished inclua um carimbo de data/hora na JobFinishTime propriedade.

    Dica

    A conclusão da tarefa pode demorar aproximadamente 20 a 30 minutos.

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

    Captura de ecrã a mostrar o contentor e os blobs de saída da ferramenta de benchmarking.

  6. Abra o blobaggregation.csv e observe o conteúdo. Deverá agora ter um conjunto de dados CSV com resultados agregados de todos os clientes de referência.

    Captura de ecrã a mostrar o 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 arquitetura de benchmarking das Bases de Dados do Azure inclui receitas para encapsular as definições de carga de trabalho que são transmitidas à ferramenta de benchmarking subjacente para uma experiência de "1 Clique". As definições da carga de trabalho foram concebidas com base nas melhores práticas publicadas pela equipa do Azure Cosmos DB e pela equipa da ferramenta de referência. As receitas foram testadas e validadas para obter resultados consistentes.

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

  • Latência de leitura

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

  • Latência de escrita

    Diagrama da latência de escrita típica 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. Normalmente, os registos de erros da ferramenta estão disponíveis num contentor dentro da conta de Armazenamento do Azure.

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 na pasta /home/benchmarking da máquina virtual cliente.

    Error while accessing storage account, exiting from this machine in agent.out on the VM
    
  • Este erro está listado no ficheiro agent.out na VM do cliente e na conta de armazenamento se o URI do ponto final 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 na VM do cliente e na conta de armazenamento se a chave do Azure Cosmos DB estiver incorreta.

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

Passos seguintes