Un Log Sequence Number (LSN) es un identificador numérico, generalmente un entero de 64 bits, que representa una posición específica y única dentro de un log de transacciones (Write-Ahead Log o WAL) o un stream de eventos. Su característica principal es ser monótonamente creciente, lo que significa que cada nueva entrada en el log recibe un LSN mayor que la anterior. Los LSNs son cruciales para garantizar la atomicidad, consistencia, aislamiento y durabilidad (ACID) de las transacciones, permitiendo la recuperación de fallos, la replicación de datos y la sincronización entre réplicas al proporcionar un orden total de las operaciones.
Los LSNs son ampliamente utilizados en sistemas de gestión de bases de datos relacionales y NoSQL, así como en sistemas de streaming de datos. Por ejemplo, PostgreSQL utiliza LSNs (conocidos como 'WAL LSN') para rastrear el progreso de las escrituras en su Write-Ahead Log, facilitando la replicación física (streaming replication) y la recuperación a un punto en el tiempo (Point-In-Time Recovery). SQL Server también emplea LSNs para su Transaction Log. En el ámbito de los sistemas distribuidos, Apache Kafka utiliza 'offsets' que cumplen una función similar a los LSNs dentro de cada partición, permitiendo a los consumidores rastrear su progreso y a los productores asegurar la entrega de mensajes. Amazon Kinesis y otros servicios de streaming también implementan conceptos análogos para la ordenación y durabilidad de los eventos.
Para un arquitecto de sistemas, comprender los LSNs es fundamental para diseñar soluciones robustas de alta disponibilidad y recuperación ante desastres. La elección de una estrategia de replicación (síncrona vs. asíncrona) a menudo depende de cómo se gestionan y aplican los LSNs entre los nodos. Los LSNs permiten implementar mecanismos como la replicación lógica (Change Data Capture o CDC) y la recuperación de fallos, donde el sistema puede "rebobinar" o "avanzar" el log hasta un LSN específico. Un diseño deficiente en la gestión de LSNs puede llevar a inconsistencias de datos, pérdida de transacciones o tiempos de recuperación inaceptables. Evaluar cómo un sistema maneja los LSNs es clave para determinar su resiliencia, escalabilidad y la complejidad de su operación y mantenimiento.