RYOW (read your own write) puede ser complicado con algunas bases de datos NoSQL pero no con Couchbase Server. Con Couchbase Server activo vbucket toma las escrituras y lecturas por defecto (aunque puedes leer desde las réplicas si quieres en cualquier momento) y eso significa que, en estado estable, puedes leer tus propias escrituras... ¡sin problemas! Couchbase Server escribe primero en memoria y rápidamente replica a través de DCP a las réplicas y persiste en disco. Puedes esperar acuses de recibo en replicación o persistencia cuando emitas una actualización. Ese ack te da la misma garantía de RYOW incluso bajo un reinicio de nodo o failover (a.k.a ReplicateTo y PersistTo flags).
Cuando se trata de consultas, a diferencia de las bases de datos relacionales, las consultas de Couchbase Server te dan la opción de leer lo que ha sido procesado en la vista sin esperar O la consulta puede esperar hasta que todas las actualizaciones sean procesadas, hasta el punto de la solicitud de consulta para asegurar RYOW en la consulta. La primera es de baja latencia y se denomina consulta con "stale=ok". Y la segunda se conoce como consulta "stale=false", que espera a ser procesada, por lo que puede ser de mayor latencia. Las consultas de tipo "stale=false" son muy útiles. Imagina que creas una aplicación de mensajería. Si el mensaje que has enviado no aparece en tu carpeta de "mensajes enviados" (que suele ser una consulta de vista), ¡puedes volver a enviarlo! O guardas una nueva lista de reproducción en tu aplicación móvil, vuelves a tus listas de reproducción y si no ves esa nueva lista, ¡te confundes! ¡Así que stale-false es esencial!
Con estos antecedentes, echemos un vistazo a cómo la versión 3.0 mejora la situación. Para obtener RYOW en versiones anteriores de Couchbase Server, necesitabas hacer 2 cosas;
- su actualización debe utilizar la bandera PersistTo
- su consulta necesita usar la bandera stale=false
|
1 2 3 4 |
<fuerte><span estilo="color: verde">//2,5 para Leer lo que escribes</span></strong> <span estilo="color: azul">cliente.EjecutarTienda(StoreMode.Establecer, clave, val, <fuerte>Couchbase.Operaciones.PersistTo.Un,</fuerte> Couchbase.Operaciones.ReplicateTo.Cero);</span> |
Eso te llevaría a RYOW en versiones anteriores como Couchbase Server 2.5. PersistTo obviamente ralentiza las cosas a velocidad de disco. Sin embargo con la replicación en streaming (DCP) + Incremental Map/Reduce Views, obtener RYOW ya no requiere persistTo en Couchbase Server 3.0. Este es el aspecto de la misma llamada en 3.0. Ya no se necesita #1 por lo tanto PersistTo.Zero.
|
1 2 3 4 |
<fuerte><span estilo="color: verde">//3.0 para Read Your Own Write</span></strong> <span estilo="color: azul">cliente.EjecutarTienda(StoreMode.Establecer, clave, val, <fuerte>Couchbase.Operaciones.PersistTo.Cero,</fuerte> Couchbase.Operaciones.ReplicateTo.Cero);</span> |
La latencia puede ser 50 veces menor en 3.0 en comparación con versiones anteriores como Couchbase Server 2.5. ¡Eso es un gran beneficio por el dinero! Si usas vistas y necesitas consultas "stale=false", Couchbase Server 3.0 te aportará grandes beneficios. La actualización es fácil y online. Puedes descargar 3.0 aquí.
Feliz prueba.