Couchbase ofrece una base de datos NoSQL única que combina tecnología integrada de caché y almacenamiento. Muchos clientes y clientes potenciales la utilizan para almacenar datos binarios y/o documentos JSON. A menudo, es necesario determinar el tamaño medio de los documentos para poder dimensionar correctamente un sistema de producción. Vea este gran conjunto de blogs de Perry para aprender más sobre el dimensionamiento de Couchbase:

Esta entrada de blog detalla una forma sencilla de calcular el tamaño medio de un documento (para datos binarios y documentos JSON) utilizando vistas.

Esto está destinado a ser utilizado sólo en un sistema de desarrollo o puesta en escena y no en un sistema de producción real, ya que esto crearía una sobrecarga al indexar cada documento.

 

Las vistas son funciones que se escriben en Javascript y que permiten extraer, filtrar, agregar y encontrar información de los documentos almacenados en el servidor Couchbase.

 

El primer paso en la creación de una vista es proporcionar un mapa que filtrará las entradas en busca de determinada información y extraerá parte de ella. El resultado de una función map es una lista ordenada de pares clave/valor, denominada índice. Los resultados de las funciones map son almacenados en disco por el servidor Couchbase y se actualizan de forma incremental a medida que cambian los documentos.

Adicionalmente y de forma opcional, es posible crear un reducir que puede sumar, agregar o realizar cálculos sobre la información.

Las vistas se explican en nuestra guía de desarrollo en:
http://www.couchbase.com/docs/couchbase-devguide-2.1.0/understanding-views.html

 

Veamos ahora lo que se necesita para crear la vista:

 

Mapael siguiente código de la función map para la vista genera un simple índice de pares Clave-Valor siendo la Clave la clave del documento y el Valor la longitud del documento:

 

function (doc, meta) {

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

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

   emit(meta.id, size);

 }

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

   var size = decodeBase64(doc).length;

   emit(meta.id, size);    

 }

}

 

La función funciona para documentos JSON (utilizando JSON.stringify) y documentos binarios (utilizando decodeBase64)

 

La función podría ampliarse para poder calcular el tamaño medio de documentos específicos, según sea necesario.

ReduzcaPor último, creamos una función de reducción (gracias a Aaron de Couchbase (https://twitter.com/apage43)  por ayudarme a crearlo) para la vista que calcula el tamaño medio del documento sumando los valores y dividiéndolos por el número de valores. Sigue la construcción map and reduce por lo que parece un poco complicado al principio, pero dará como resultado el recuento, la suma y el promedio (las funciones incorporadas por defecto no proporcionan el promedio y yo quería hacer esta función muy fácil de usar).

 

function (keys, values, rereduce) {

 if(!rereduce) {

   var total = 0,

       count = 0;

   for (v in valores) {

     total+= valores[v];

     cuenta++;

   }

 } else {

   var count = 0;

       total = 0;

   for (v in valores) {

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

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

   }    

 }

 var media = total / recuento;

 return {cuenta: cuenta,

           total: total,

           media: media};

}

 

La salida debería tener este aspecto en el editor de vistas de Couchbase:

 

Antes de ejecutar la consulta, es necesario especificar reducir a true:

Una vez creada y guardada la vista, haga clic en Mostrar resultados y aparecerá una única línea con el tamaño medio del documento, similar a ésta:

¡Voilà!

Envíe sus comentarios y preguntas a alexis@couchbase.com

Autor

Publicado por Alexis Roos

Alexis Roos es director de ingeniería sénior en Salesforce. Alexis cuenta con más de 20 años de experiencia en ingeniería de software y los últimos cinco años se ha centrado en la ciencia y la ingeniería de datos a gran escala, trabajando para SI en Europa, Sun Microsystems/Oracle y varias startups, como Radius Intelligence, Concurrent y Couchbase.

4 Comentarios

  1. Desarrollador Java octubre 2, 2013 a 7:14 pm

    Estoy tratando de localizar la calculadora que puede dar el requisito de ram basado en el tamaño de la clave y el número de teclas? Recuerdo haberla usado hace unas semanas y ya no la encuentro. ¿Todavía la tenéis?

  2. Genial. Realmente me ayudó.
    Gracias.

  3. Esta vista no funciona en Couchbase 5.1. ¿Alguna ayuda?

    1. En realidad no puedo crear la vista en Couchbase 5.1. Está fallando cuando intenta guardar la vista. gracias.

Dejar una respuesta