GH GambleHub

Modelos de consistencia

Consistencia describe qué valores y en qué orden ven los lectores en los cambios competitivos. La elección correcta del modelo es el equilibrio entre el rigor de los invariantes, la latencia, la disponibilidad y el coste (PACELC). A continuación, un manual práctico sobre modelos y sus aplicaciones.

1) Modelos «rigurosos»

Linearizable (lineabilidad, Strong)

El comportamiento es como si todas las operaciones se realizaran instantáneamente en un solo orden, respetando el tiempo real.
Pros: modelo mental simple, seguro para dinero y singularidades.
Contras: quórum/líder → crecimiento p95/p99, especialmente interregional.
Yuzkeys: balances, inventario con límites estrictos, nombres/claves únicos.

Sequential consistency

Todos los flujos ven el mismo orden de operaciones, pero el orden real-tiempo no es obligatorio. Un poco más débil que el linearizable, rara vez se expone directamente en los productos.

Serializable (serializabilidad transaccional)

Es equivalente a algún orden secuencial de transacciones (en lugar de operaciones individuales).
Ventajas: corrección de invariantes complejos a nivel de consulta/tabla.
Contras: más caro (bloqueos/versionamiento/validación de conflictos).
Yuzkeys: finoperaciones complejas, recuentos consistentes, inventario.

Snapshot Isolation (SI)

Cada transacción lee una instantánea inmutable en el tiempo; las entradas entran en conflicto por «las mismas líneas», pero es posible escribir skew.
Ventajas: lectura rápida sin bloqueos, informes estables.
Contras: no serializable, trampa write skew (ejemplo: médicos de turno).
Yuzkeys: análisis, informes, la mayoría de CRUD sin invariantes duros.

2) Por-sesión y garantías causales

Read-Your-Writes (RYW)

El cliente, después de su escritura, siempre la ve en lecturas posteriores.
Pros: buen UX (forma → confirmación).
Contras: garantía local, no global.

Monotonic Reads / Writes

Las lecturas no se «retrotraen» hacia atrás; los registros de un cliente se aplican en el mismo orden en que se enviaron.

Consistencia causal

Si la operación depende de otra (A → B), todos verán A antes de B.
Pros: intuitivamente para los amigos, comentarios.
Contras: más difícil de enrutar y marcas de causalidad (relojes vectoriales).
Yuzkeys: comunicaciones, edición conjunta, cintas de eventos.

3) Modelos débiles e híbridos

Bounded Staleness

Las lecturas no pueden retrasarse más que Δ t o N versiones.
Pros: UX predecible, buen compromiso interregional.
Contras: no protege contra conflictos de escritura.

Eventual Consistency

Con el tiempo, todas las copias convergen; el orden y el retraso no están garantizados.
Ventajas: latencia/costo mínimo, alta disponibilidad (AP).
Contras: necesita un merge explícito (CRDT/reglas de dominio).
Yuzkeys: cachés, fides, métricas, likes, nen referencias críticas.

4) Anomalías típicas y lo que significan

Dirty Read: lectura de datos no asimétricos.
Lectura no repetible: la misma lectura dentro de una transacción da valores diferentes.
Phantom: cuando se vuelve a solicitar, aparece/desaparece una cadena que encaja con el predicado.
Escritura Skew (bajo SI): dos transacciones leen un invariante intersectorial y escriben diferentes líneas, violando la condición «en suma debe ser ≥ 1».
Actualización perdida: la entrada «frota» los cambios de la competencia.

💡 Se trata con un aumento del nivel de aislamiento (a Serializable), bloqueos de predicado, controles de invariante, o compensadores de dominio/enfoque de saga.

5) Quórum y niveles de lectura/escritura

Muchos almacenes permiten especificar niveles de 'R '/' W' (número de réplicas para leer/escribir).

El quórum (R + W> N) da «intersección» y fuertes garantías de las lecturas de la última escritura.
W = 1, R = 1 → baja latencia, pero los datos antiguos son posibles.
Afinación: las operaciones críticas son de alto 'W' (o líder), el resto son de bajo 'R' por velocidad.
Read-repair/Hinted handoff ayuda a alcanzar la consistencia en el fondo.

6) Horas y orden: cómo «entendemos» la causalidad

Lamport clocks: orden parcial de eventos.
Vector clocks: fijan la causalidad, permiten la detección de conflictos.
Aproximaciones Hybrid/TrueTime: limitan la dispersión de horas en el clúster para organizar transacciones y bound-staleness.
Versioning: 'version/ts + actor' para merge; en CRDT, grupos semi cerrados (conmutación/idempotencia).

7) CRDT y dominio merge

Los CRDT (tipos de datos convergentes/replicables) garantizan una convergencia sin coordinación: G-Counter, OR-Set, LWW-Register, Map, opciones de texto OT/WOOT.
Cuando es útil: me gusta, muchas etiquetas, cestas, documentos.
Limitaciones: pensar en una semántica correcta de «fusión» para una entidad de dominio específica.

8) Comunicación con CAP/PACELC

Modelos rigurosos (Linearizable/Serializable) en multi-región → CP con aumento de latencia (PACELC: seleccionamos C y pagamos L).
Modelos débiles/híbridos → AP y/o baja L, pero necesita merge/conflicto-resolve.
Híbrido: núcleo CP para invariantes + proyección AP/caché de lectura.

9) Selección de modelo: lista de cheques

1. Invariantes: ¿Qué no se puede violar? (singularidad, equilibrio, límites).
2. Regionalidad: ¿dónde se ejecutan las escrituras/lecturas? (local/global).
3. SLO por latencia: p95/p99 para rutas críticas?
4. El precio de la coordinación: ¿están dispuestos a pagar quórums interregionales?
5. Conflictos: ¿hay un merge determinista o necesita un coordinador?
6. Expectativas UX: ¿Son importantes RYW/monotonic/causal para el cliente?
7. Observabilidad: ¿Cuál es la medida del valor/conflicto/grado de obsolescencia?
8. Folbacks: ¿qué sucede cuando se divide una red (P)? ¿read-only/local/cola?

10) Recetas rápidas

Pago/saldo: Linearizable/Serializable, líder + quórum, tiempos cortos; lecturas de RYW.
Perfiles/feed: Causal/Bounded staleness + caché; CRDT para likes/contadores; RYW para el autor.
Búsqueda/análisis: SI/Read Committed, proyecciones asíncronas, eventual para índices.
SaaS Global: Geo-partitioning; «registros domésticos» - CP, informes/directorios - AP.
Edición conjunta: causal/eventual + CRDT/OT; guardar la «historia».

11) Observabilidad de la coherencia

Lag métricas: 'replication _ lag', 'staleness _ age _ ms' (p50/p95/p99).
Conflictividad: proporción de conflictos, tiempo medio de resolución.
Quórums: el éxito de los quórums 'R/W', los timautas de las rutas interregionales.
Garantías del cliente: RYW/monotonic - etiquetas de trade por sesión.

12) Errores típicos

Exigir a Strong «en todas partes» sin una base comercial → una explosión de latencia y valor.
Dual-write a diferentes regiones sin sagas/CRDT → fantasmas y pérdida de invariantes.
Ignorar RYW/montonicidad en UX → «desaparecer» los datos recién enviados.
No rastrear la obsolescencia de cachés/proyecciones → discrepancias «eternas».
Un merge mal pensado → pérdidas/tomas inesperadas de valores.

13) Mini-referencia de arquitectura

Write-core (CP): líder, registros de quórum, SLO y timeouts, revistas.
Plano de lectura (AP): vistas materializadas, cachés TTL, reparación de lectura.
Cliente: sticky-session/garantía de sesión (RYW/monotonic), etiquetas de versión.
Motor de conflicto: reglas de dominio/CRDT, cola de resolución manual.
Monitoreo: lagunas, conflictos, fracciones de lecturas obsoletas.

El modelo de consistencia es un contrato de ingeniería entre datos, latencia y disponibilidad. Comience con invariantes y SLO, elija estrictamente donde desee y más débil donde pueda, sin olvidar las garantías del cliente, quórum, reloj y observabilidad. Una combinación competente de modelos da escala, previsibilidad y resiliencia - sin sacrificar la verdad empresarial y la confianza del usuario.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.