Sobre o projeto

sled é um banco de dados embarcado escrito em Rust, descrito por seu autor como software beta. Sua API se assemelha a um BTreeMap<[u8], [u8]> thread-safe, então operações básicas de inserção, obtenção, intervalo, remoção e compare-and-swap são familiares para desenvolvedores Rust. As principais capacidades listadas no README incluem transações ACID serializáveis para leitura e escrita atômica de múltiplas chaves em múltiplos keyspaces, operações atômicas completas de chave única, leituras zero-copy, lotes de escrita, assinaturas de mudanças em prefixos de chave, múltiplos keyspaces, operadores de merge, iteradores de intervalo diretos e reversos, e um gerador de IDs monotônico seguro contra falhas. Compressão zstd opcional está disponível através de um recurso de build desabilitado por padrão. A implementação é descrita como uma árvore lock-free sobre um pagecache lock-free sobre um log lock-free, com um design de armazenamento estruturado por log otimizado para flash. Utiliza técnicas de b-tree como codificação de prefixo e truncamento de sufixo para reduzir custos de armazenamento para chaves longas com prefixos compartilhados. O README afirma desempenho de escrita semelhante a LSM-tree com desempenho de leitura semelhante a B+ tree tradicional, e observa que a durabilidade padrão é um fsync a cada 500ms, configurável via flush_every_ms ou chamadas manuais de flush/flush_async. Avisos notáveis: transações são otimistas, então closures de transação devem evitar estado externo ou IO, a menos que sejam idempotentes; sled não suporta múltiplas instâncias abertas, então deve permanecer aberto durante a vida do processo; chaves numéricas devem ser armazenadas em big-endian para ordenação lexicográfica correta; e o formato em disco deve mudar antes da versão 1.0.0, exigindo migrações manuais. O README também afirma que SQLite é preferível quando a confiabilidade é a principal restrição, RocksDB quando o preço por desempenho de armazenamento importa, e LMDB para cargas de trabalho multiprocesso que raramente escrevem. A versão mínima suportada do Rust é 1.62.