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:
- http://www.couchbase.com/blog/how-many-nodes-part-1-introduction-sizing-couchbase-server-20-cluster
- http://www.couchbase.com/blog/how-many-nodes-part-2-sizing-couchbase-server-20-cluster
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
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?
Legal. Me ajudou muito.
Obrigado!
Essa visualização não está funcionando no Couchbase 5.1. Alguma ajuda?
Na verdade, não consigo criar a visualização no Couchbase 5.1. Ele está falhando ao tentar salvar a exibição. Obrigado.
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