Servidor Couchbase

Eventos: Presentación de accesores de cubo avanzados en Couchbase

Advanced Bucket Accessors en Couchbase hace posible acceder a funcionalidades avanzadas de almacenes de valor-clave (KV) usando los siguientes operadores incorporados.

Utilizan los mismos bucket bindings definidos en el handler que los Basic Bucket Accessors, pero exponen un conjunto más rico de opciones y operadores que se pueden utilizar para:

  1. Fijar o recuperar vencimientos
  2. Resolver condiciones de carrera mediante CAS
  3. Manipular elementos KV calientes bajo alta contención

Tenga en cuenta que Accesorios básicos para cubos son mucho más fáciles de usar, tienen una API trivial, y también son un poco más rápidos que los correspondientes Advanced Bucket Accessors.

En Couchbase Server 6.6.1 se han añadido los siguientes Advanced Bucket Accessors:

Estos siete nuevos bucket accessors permiten utilizar y aprovechar CAS directamente para gestionar la contención y/o establecer la caducidad de un documento (o TTL) en el servicio de datos (o KV) a través de Eventos además de realizar operaciones de contador atómico distribuido.

Por ejemplo, en lugar de confiar ciegamente en los accesores de cubo básicos para una operación similar a upsert src_bkt[id_str] = some_docEn el caso de los accesos avanzados, los accesos avanzados le permiten resolver la contención (o posible contención) en claves que tienen mutaciones concurrentes de diferentes fuentes con lógica basada en JavaScript en su función de eventos.

    • Si el documento no existe, puede utilizar couchbase.insert(src_bkt, {"id: id_str}, some_doc) y comprobar si el valor devuelto es correcto
    • Si el documento existe, puede utilizar couchbase.replace(src_bkt, {"id: id_str, "cas": current_cas}, some_doc) y comprueba si el valor de retorno es correcto o no.

Para ver ejemplos completos que incluyan JavaScript, mutaciones de entrada, mutaciones de salida y/o mensajes de registro para cada accesorio de cubo avanzado, consulte Scriptlets: Manejadores de accesos avanzados en la sección de ejemplos de la documentación.

GET avanzado: resultado = couchbase.get(binding, meta)

Esta operación permite leer un documento junto con los metadatos del bucket y las operaciones posteriores para utilizar CAS o comprobar/modificar el fecha_de_vencimiento.

En contraste con el accesorio de cubo básico GET que simplemente expone un enlace o mapa JavaScript, var adoc = src_bkt[meta.id]cuyo valor de retorno es el documento sin metadatos.

A continuación se muestra un ejemplo de la opción Avanzada GET operación.

Algunos ejemplos de valores de retorno:

 

INSERT avanzado: resultado = couchbase.insert(binding, meta, doc)

Esta operación permite crear un nuevo documento en el bucket. Esta operación fallará si el documento con la clave especificada ya existe. Permite especificar un tiempo de expiración (o TTL) para el documento.

No existe una operación de acceso a cubos básicos análoga a la operación de acceso a cubos avanzados. INSERTAR operación (como src_bkt[meta.id] = adoc es más bien un upsert).

A continuación se muestra un ejemplo de la opción Avanzada INSERTAR operación.

 

Algunos ejemplos de valores de retorno:

 

UPSERT avanzado: resultado = couchbase.upsert(binding, meta, doc)

Esta operación permite actualizar un documento existente en el bucket o, en su defecto, crear un documento nuevo con la clave especificada. La operación no permite especificar CAS (se ignorará silenciosamente). También permite especificar un tiempo de expiración (o TTL) que se establecerá en el documento.

En contraste con el accesorio de cubo básico SET que se limita a utilizar un mapa JavaScript expuesto definido mediante un alias de vinculación de bucket src_bkt[meta.id] = adoc. Para la base SET no hay valor de retorno (ni estado ni metadatos), por lo que no hay forma de comprobar el valor CAS.

A continuación se muestra un ejemplo de la opción Avanzada UPSERT operación.

 

Un ejemplo de valor de retorno:

 

Sustitución avanzada: resultado = couchbase.replace(binding, meta, doc)

Esta operación sustituye un documento existente en el bucket. Esta operación fallará si el documento con la clave especificada no existe. Esta operación permite especificar un valor CAS que debe coincidir como condición previa antes de proceder con la operación. También permite especificar un tiempo de expiración (o TTL) que debe establecerse en el documento.

No existe una operación de acceso a cubos básicos análoga a la operación de acceso a cubos avanzados. SUSTITUIR operación (como src_bkt[meta.id] = adoc es más bien un upsert).

A continuación se muestra un ejemplo de la opción Avanzada SUSTITUIR operación.

 

Algunos ejemplos de valores de retorno:

 

Supresión avanzada: resultado = couchbase.delete(binding, meta)

Esta operación permite eliminar un documento del bucket especificado por key. Opcionalmente, se puede especificar un valor CAS que se cotejará como condición previa para proceder con la operación.

En contraste con el accesorio de cubo básico DEL que simplemente utiliza un enlace o mapa JavaScript expuesto, delete src_bkt[meta.id]donde no hay valor de retorno (ni estado ni metadatos).

A continuación se muestra un ejemplo de la opción Avanzada BORRAR operación.

 

Algunos ejemplos de valores de retorno:

 

INCREMENTO Avanzado: resultado = couchbase.increment(binding, meta)

Esta operación incrementa atómicamente el campo cuente en el documento especificado. El documento debe tener la siguiente estructura:

 

En incrementar devuelve el valor posterior al incremento.

Si el documento de contador especificado no existe, se crea uno con cuente como 0 y la estructura indicada anteriormente. Y así, el primer valor devuelto será 1.

Debido a las limitaciones de la API del motor KV, esta operación no puede manipular actualmente contadores de documentos completos.

No existe una operación de acceso a cubos básicos análoga a la operación de acceso a cubos avanzados. INCREMENTO operación.

A continuación se muestra un ejemplo de la opción Avanzada INCREMENTO operación.

 

Un valor de retorno de ejemplo, suponga que crea esto KEY "my_atomic_counter:1" DOC {"count": 23} si se despliega la función Eventing anterior, el recuento se incrementará inmediatamente:

 

DECREMENTO Avanzado: resultado = couchbase.decrement(binding, meta)

Esta operación decrementa atómicamente el campo cuente en el documento especificado. El documento debe tener la siguiente estructura:

 

En decremento devuelve el valor posterior a la reducción.

Si el documento de contador especificado no existe, se crea uno con la opción cuente como 0 y la estructura indicada anteriormente. Como resultado, el primer valor devuelto será -1.

Debido a las limitaciones de la API del motor KV, esta operación no puede manipular actualmente contadores de documentos completos.

No existe una operación de acceso a cubos básicos análoga a la operación de acceso a cubos avanzados. DESCREMENTO operación.

A continuación se muestra un ejemplo de la opción Avanzada DESCREMENTO operación.

 

Un valor de retorno de ejemplo, suponga que crea esto KEY "my_atomic_counter:1" DOC {"count": 23} si se despliega la función Eventing anterior, el recuento se decrementará inmediatamente:

 

Referencias

 

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Jon Strabala, Director Principal de Producto, Couchbase

Jon Strabala es Gerente Principal de Producto, responsable del Servicio de Eventos de Couchbase. Antes de unirse a Couchbase, pasó más de 20 años construyendo productos de software a través de diversos dominios, comenzando con EDA en el sector aeroespacial y luego la transición a la construcción de software empresarial centrado en lo que hoy se conoce como "IoT" y "datos a escala". Jon trabajó para varias pequeñas consultoras de software hasta que finalmente fundó y dirigió su propia empresa. Tiene una amplia experiencia en NoSQL/NewSQL, tanto en la contribución como en la comercialización de nuevas tecnologías como los mapas de bits comprimidos y los almacenes de columnas. Jon es licenciado en ingeniería eléctrica y tiene un máster en ingeniería informática, ambos por la Universidad del Sur de California, y un MBA por la Universidad de California en Irvine.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.