- Um banco de dados chave-valor de alto desempenho desenvolvido em Go, com suporte a interface C e incorporando princípios modernos de projeto de bancos de dados como árvore LSM, MVCC e arquitetura lock-free
- Garante consistência imediata e durabilidade com base em WAL (Write Ahead Logging), oferecendo alto desempenho de leitura/escrita com flush/compactação em segundo plano e processamento paralelo lock-free
- Com uma arquitetura embarcada de nó único, busca armazenamento de dados leve e rápido sem rede nem distribuição
Principais características do Wildcat
- Baseado em árvore LSM, otimizado para cargas de trabalho intensivas em escrita
- MVCC (controle de concorrência multiversão) e estruturas de dados lock-free, com processamento sem bloqueios nos caminhos principais
- Log WAL: registra o estado completo das transações e oferece suporte à recuperação
- Skip list com reconhecimento de versão para acelerar o MVCC em memória
- Escritas thread-safe/lock-free e gerenciamento atômico de cache/memória
- SSTable com estrutura BTree imutável, suporte a separação de chave-valor e otimização com Bloom Filter
- Garantia ACID para transações e possibilidade de escolher níveis de durabilidade (Full/Partial/None)
- Crash recovery para recuperar transações confirmadas e não concluídas
- Batch/iterador: suporte a iteração por intervalo, prefixo e bidirecional
- Projeto moderno com Bloom Filter, separação key-value (
.klog, .vlog) e compactação com reconhecimento de tombstone/versão
- Estatísticas/logging/monitoramento: fornece várias interfaces de diagnóstico e estatísticas, como Stats() e LogChannel
- Build como biblioteca C e API: pode ser compilado como biblioteca compartilhada em Go e usado diretamente em várias linguagens
- Suporte a Go 1.24+ e Linux/macOS/Windows (64 bits)
Por que isso importa? (diferenças em relação a outros KVs embarcados)
- Tem uma arquitetura LSM+MVCC semelhante à de RocksDB e Badger, mas oferece design nativo em Go, lock-free e multithread, otimizado para uso no ecossistema Go
- Especializado em banco de dados embarcado: entrega consistência imediata, durabilidade e alto desempenho sem overhead de rede/replicação
- Alta confiabilidade e transparência com recuperação de transações e preservação de estados incompletos
- Permite ajuste fino por carga de trabalho com diversos parâmetros de compactação/buffer/cache
2 comentários
Uma linguagem em que, de forma suspeita, surgem muitos bancos de dados
Uma linguagem da qual sai banco de dados demais, a ponto de parecer suspeito