Una Persistent Data Structure (PDS), también conocida como estructura de datos inmutable, es aquella que no puede ser modificada después de su creación. Cualquier operación que aparentemente 'modifique' la estructura en realidad produce una nueva instancia de la estructura de datos que incorpora los cambios, dejando la versión original intacta. Esto contrasta con las estructuras de datos efímeras o mutables, donde las operaciones modifican directamente la instancia existente. Las PDS logran esto compartiendo eficientemente partes inmutables de la estructura entre versiones, minimizando la copia de datos y optimizando el uso de memoria.

Las PDS son fundamentales en lenguajes de programación funcional como Clojure (donde sus colecciones son persistentemente inmutables por defecto), Scala y Haskell, donde la inmutabilidad es un principio central. En el mundo de los sistemas distribuidos y bases de datos, los 'append-only logs' y las estructuras de datos usadas en sistemas como Apache Kafka o los 'Merkle Trees' (utilizados en Git y blockchain) exhiben propiedades de persistencia, donde las versiones anteriores son inherentemente preservadas. Bases de datos inmutables o 'event sourcing' también se basan en principios similares, donde el estado se reconstruye a partir de una secuencia inmutable de eventos.

Para un Arquitecto de Sistemas, comprender las PDS es crucial para diseñar sistemas con alta concurrencia, resiliencia y auditabilidad. Ofrecen beneficios inherentes en entornos multi-hilo al eliminar la necesidad de bloqueos complejos para proteger el estado, simplificando la lógica de concurrencia y reduciendo el riesgo de 'race conditions'. Facilitan la implementación de funcionalidades como 'undo/redo', 'time-travel debugging' y la replicación de estado en sistemas distribuidos. Sin embargo, el 'trade-off' principal es el potencial aumento en el consumo de memoria y la sobrecarga computacional para crear nuevas versiones, aunque técnicas como el 'structural sharing' mitigan esto. La elección de PDS impacta directamente la complejidad del código, la mantenibilidad y la capacidad de escalar horizontalmente sistemas que dependen de un estado consistente.