Organização de Banco de dados e escolha de MongoDB ou PostgreeSql

PostgreSQL

MongoDB

29/09/2022

Preciso de um sistema de registro de despesas (transações), como tantos que tem..

O SISTEMA: O usuário se cadastra (user). Cadastra diferentes carteiras (wallets). Depois registra as despesas (transações).

Estou em dúvida se uso mongoDb ou SQL, qual é o banco adequado para este de situação?

Pensei em fazer no Mongo ir separar em Collections (users, wallets, transactions).

Pra adicionar uma transação, eu pegaria o user (dentro de users) que estaria salvo porque a pessoa estaria logada, pesquisaria as Wallets que ela tem, e aí adicionaria a transação contendo o user e a wallet.

Existe alguma forma mais inteligente de organizar isso?

Pensei em trabalhar com subdocumentos: cada user ser uma collection, os dados do usuário um documento, e as transações colocar dentro de outro documento. Mas não parece muito confortável.

Fora que se colocar as transações dentro de um único documento, eles logo vão ultrapassar o peso máximo do documento, né?

Dito isto, o MongoDb é capaz de suprir esta necessidade, ou o adequado seria o banco relacional mesmo?

aa
Rôney Fischer

Rôney Fischer

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

29/09/2022

Imagine que você está criando um sistema onde diversos "atores" se relacionam.

Usuários podem possuir diversas carteiras. Em cada carteira, poderemos ter múltiplas transações, etc.

Se os seus dados são de natureza relacional, é muito provável que um banco relacional seja mais adequado para esta finalidade, o que descartaria o MongoDB.

Quanto a escolher o melhor banco relacional, tenha em mente parâmetros objetivos, como:

- tamanho da base
- criticidade do conteúdo
- volume de acessos/alterações
- tipos de operações

Bancos simples como o MySQL dão um excelente desempenho, são fáceis de configurar e usar, mas não oferecem muitos recursos nem segurança.
Bancos mais complexos oferecem mais recursos, mas podem ser mais difíceis de administrar, podendo até requerer licenças.

O PostgreSQL é um banco "mais ou menos". Ele trabalha com versionamento de dados. Se você fizer muitas alterações nos dados, a base vai crescer rapidamente e requerer a execução periódica de um processo chamado Vaccum. É uma espécie de Garbage Collector para dados. Eu não gosto de depender disso.

Se os dados envolvem dinheiro, necessitando um melhor controle, eu optaria por bancos sólidos como Oracle e MS-SQL Server. Mas custa caro.

Qualquer que seja a escolha, bancos requerem manutenções, assim como carros. Não é só instalar e acreditar que nunca darão problema.

Requer backup, expurgo de dados, limpeza de arquivos de log, etc.
GOSTEI 0
POSTAR