Editor SQL e gerenciador de bancos de dados multiplataforma para Linux, macOS e Windows, com suporte a MySQL, PostgreSQL, SQLite, SQL Server e muitos outros.
maxpert/marmot
Um servidor de replicação distribuída de SQLite sem líder, que aceita gravações em qualquer nó e usa o protocolo wire do MySQL.
Alternativa open source a:CockroachDB
Amazon Aurora
- Estrelas
- 2,823
- Forks
- 81
- Issues abertas
- 39
- Último commit
- há 20 dias
O que é?
Marmot é um servidor distribuído de SQLite escrito em Go. Qualquer nó do cluster pode aceitar gravações, então não há um primário único para assumir em caso de falha. Os nós trocam alterações por meio de um protocolo gossip, e cada gravação é coordenada com um commit em duas fases em um nível de consistência configurável (ONE, QUORUM ou ALL). Conflitos na mesma linha são resolvidos pelo critério last-write-wins, usando o timestamp de um relógio lógico híbrido.
Os clientes se conectam pelo protocolo MySQL, então é possível usar drivers, ORMs e ferramentas GUI existentes, como DBeaver ou MySQL Workbench, sem modificações. O projeto lista o WordPress como uma aplicação compatível e inclui um exemplo de cluster com três nós. A replicação captura alterações no nível das linhas, em vez de reproduzir instruções SQL, e as instruções DDL são replicadas com um lock em todo o cluster e reescritas para serem idempotentes. As alterações também podem ser publicadas no Kafka ou no NATS em JSON compatível com o Debezium.
O projeto também inclui uma camada integrada de busca vetorial, com índices IVF/PQ armazenados junto ao arquivo SQLite de cada nó, e um modo de réplica somente leitura para implantações na edge.
Recursos principais
- 01Qualquer nó aceita gravações, sem eleição de líder nem etapa de failover.
- 02Usa o protocolo wire do MySQL, permitindo o funcionamento de clientes e drivers MySQL padrão.
- 03Replica alterações no nível das linhas com commit em duas fases e consistência configurável.
- 04Replica DDL com lock em todo o cluster e reescrita automática para garantir idempotência.
- 05Publica eventos de alteração no Kafka ou no NATS em um formato compatível com o Debezium.
- 06Oferece busca vetorial integrada, com funções SQL para consultas de similaridade com filtros.
Casos de uso
- Executar um site WordPress em várias regiões, usando um banco de dados replicado.
- Manter réplicas regionais de leitura de dados de configuração ou de catálogo de produtos na edge.
- Criar um pequeno repositório RAG que combine embeddings com filtros SQL comuns.
- Transmitir alterações do banco de dados para o Kafka ou o NATS e alimentar pipelines downstream.
Início rápido
- 1
Inicie um cluster de nó único
./marmot-v2 - 2
Conecte-se com um cliente MySQL
mysql -h localhost -P 3306 -u root
Antes de usar
- Oferece consistência eventual, não serializabilidade forte.
- Cada nó mantém uma cópia completa de todos os dados, por isso é adequado para conjuntos de dados menores, não para conjuntos muito grandes (acima de 100 GB).
- Não há suporte para DDL simultâneo no mesmo banco de dados a partir de vários nós, e é menos seguro repetir ALTER TABLE.
- Arquivos de mídia, como uploads, não são replicados e precisam de armazenamento compartilhado separado.
Tópicos
Perguntas frequentes
- O que é marmot?
- Um servidor de replicação distribuída de SQLite sem líder, que aceita gravações em qualquer nó e usa o protocolo wire do MySQL. Marmot é um servidor distribuído de SQLite escrito em Go. Qualquer nó do cluster pode aceitar gravações, então não há um primário único para assumir em caso de falha. Os nós trocam alterações por meio de um protocolo gossip, e cada gravação é coordenada com um commit em duas fases em um nível de consistência configurável (ONE, QUORUM ou ALL). Conflitos na mesma linha são resolvidos pelo critério last-write-wins, usando o timestamp de um relógio lógico híbrido.
- marmot é gratuito? Qual é a licença?
- marmot é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- marmot ainda é mantido?
- Manutenção ativa. O último commit de marmot foi em 30 de set. de 2026.
- Para que posso usar marmot?
- Executar um site WordPress em várias regiões, usando um banco de dados replicado. Manter réplicas regionais de leitura de dados de configuração ou de catálogo de produtos na edge. Criar um pequeno repositório RAG que combine embeddings com filtros SQL comuns. Transmitir alterações do banco de dados para o Kafka ou o NATS e alimentar pipelines downstream.
- Como instalar marmot?
- Inicie um cluster de nó único: ./marmot-v2 Conecte-se com um cliente MySQL: mysql -h localhost -P 3306 -u root
- Onde consigo marmot?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/maxpert/marmot
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
CLI e biblioteca Go para gerenciar alterações no schema do banco de dados com arquivos SQL versionados ou funções Go.
Cliente de banco de dados com IA e servidor MCP para desktop e web, compatível com Postgres, MySQL, MariaDB, SQL Server, ClickHouse e SQLite.
Cliente SQL desktop gratuito e multiplataforma, com ferramentas para bancos de dados e suporte a mais de 100 bancos via drivers JDBC e ODBC.
Banco de dados SQL com operações de fork, clone, branch, merge, push e pull no estilo Git para tabelas, que se conecta como o MySQL.
Uma ferramenta de linha de comando leve e independente de frameworks para gerenciar migrações de banco de dados em SQL puro entre equipes e ambientes.