RocksDB, el motor de almacenamiento basado en LSM-tree empleado en sistemas como MyRocks, TiKV o Apache Kafka, incorpora de forma nativa un mecanismo de control de concurrencia multiversión (MVCC) que permite a lectores y escritores operar simultáneamente sin bloqueos. La clave está en combinar dos ingredientes: por un lado, la naturaleza append-only del LSM-tree, donde cada escritura genera una nueva versión de la clave en la memtable o en archivos SST inmutables; por otro, un sistema de números de secuencia monótonamente crecientes que etiqueta internamente cada entrada como un triplet (clave de usuario, número de secuencia, tipo de valor).
El artículo, firmado por Artem Krylysov, desgrana paso a paso cómo se aprovechan esos números de secuencia para ofrecer vistas consistentes a los lectores. Cuando arranca una lectura, RocksDB captura el número de secuencia publicado en ese instante y descarta cualquier clave posterior, de modo que la consulta siempre observa los datos tal y como existían al comienzo. La memtable, implementada como una skip list concurrente sin cerrojos, ordena las claves primero por la clave de usuario y, en caso de empate, por número de secuencia descendente, lo que permite seeks eficientes con complejidad O(log n).
Sobre esta base se construyen las actualizaciones atómicas mediante WriteBatch, que asigna un rango contiguo de números de secuencia a todas las operaciones del lote y solo publica el rango tras insertarlas por completo, y los snapshots explícitos, que simplemente fijan un número de secuencia para que varias lecturas compartan la misma vista. La compactación, por su parte, consulta la lista de snapshots activos para decidir qué versiones antiguas puede reciclar de forma segura. El texto incluye ejemplos de código en Rust y traza el paralelismo con las técnicas que usan PostgreSQL, CockroachDB, FoundationDB, MongoDB WiredTiger y LMDB.
