Sobre el proyecto

sled es una base de datos embebida escrita en Rust, descrita por su autor como software beta. Su API se asemeja a un BTreeMap<[u8], [u8]> seguro para hilos, por lo que las operaciones básicas de inserción, obtención, rango, eliminación y comparación e intercambio resultan familiares para los desarrolladores de Rust. Las capacidades clave enumeradas en el README incluyen transacciones ACID serializables para leer y escribir atómicamente múltiples claves en múltiples keyspaces, operaciones de clave única totalmente atómicas, lecturas sin copia, lotes de escritura, suscripciones a cambios en prefijos de claves, múltiples keyspaces, operadores de fusión, iteradores de rango hacia adelante y hacia atrás, y un generador de ID monotónico seguro ante fallos. La compresión zstd opcional está disponible detrás de una característica de compilación deshabilitada por defecto. La implementación se describe como un árbol sin bloqueos sobre un pagecache sin bloqueos sobre un log sin bloqueos, con un diseño de almacenamiento estructurado en log optimizado para flash. Utiliza técnicas de b-tree como codificación de prefijos y truncamiento de sufijos para reducir los costos de almacenamiento de claves largas con prefijos compartidos. El README afirma un rendimiento de escritura similar a LSM-tree con un rendimiento de lectura similar a B+ tree tradicional, y señala que la durabilidad por defecto es un fsync cada 500 ms, configurable mediante flush_every_ms o llamadas manuales de flush/flush_async. Advertencias notables: las transacciones son optimistas, por lo que los cierres de transacción deben evitar estado externo o E/S a menos que sean idempotentes; sled no admite múltiples instancias abiertas, por lo que debe permanecer abierto durante la vida del proceso; las claves numéricas deben almacenarse en big-endian para un orden lexicográfico correcto; y se espera que el formato en disco cambie antes de 1.0.0, requiriendo migraciones manuales. El README también afirma que SQLite es preferible cuando la fiabilidad es la restricción principal, RocksDB cuando el precio del rendimiento de almacenamiento importa, y LMDB para cargas de trabajo multiproceso que escriben raramente. La versión mínima de Rust soportada es 1.62.