"Read Your Writes" (RYW) es una garantía de consistencia que forma parte de los modelos de consistencia eventual. Específicamente, asegura que, si un cliente realiza una operación de escritura exitosa y luego intenta leer el mismo dato, la lectura siempre reflejará la versión más reciente escrita por ese cliente. Esto previene el "retroceso en el tiempo" percibido por el usuario para sus propias operaciones, aunque otros clientes puedan no ver la escritura inmediatamente debido a la propagación asíncrona en un sistema distribuido. Es una forma de consistencia "per-client" o "session-level consistency", más fuerte que la consistencia eventual pura pero más débil que la consistencia linealizable.
Esta garantía es fundamental en muchos sistemas de bases de datos distribuidas y servicios en la nube. Por ejemplo, Amazon DynamoDB ofrece RYW como una opción de consistencia (eventual por defecto, pero se puede solicitar una lectura "strongly consistent" para una sesión o operación específica que, entre otras cosas, garantiza RYW). Apache Cassandra, aunque es eventualmente consistente, puede configurarse para ofrecer RYW a través de niveles de consistencia de lectura y escritura adecuados (por ejemplo, una escritura con `QUORUM` y una lectura con `QUORUM` dentro de la misma sesión). Google Cloud Spanner, al ser una base de datos distribuida globalmente con consistencia externa, garantiza RYW de forma inherente para todas las operaciones. A nivel de aplicación, se puede implementar RYW manteniendo un "token de versión" o "timestamp" de la última escritura del cliente y dirigiéndolo a una réplica que garantice tener esa versión o una más reciente.
Para un arquitecto, "Read Your Writes" es crucial porque equilibra la experiencia del usuario con la complejidad y el rendimiento del sistema distribuido. Ofrecer RYW mejora significativamente la usabilidad y la percepción de corrección para el usuario final, evitando situaciones confusas donde un usuario no ve su propia actualización. Sin embargo, implementar RYW puede introducir latencia adicional en las lecturas (esperando la propagación de la escritura o dirigiendo la lectura a una réplica específica), aumentar la complejidad del enrutamiento de solicitudes o requerir mecanismos de seguimiento de estado por sesión. La decisión de garantizar RYW implica un trade-off entre la consistencia percibida por el usuario, la disponibilidad y la latencia del sistema, y a menudo se implementa a nivel de sesión o aplicación para evitar el costo de una consistencia global más estricta.