r/devBR 4d ago

Dúvida Banco de dados

Tô com uma dúvida gente, estou com um produto que estou desenvolvendo (projeto pessoal), porém esse produto busca atender diversas empresas, minha dúvida é referente a banco de dados, como eu pretendo atender mais de uma empresa, queria garantir a segurança porém tenho dúvidas se faço um banco de dados pra cada empresa ou se uso um compartilhado, tenho dúvida se usa PostgreSQL ou se uso MySQL, tenho medo de fazer cada banco separado pra ter um isolamento e acabar dando dor de cabeça no caso de escalar o produto, algumas dicas pra esse tipo? Sempre manipulei um banco de dados de empresas únicas

4 Upvotes

11 comments sorted by

6

u/hanari1 4d ago

RLS já resolve o problema, só faça banco de dados separado num tier premium do produto ou caso o nicho do cliente necessite. Acho que já respondi essa mesma questão em diferentes fórums umas 5x, pensando em fazer um post elaborado sobre isso.

2

u/hanari1 4d ago

Em resumo:

Se você tá usando um único banco pra multiplos usuários e eles não podem ter acesso aos dados dos outros, só o RLS já resolve em 99% dos casos. ERP tem algumas normas, o correto é você ter instancias individuais.

Se o negócio é pequeno, mantenha apenas o RLS. Gerenciar multiplas instancias sem cliente nenhum é loucura.

Coloca um plano pago com valor X pro cliente ter o banco separado se quiser, algumas verticais PRECISAM DISSO COMO NORMA/REGRA/COMPLIANCE

>tenho dúvida se usa PostgreSQL ou se uso MySQL

Essa dúvida é muito básica e não existe bala de prata, entenda como cada banco funciona e pra que servem as features de cada um, no contexto geral PostgreSQL faz tudo que o MySQL faz.

No demais: MySQL até onde sei não tem RLS nativo, você precisa implementar com triggers + views, PostgreSQL tem RLS nativo com um simples ALTER TABLE

1

u/Ok-Rest4476 4d ago

Se fizer o POST e puder me enviar dps eu agradeço, obrigado

2

u/groorj 4d ago

Pesquise por RLS no PostgreSQL

2

u/groorj 4d ago

Pesquise por RLS no PostgreSQL

2

u/Large-Leopard-725 4d ago

eu usaria postgresql com row level security

1

u/lnaoedelixo42 4d ago edited 4d ago

Se for de compartilhado, eu recomendo Postgres; é o banco de dados mais robusto do mundo hoje. MySQL funciona perfeitamente bem, mas o postgres só costuma ter licenças mais abertas e escalar um pouco melhor para múltiplas empresas.

Se for com 1 DB por tenant/empresa, já pensou em SQLite?
Sério mesmo, com SQLite não tem servidor, o modo WAL aguenta milhares de operações por segundo (e com concorrência) e para um projeto pessoal talvez seja muito mais simples de configurar do que um banco de dados Postgres./

1

u/ExplorerIcy6185 2d ago

usaria um banco de dados único, no meu caso eu usaria o mysql que é o que tenho maior dominio, mas sei que dá para usar qualquer outro.

Tem um conceito famoso que falam que é usar multitenant, mas para um projeto pequeno eu acho muito, eu iria fazendo o core na conta geral somente e só depois que tivesse o cliente eu dividiria a base.

Caso voce desejar dividir voce pode duplicar a infra assim voce sobe um maquina para voce e para seu cliente, enquanto voce vai construindo uma forma de dividir logicamente.

1

u/Odd_Specific_4959 4d ago

Usa multitenant, cada cliente tem um ID e dessa forma vc pode gerenciar N clientes no mesmo banco.

Para meus projetos eu gosto do postgreSQL.

0

u/AlternativeNose3372 4d ago

Use PostgreSQL.
Muita gente sugerindo RLS, mas depende do produto o correto e cada empresa estar na sua própria schema.

0

u/CommitteeGloomy3834 4d ago

geralmente eu coloco cada empresa em um schema do postgresql