image

Access unlimited bootcamps and 650+ courses forever

75
%OFF
Article image

RM

Rafael Martins10/12/2025 08:36
Share

Como o SQLite (e Turso cloud) Revolucionam a Arquitetura Multitenant

    Eu mexo com programação desde o ano 2000. Aprendi Lógica de programação em Pascal e depois Java. Era uma época bem diferente da atual, fiz um curso presencial de Java, na sua versão 1.3. Aliás, usávamos o jdk 1.3, mas a versão que aprendíamos era anterior. Lembro carinhosamente do nosso amigo e professor "Chopão", na Digitech em Palmas/TO.

    Naquela época, como os materiais não eram tão acessíveis, eu digitava o código que aprendia e, ao compilar, já via no console: deprecated, deprecated. Como qualquer outro curso da época e, mesmo atualmente ainda acontece, embora em menor escala.

    Mas há coisas que se depreciam ou, mesmo parecendo atuais, estão depreciadas ou claramente erradas. Eu gostaria de falar sobre uma coisa especificamente: SQLite não é para produção.

    Embora tenha parado de programar e voltado várias vezes, voltei para ficar há cerca de quatro anos atrás. Iniciei estudando django que já usava o sqlite por padrão. Com o tempo, verifiquei na documentração que não era recomendado usar SQLite para produção. Pesquisando, eu vi no site do SQLite que ele aguenta muita coisa, mas havia receio. Naquela época, coloquei um sistema para rodar em produção (ainda rodando hoje) em SQLite. Nesse meio tempo, vi uma palestra no DjangoCon sobre usar SQLite em produção que, é mais do que a maioria avassaladora dos sites precisa e, se ativaro modo WAL (Write-ahead logging) ele fica ainda mais (e muito mais) performático.

    As pessoas acreditavam tanto em SQLite que apareceram tecnologias como Litestream para facilitar backups e replicação.

    Se pensarmos em arquitetura multitenant, há várias abordagens. Em apertada síntese, uma delas é usar um DB somente e uma coluna discriminadora. É simples e tranquila, mas há riscos envolvendo a falta de isolamento de dados (imagine você mostrando dados pessoais sensíveis no sistema de um cliente, mas os dados estão sendo legalmente processados por outro cliente do seu multitenant?). Além disso, um dos "locadores" podem usar muitos recursos, prejidicando todos os outros. A segunda abordagem é a por esquema (na concepção do Postgres, poq no mysql um esquema é um DB até onde eu sei). Isola bem melhor os dados, mas ainda assim tem seus problemas inclusive do vizinho barulhento. A terceira abordagem seria 1 banco de dados por "locador", isolação total de dados, muito bom. Mas, imagine a complexidade de se criar um banco de dados para cada locador? E a complexidade, segurança etc?

    SQLite resolve tudo isso. É um arquivo, não tem senha ou login. É só criar e usar. É super rápido, podendo chegar a microsegundos (!), super fácil de replicar com litestream. SEM LATÊNCIA DE REDE. Ampla gama de plugins, inclusive de busca por vetor.

    E a concorrência? Claro, SQLite não comporta concorrência de escrita, mas na escrita, em modo WAL, não bloqueia leitores. Tom Dyson em sua apresentação no DjangoCon Europe 2023 afirmou que mesmo sem WAL, SQLite aguentaria a carga da grande maioria dos sistemas.

    E se você quer facilidade ainda maior, use Turso Cloud. É 100% compatível com SQLite, ou, é SQLite para produção como o divulgam. Você escreve no servidor (verdade única) e ele replica em quantos DB's estiverem sendo usados e ond estiverem sendo usados.

    Isso é uma revolução para arquitetura multitenant, fazendo a abordagem 1 DB por "locador" totalmente viável e sem complexidade e garantindo a isolação total dos dados.

    O Turso levou esse pensamento além. Agora, passou a se falar em 1 DB por usuário. Imagine? Banco de dados super rápidos, queries que chegam a microsegundos.

    SQLite não é para produção? É para produção e serve para sistemas complexos.

    É interessante como certos concensos errados (depreciados) se perpetuam na comunidade. Monolíticos (SSR com template engines) jamais devem ir à produção, SQLite não é para produção, entre outros. A revolução é feita por aqueles que fogem ao consenso de modo pensando. Pode ser que sua suposição esteja errada, mas vocẽ tentou. A suposição dos criadores do Turso estava certa e eles revolucionaram a arquitetura multitenant.

    Estou prestes a colocar um produto ambicioso em produção e sua base é SQLite. Se será um sucesso o tempo dirá, mas não vou me render ao consenso.

    Não seja repetidor do concenso, busque a verdade e a eficiência.

    Share
    Recommended for you
    GitHub Copilot - Código na Prática
    CI&T - Backend com Java & AWS
    Nexa - Machine Learning e GenAI na Prática
    Comments (2)
    Rafael Martins
    Rafael Martins - 10/12/2025 12:59

    Obrigado pelo comentário e pela pergunta.

    Confesso que nunca estudei essa questão de core-banking, mas conheço uma programadora do BB que ainda programa em Cobol (ou FORTRAN) não me lembro ao certo, ainda com mainframe. Mas acredito que a maior dificuldade vai ser mgirar os dados.

    Sem dúvida para os bancos essa questão de "apenas focar em custos" é importante, pois, problemas não só podem prejudicar a imagem da instituição, mas também processos judiciais, em caso de violações de segurança que podem acabar por aumentar os custos. O sistema já testado e funcional talvez ainda seja a melhor opção.


    DIO Community
    DIO Community - 10/12/2025 10:47

    Excelente, Rafael! Que artigo cirúrgico, inspirador e essencial! Você tocou no ponto crucial da Arquitetura de Dados: o SQLite e o Turso Cloud estão revolucionando o consenso de que o SQLite não é para produção, tornando a Arquitetura Multitenant com isolamento total de dados totalmente viável e sem complexidade.

    É fascinante ver como você aborda o tema, mostrando que a eficiência reside em fugir do consenso e buscar a verdade e a performance real do sistema.

    Qual você diria que é o maior desafio para um desenvolvedor ao migrar um sistema de core banking para uma arquitetura cloud-native, em termos de segurança e de conformidade com as regulamentações, em vez de apenas focar em custos?