TidesDB no MariaDB: o que é, quando usar e como instalar
O TidesDB chegou ao MariaDB como storage engine LSM. Veja para que serve, quando usar e quando evitar, exemplos em fintechs, seguros e varejo, e como instalar e testar.

Em uma frase: o TidesDB virou um storage engine plugável do MariaDB. Com ele, suas tabelas podem gravar dados com uma arquitetura LSM, pensada para escrita pesada, CPUs com muitos núcleos e discos NVMe, enquanto você continua usando o SQL de sempre. Vou explicar do jeito que eu gostaria que tivessem me explicado: o que é, para que serve, quando usar, quando não usar e, por fim, como instalar e brincar com ele na prática.
Primeiro: o que é um storage engine?
O MariaDB separa o "cérebro" (parser SQL, otimizador, permissões, replicação) do "músculo" que grava e lê os bytes no disco. Esse músculo é o storage engine. O padrão é o InnoDB, mas você pode escolher outro por tabela: ColumnStore para análises, Aria, Spider para sharding e por aí vai. Se esse assunto é novo para você, comece pelo nosso guia storage engines do MariaDB explicados.
O TidesDB é um motor chave-valor transacional, open source e escrito em C. Ele não é um servidor: não tem porta, login nem SQL próprio. Foi feito para ser embutido em outros sistemas, e o plugin TideSQL o encaixa dentro do MariaDB. Você ganha o motor do TidesDB por baixo e o MariaDB inteiro por cima.
Como ele funciona, sem dor de cabeça
- LSM em vez de B-tree: o InnoDB atualiza páginas "no lugar", como quem corrige uma ficha num arquivo. O TidesDB anota tudo no fim de um caderno (escrita sequencial) e organiza depois, em segundo plano. É a compactação. Escrever no fim do caderno é muito barato.
- Chave separada do valor: as chaves ficam na estrutura ordenada e os valores num log sequencial. Isso reduz a amplificação de escrita, ou seja, quantas vezes o mesmo dado é regravado no disco. É bom para o bolso e para a vida útil do SSD.
- Sem travas (lock-free): as estruturas internas foram desenhadas para muitos núcleos trabalhando ao mesmo tempo.
- MVCC otimista: leitor não bloqueia escritor e vice-versa. Conflitos são resolvidos na hora do commit.
Quando usar
A regra de bolso: muita escrita, chegando sem parar, e o dado novo vale mais que o antigo. Alguns cenários típicos por setor (são exemplos de padrão de carga, não casos publicados de empresas):
- Fintechs: trilha de auditoria, eventos de transação, logs de antifraude e rastreamento de Pix, ou seja, milhões de inserções que quase nunca são alteradas.
- Seguradoras: telemetria de seguro auto por uso (o quanto e como você dirige), dados de sensores de IoT residencial e histórico de cotações.
- Varejo e e-commerce: clickstream (cada clique do cliente), eventos de carrinho, histórico de preços e movimentação de estoque em tempo real.
- Healthtechs: leituras contínuas de dispositivos de monitoramento e logs de acesso a prontuário exigidos pela LGPD.
- Telecom, logística e indústria: CDRs (registros de chamadas), rastreamento de frota por GPS e séries temporais de máquinas.
- SaaS em geral: filas de eventos, logs de aplicação, métricas e qualquer tabela "append-only".
Quando NÃO usar
- Quando você ainda não testou. É um motor recém-chegado ao ecossistema. Seu ERP em produção não é o laboratório.
- Muita atualização no mesmo registro (saldo de conta alterado a cada segundo, por exemplo): o LSM guarda versões e a compactação precisa limpar depois.
- Relatórios analíticos pesados varrendo bilhões de linhas: aí o caminho é o ColumnStore.
- Quando você depende de recursos específicos do InnoDB (chaves estrangeiras, ferramentas de backup, tuning que a equipe já domina). Valide cada um antes de trocar.
- Disco lento: o design brilha em NVMe. Em disco mecânico, o ganho tende a encolher.
Quão rápido é?
Vou ser honesto, que é o que vale aqui: o artigo da MariaDB Foundation que usei como referência não publica números. A proposta dele é dar o mapa para qualquer um rodar os benchmarks de forma reproduzível com o TAF, o framework de testes de desempenho da Foundation. Os cenários preparados medem leitura (POINT_SELECT, OLTP_RO) e escrita (OLTP_RW, OLTP_WO) em duas máquinas cedidas pela Hetzner: um Intel i5-13500 de 20 threads e um AMD EPYC 9454 com 96 threads.
Pela arquitetura, a expectativa é ganho principalmente em escrita intensa e alta concorrência, com leitura pontual competitiva. Mas expectativa não é medição. Meça com a sua carga. Já já te mostro como.
Por que usar o TidesDB dentro do MariaDB?
- Você não abandona o SQL: JOINs, views, procedures, usuários, permissões e conectores continuam iguais.
- Escolha por tabela: a tabela de eventos vai para o TidesDB e o cadastro de clientes continua no InnoDB, no mesmo banco.
- Um só ecossistema para operar: monitoramento, ferramentas e equipe que já conhecem MariaDB.
- Open source de ponta a ponta, com testes reproduzíveis publicados pela própria Foundation.
Na prática: instalando
Segundo a Foundation, o TidesDB vem empacotado com o MariaDB 11.4.13 (RHEL 9 / AlmaLinux 9 / Rocky 9) no espelho oficial. Os pacotes são: server, client, common, devel, shared e o MariaDB-plugin-tidesdb.
# Opção 1: instalar direto, num servidor de testes
sudo dnf install ./MariaDB-server-11.4.13-1.el9.x86_64.rpm \
./MariaDB-client-11.4.13-1.el9.x86_64.rpm \
./MariaDB-common-11.4.13-1.el9.x86_64.rpm \
./MariaDB-shared-11.4.13-1.el9.x86_64.rpm \
./MariaDB-plugin-tidesdb-11.4.13_5.0.0-1.el9.x86_64.rpm
sudo systemctl start mariadb
Depois, carregue o plugin e confira. O nome exato da biblioteca pode variar conforme o pacote. Liste com rpm -ql MariaDB-plugin-tidesdb se der erro:
INSTALL SONAME 'ha_tidesdb';
SHOW ENGINES; -- procure TIDESDB na lista
SHOW PLUGINS;
Atenção: trocar o motor não é só escrever ENGINE=TIDESDB. O plugin precisa estar instalado, com diretório de dados (tidesdb_data_home_dir) e diretório de plugins configurados corretamente.
Na prática: usando
CREATE DATABASE lab_tides;
USE lab_tides;
-- Tabela de eventos de pagamento: muita escrita, pouca alteração
CREATE TABLE eventos_pagamento (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
conta_id BIGINT UNSIGNED NOT NULL,
tipo VARCHAR(20) NOT NULL, -- 'pix_in', 'pix_out', 'estorno'
valor DECIMAL(14,2) NOT NULL,
criado_em DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
PRIMARY KEY (id),
KEY idx_conta_data (conta_id, criado_em)
) ENGINE=TIDESDB;
INSERT INTO eventos_pagamento (conta_id, tipo, valor)
VALUES (42, 'pix_in', 150.00), (42, 'pix_out', 37.90), (7, 'pix_in', 1000.00);
-- Leitura pontual e por faixa, como sempre
SELECT * FROM eventos_pagamento
WHERE conta_id = 42 AND criado_em >= NOW() - INTERVAL 1 DAY;
-- Convertendo uma tabela existente (em homologação!)
ALTER TABLE logs_app ENGINE=TIDESDB;
Na prática: medindo com o TAF
Para comparar com o InnoDB de forma séria, use o mesmo roteiro da Foundation:
git clone https://github.com/MariaDB/TAF.git
cd TAF/taf-perl
# Instala MariaDB + plugin a partir dos RPMs (ajuste os caminhos)
perl taf.pl --verbose --db-software-install \
--db-software-install-packages=/rpms/MariaDB-server-11.4.13-1.el9.x86_64.rpm,/rpms/MariaDB-plugin-tidesdb-11.4.13_5.0.0-1.el9.x86_64.rpm,...
# Compila o sysbench contra essa instalação
perl taf.pl --properties=properties/mariadb/tidesdb/sysbench_tidesdb_small_host_writes.properties \
--action=build-client
# Ajuste PROP_DIR e INSTALL_DIR no script e rode
./scripts/mariadb/tidesdb/tidesdb_small.sh
Dica de quem já apanhou: os caminhos nos .properties (tidesdb_data_home_dir, taf.db_plugin_dir) e nos scripts (PROP_DIR, INSTALL_DIR) precisam ser ajustados ao seu ambiente. É aí que 90% das tentativas quebram.
Meu veredito
O TidesDB é aquela ferramenta que não substitui o InnoDB, mas complementa. Para tabelas de eventos, logs e telemetria, vale um teste sério já. Para o núcleo transacional, vale acompanhar de perto, medir e esperar a maturidade. E o mais legal é ver o MariaDB continuar plugável e aberto a inovação. Quer outras ideias de motores? Volte ao hub MariaDB.
Créditos e agradecimento
Este artigo é uma explicação em português inspirada no excelente post de Jonathan "Jeb" Miller no blog da MariaDB Foundation. Obrigado, Jeb, pelo roteiro claro e reproduzível. Parabéns também a Alex (Gaetano) Padula, criador do TidesDB, pelos anos de trabalho que trouxeram esse motor para o MariaDB, e à Hetzner, que cedeu o hardware dos testes.
Leia o original (em inglês): MariaDB Foundation: Exploring TidesDB Performance with TAF.