Sem categoria

Cálculo do tamanho médio dos documentos armazenados no Couchbase.

O Couchbase oferece um banco de dados NoSQL exclusivo que combina tecnologia integrada de cache e armazenamento. Muitos clientes e clientes em potencial estão usando-o para armazenar dados binários e/ou documentos JSON. Muitas vezes, é necessário determinar o tamanho médio dos documentos para poder dimensionar adequadamente um sistema de produção. Veja este excelente conjunto de blogs do Perry para saber mais sobre o dimensionamento do Couchbase:

Esta entrada do blog detalha uma maneira simples de calcular o tamanho médio do documento (para dados binários e documentos JSON) usando exibições.

Ele deve ser usado somente em um sistema de desenvolvimento ou de preparação e não em um sistema de produção real, pois isso criará uma sobrecarga ao indexar cada documento.

 

As visualizações são funções que você escreve em Javascript e que permitem extrair, filtrar, agregar e localizar informações de documentos armazenados no servidor Couchbase.

 

A primeira etapa na criação de uma visualização é fornecer um mapa que filtrará as entradas para determinadas informações e extrairá algumas delas. O resultado de uma função de mapa é uma lista ordenada de pares de chave/valor, chamada de índice. Os resultados das funções de mapa são mantidos em disco pelo servidor Couchbase e serão atualizados de forma incremental à medida que os documentos forem alterados.

Além disso, e como opção, é possível criar um reduzir função que pode somar, agregar ou realizar cálculos em informações.

As visualizações são explicadas em nosso guia de desenvolvimento em:
http://www.couchbase.com/docs/couchbase-devguide-2.1.0/understanding-views.html

 

Agora vamos dar uma olhada no que será necessário para criar a visualização:

 

MapaO código a seguir da função de mapa para a exibição gera um índice simples de par Chave-Valor, sendo a Chave a chave do documento e o Valor o comprimento do documento:

 

function (doc, meta) {

 Se (meta.type == "json") {

   var size = JSON.stringify(doc).length;

   emit(meta.id, size);

 }

 Se (meta.type == "base64") {

   var size = decodeBase64(doc).length;

   emit(meta.id, size);    

 }

}

 

A função funciona para documentos JSON (usando JSON.stringify) e documentos binários (usando decodeBase64)

 

A função pode ser ampliada para poder calcular o tamanho médio de documentos específicos, conforme necessário.

ReduzirPor fim, criamos uma função de redução (obrigado, Aaron, do Couchbase (https://twitter.com/apage43)  (Obrigado por ajudar a criá-lo!) para a exibição que calcula o tamanho médio do documento agregando os valores e dividindo pelo número de valores. Ela segue a construção map and reduce, portanto, parece um pouco complicada no início, mas produzirá a contagem, a soma e a média (as funções internas padrão não fornecem a média e eu queria tornar essa função muito fácil de usar).

 

function (keys, values, rereduce) {

 se(!rereduce) {

   var total = 0,

       count = 0;

   for (v in values) {

     total+= valores[v];

     count++;

   }

 } else {

   var count = 0;

       total = 0;

   for (v in values) {

     total += valores[v]['total'];

     count += values[v]['count'];

   }    

 }

 var average = total / count;

 return {count: count,

           total: total,

           média: média};

}

 

A saída deve ser semelhante a esta no editor de visualização do Couchbase:

 

Antes de executar a consulta, é necessário especificar reduce como true:

Depois que a visualização tiver sido criada e salva, clique em Show Results (Mostrar resultados) e será exibida uma única linha com o tamanho médio do documento, semelhante a esta:

Pronto!

Envie comentários e perguntas para alexis@couchbase.com

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Alexis Roos

Alexis Roos é gerente sênior de engenharia na Salesforce. Alexis tem mais de 20 anos de experiência em engenharia de software, sendo que os últimos cinco anos foram dedicados à ciência e engenharia de dados em larga escala, trabalhando para SIs na Europa, Sun Microsystems/Oracle e várias startups, incluindo Radius Intelligence, Concurrent e Couchbase.

5 Comentários

  1. Desenvolvedor Java outubro 2, 2013 em 7:14 pm

    Estou tentando localizar a calculadora que fornece os requisitos de memória RAM com base no tamanho e no número de teclas? Lembro-me de tê-la usado há algumas semanas e não consigo mais encontrá-la. Vocês ainda a têm?

  2. Legal. Me ajudou muito.
    Obrigado!

  3. Essa visualização não está funcionando no Couchbase 5.1. Alguma ajuda?

    1. Na verdade, não consigo criar a visualização no Couchbase 5.1. Ele está falhando ao tentar salvar a exibição. Obrigado.

  4. Alguém pode me ajudar a encontrar uma maneira de obter cada _docType dos buckets de usuário usando N1QL ou exibições.

    A segunda visualização não está funcionando para mim

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.