Un SSTable (Sorted String Table) es una estructura de datos persistente e inmutable que almacena un conjunto de pares clave-valor, ordenados lexicográficamente por clave. Cada SSTable es un archivo autónomo que contiene bloques de datos indexados, permitiendo búsquedas rápidas. Son inmutables una vez escritos, lo que simplifica la concurrencia y la recuperación, ya que no se modifican en su lugar. Las actualizaciones y eliminaciones se manejan escribiendo nuevas entradas en SSTables posteriores, y las operaciones de compactación consolidan múltiples SSTables en uno nuevo, eliminando entradas obsoletas y optimizando el espacio.

Los SSTables son un componente fundamental en la implementación de la mayoría de las bases de datos NoSQL basadas en el modelo Log-Structured Merge-tree (LSM-tree). Ejemplos prominentes incluyen Apache Cassandra, Apache HBase, Google Bigtable y RocksDB. En estos sistemas, los datos se escriben primero en un "memtable" en memoria y, una vez que este alcanza un cierto tamaño, se vuelca a disco como un nuevo SSTable. Las lecturas deben consultar el memtable y potencialmente múltiples SSTables, mientras que las operaciones de compactación en segundo plano fusionan SSTables para mantener la eficiencia de lectura y liberar espacio.

Para un arquitecto, comprender los SSTables es crucial para diseñar sistemas de almacenamiento escalables y de alto rendimiento. Su inmutabilidad simplifica la replicación, la recuperación ante fallos y la consistencia, pero introduce la necesidad de compactación, que consume recursos de I/O y CPU. La elección de la estrategia de compactación (ej. Leveled Compaction, Size-Tiered Compaction) impacta directamente en la latencia de lectura/escritura, el "write amplification" y el espacio en disco. Un diseño adecuado requiere equilibrar la frecuencia y agresividad de la compactación con los requisitos de rendimiento y el costo operativo, así como considerar cómo el tamaño y número de SSTables afectan el rendimiento de las consultas y la gestión de la memoria caché.