Executando verificação de segurança...
11

SaaS: Postgres ou Sqlite?

Fala, pessoal!

Bem, há algumas semanas vi um post recomendando o uso de Sqlite para criação rápida e descomplicada de SaaS. Mas pesquisando um pouco vi que nem não existe um consenso a respeito. Algumas pessoas não recomendam e outras recomendam.

Gostaria de saber se alguém já usou em produção, se recomenda, se teve problemas. Óbviamente a minha ideia de SaaS não deve ser algo que vai demandar um grande volume de acesso e de uso. Como a maioria, tem grandes chances de já nascer dando seus últimos suspiros (sejamos realistas, a vida real não é igual aos vídeos hypados de youtube, né? kkk)

Agora sobre o Postgres qual o minimo de configuração de VPS seria necessário pra rodar uma aplicação NestJS com Postgres? A ideia é usar Coolify, que deve ter o seu peso na balança.

Obrigado!

Carregando publicação patrocinada...
7

A pergunta está formulada ao contrário.

Um Postgres, para rodar com o mínimo de dignidade para si mesmo e para a sua aplicação NestJS + Coolify, vai consumir 512MB de RAM e 2 vCPUs de 1GHz antes mesmo de você inserir a primeira linha de dados.

O SQLite roda numa batata com 30MHz e 4KB de memória.

Ambos vão guardar os seus dados com a mesma integridade e segurança.

A questão não é "por que usar SQLite?", mas sim "por que você precisa de Postgres?".

Você precisa de um motivo concreto e real para arcar com toda complexidade e o consumo de recursos do Postgres.

Para que exatamente você precisa de tanta potência? Replicação em tempo real? Milhares de escritas concorrentes? Análise complexa?

Se você não tem uma resposta imediata e clara para isso, a escolha é óbvia.

Se você precisa perguntar, você não precisa de Postgres!!!

3

Obrigado! Faz bastante sentido.

Gostei da contribuição do @yac. Ele falou a respeito do Turso, já tinha ouvi falar mas não lembrava dele, tem um plano gratuido e pode ser uma alternativa.

Pra um SaaS pequeno, sei lá, estou imaginando aqui 30 usuários simultâneos consumindo API (leitura e escrita), o SQLite aguentaria bem? Tem alguma ideia de quantos usuários (eu sei que esse não é o único paramêtro, mas apenas pra se ter uma ideia) simultâneos o SQLite aguentaria?

Acredito que começar com ele possa ser a melhor alternativa, como estou usando Prisma a migração pra Postgres, se necessário, não seria um drama.

Conteúdo excluído
2

Assino embaixo.

Quero acrescer que falo há mais de 16 ano que o SQLite dá pra atender quase qualquer demanda desde que a pessoa saiba o que está fazendo, oque pode ser ligeiramente mais difícil no começo. Mas outros DBs vão exigir tunning para ir bem, algo que o SQLite quase não exige. Mas exige arquitetar bem a aplicação. Ele pode ser útil até me casos que pare que só o PostgreSQL daria conta. Ele é simples e eficiente.

A maioria das pessoas vão falar do SQLite sem conheçe-lo bem, sem entender be banco de dados de forma geral, de forma profunda, ou até sem entender de computação.

Algumas coisas eram um pouco difíceis de fazer, como formar fila de escrita, replicação e coisas onde a carga seja muito grande (dica: a carga quase nunca é muito grande). Hoje estão surgindo com mais rapidez ou não, com mais qualidade ou não, mais maduro ou não, soluções prontas para o Sqlite até bater outros bancos de dados tidos como mais potentes. M ão estou dizendo que o ecossistema está perfeito, mas claramente iniciou-se uma onda de projetos para fazer o SQLite ser um banco de dados pau para toa obra, o que dava antes, mas você que tinha que se virar. Pesquise, tem muita coisa.

Tem caso que é no brainer. Eu j ogo um jogo que cada pessoa administra uma companhia. Não sei como eles fizeram, mas não faz o menos sentido não ter uma instância do SQLite para cada companhia que não interagem entre si. Até interagem em certo ponto, onde também terão os SQLites para administrar isso e aí necessita um pequeno cuidado na escrita. Aqui estou dando exemplo de SQLite puro.

A maioria dos ERPs do mercado rodam bem no SQLite se quiserem. Já vi rodarem em coisa absurdamente pior. Nem vou falar de blogs e afins. Em alguns casos pelo menos um a fila de escrita será necessário.

Quem diz que o SQLite não dá da conta é quem não estuda o assunto, não testa, só l ê algo em internet (a própria página do SQLite que está abandonada, não reflete o que o SQLite é hoje, e de qualquer forma eles preferem ser conservadores, até porque não precisam querem 100% do mercado, eles já têm ou deveriam ter acima de 99%, sob certo critério). Ficaria até chato querer competir com banco de dados mais complexos e certamente se eles fizessem isso traria dificuldades, dariam a mão e pediram o braço. Então o certo é ter outros softwares para fazer o SQLIte mais poderoso para casos mais extremos.

Claro que sem saber o caso concreto não tem como decidir. Por isso eu falo que está entrando muita gente na área que não tem condições de manter um sistema em pé, precisa dominar a computação para tomar a melhor decisão. Este é o parágrafo mais importante que estou respondendo.

Ninguém aqui vai se responsabilizar pela sua decisão, você pe que sofrerá as consequências. Não é porque o SQLite deu muito certo para mim e muitos amigos aue sabiam que estava fazendo que vai dar para você, ainda que hoje tenha ferramentas que facilitam muito dar certo. Sei que a maioria das pessoas não conseguem tunar direito o PostgreSQL, é bem complexo, e se tiver que fazer replicação então, aí chama um especialista, de verdade.

Eu não cravo no SQLite porque já vi gente tentando e não conseguindo, não porque o SQLite não dava conta, ela só não sabia fazer, mesmo ela se vendendo como um dos maiores especialistas em banco de dados do mundo.

Então acho que isso cabe para te ajudar: https://www.tabnews.com.br/maniero/faq-do-programador-perdidao.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

1
Conteúdo excluído
1

Até onde eu sei SQLite é usado por praticamente todos os apps mobile para armazenamento local. E depois sincronização na nuvem se aplicavél, que pode ser um MongoDB ou um PostgreSQL. Não é bom substimar o SQLite. É literalmente uma engine de banco de dados em um único arquivo...

3
3

Você vai precisar decidir. Como sempre, ambos tem vantagens e desvantagens.

Certmente Postgres é mais robusto. Mas ao mesmo tempo SQLite é mais simples.

Caso decida usar SQLite, recomendo dar uma olhada aqui: https://turso.tech/

Único detalhe sobre Turso que me decepcionou é que há alguns meses eles não hospedam mais no Brasil :(

1

Turso parece uma boa forma de começar e tem um plano gratuito! Obrigado!

Posso estar enganado, mas ele não é open source? Talvez tenha alguma imagem de Docker pra rodar em uma VPS.

2

uso sqlite no meu micro-saas (não demanda muitas requisições nem muitos dados)
utilizo um "DB" chamado pocketbase.

é um projeto que fornece um db em sqlite, um painel admin e controle de autenticação, autorização, realtime db, entre outros.
me atende super bem e é super fácil de implantar (é basicamente um DB de bolso mesmo, como o nome sugere)

ele se aproveita da facilidade do sqlite e do Go, entao um unico binário já sobe um servidor de DB pronto pra usar (com api rest).

por conta desse projeto eu acabei tomando gosto pelo SQLite e sempre tento usar ele em tudo.

mas se a sua ideia tem pretensão de crescimento e expansão, melhor ir pra um PostgreSQL.
na empresa que trabalho atualmente, só um PostgreSQL pra segurar a demanda de centenas de milhões de inserts diarios e uma base de dados de 40Bi linhas.

1

SaaS? PostgreSQL é claro não tem o que discutir, SQLite é muito bom para armazenar dados locais ou onde cada usuário precisa de um conjunto específico de tabelas por um motivo simples:

  • SQLite não é servidor
  • SQLite não tem proteção de linha (RLS)
  • SQLite não tem gestão de usuários
  • SQLite não tem pool de conexões
  • SQLite não tem gestão de sessão

Se isso for importante (e é) você vai ter que fazer na mão

1

A questão de qual banco de dados usar geralmente vai depender do seu caso de uso.

O SQLite é um banco de dados extremamente leve, porém ele não é indicado para aplicações com grande volume de escritas (pode gerar gargalos), para aplicações com com replicação (Vários processos diferentes usando o mesmo banco de dados) ou aplicações que usam recursos complexos como busca de texto por semelhança (PostgreSQL é mais robusto em alguns casos complexos)
A escalabilidade de um projeto em SQLite é muito limitada, para um SaaS eu não indico usar como banco de dados principal, principalmente pela estabilidade limitada que ele oferece.

Olhando a longo prazo, eu recomendo utilizar PostgreSQL.

0
0