Una pregunta frecuente de la comunidad de desarrolladores de Couchbase es "¿cómo puedo realizar operaciones de tipo bulk?". La expectativa es que una plataforma de datos de alto rendimiento soporte el batching para mejorar el rendimiento. Todos los clientes del SDK de Couchbase soportan operaciones por lotes. A través del batching, las peticiones se canalizan a través de la red. Aumentar el rendimiento de la red, reducir la latencia y una mejor utilización de los recursos de red es de lo que se tratan las operaciones por lotes. La Guía del Desarrollador de Couchbase contiene información más detallada y consideraciones arquitectónicas específicas para el batching. Si no estás familiarizado con nuestra guía de desarrolloes un gran lugar para aprender los entresijos del desarrollo con Couchbase. Todos los ejemplos de código a los que se hace referencia en nuestra guía de desarrollo, incluido el que se utiliza en este blog, se encuentran en un único lugar. github repo.
Paseo de la operación Go Bulk
Para construir una aplicación simple con Couchbase, primero incluye "gocb" en los paquetes de importación de la aplicación. Como recordatorio, las conexiones de la aplicación a Couchbase se instancian una vez y se reutilizan como una conexión persistente ligera al clúster. Esto permite que los cambios dinámicos de topología se produzcan sin ninguna interrupción en la aplicación y que las operaciones a nivel de bucket se ejecuten eficientemente.
Para realizar operaciones CRUD sobre documentos en Couchbase, usamos el bucket API. El bucket API en golang incluye un tipo llamado BulkOp que es una interfaz para realizar operaciones masivas. Primero necesitamos abrir una conexión al cluster, y luego usar la referencia del bucket que definimos para usar en la aplicación
El objetivo de la aplicación es insertar 10 documentos en Couchbase. Couchbase es una base de datos de documentos y habla JSON por defecto. Una forma sencilla de crear los documentos que se utilizarán con las operaciones masivas es crear primero una estructura de tipo JSON con un único campo llamado "Item". Para simplificar las cosas se instancian dos variables para ayudar a nombrar la clave, y para el valor de cada documento.
En el siguiente ejemplo, se crean dos matrices de gocb.BulkOp. Uno para realizar la inserción masiva, y el otro para hacer la obtención masiva.
A través de la maravillosa marshalling JSON en golang, 10 elementos que utilizan una referencia a la InsertOp tipo se añaden a la matriz de elementos que se insertará a granel
El tipo BulkOp tiene un método llamado "Do" que realmente realiza el pipelining de peticiones en una operación por lotes en el cluster. El método Do devolverá un error si lo hay, o nil.
La recuperación de los elementos mediante una obtención masiva funciona de la misma manera. Usando el segundo array "itemsGet" se crea una agrupación de elementos usando una referencia al tipo GetOp.
Este breve ejemplo muestra la simplicidad de usar operaciones masivas con Couchbase y el poder del sdk go. Otras operaciones masivas están soportadas incluyendo prepend, remove, replace, getandtouch, upsert, touch. Los documentos de la API que enumeran todos los métodos están disponibles en godocs.