-2

Por que ser contra NoSQL? O NoSQL faz coisas que no relacional custa muito caro ou fica complexo demais de se implementar.

Quer um exemplo simples? Um usuário assina o serviço em Janeiro/2025, o plano que ele assinou mudou o preço em Junho/2025 e em Dezembro/2025, mas ele tem que continuar com o mesmo preço que os outros não tem mais acesso.

No relacional você teria que ficar criando novos registros (novos planos) pra conseguir manter a integridade de dados com "dados passados". No NoSQL, basta embutir o plano diretamente na assinatura do usuário, o que permite um grau de personalização maior ainda (tipo, um usuário específico tem desconto de 10% todos os meses enquanto mantiver o plano ativo).

No relacional resolver ess tipo de situação é um inferno.

Carregando publicação patrocinada...
1

Nesse caso você se engana muito. Num exemplo real, apagar os planos passados seria um erro, você tem que pensar várias vezes antes de apagar de vez um registro. O ideal seria mesmo criar novos planos com status de disponibilidade diferente. Nesse exemplo, como você teria controle de exatamente quais planos existem e ainda estão ativos pra alguns usuários? A integridade do SQL vale a pena cada dor de cabeça, pelo menos na minha experiência

1

Eu não falei excluir planos passados. Releia meu comentário.

Supondo que um usuário tenha assinado o plano A, com valor de 9,99. A empresa faz uma promoção e 100 usuários ganham o plano A com mensalidade de 5,99 por 6 meses, depois volta a 9,99.

Na sua solução, voce está falando pra ficar criando plano e depois movendo os usuários da promoção pro plano normal, certo? Isso é pensamento de quem não sabe trabalhar em escala.

Imagine um produto com 50 milhões de usuários, com 2.500 tipos de promoção ao longo de 3 anos. Imagina a zona que ficaria com a sua solução.

Com NoSQL, não precisa criar nada, nenhum plano a mais. Só anexar o documento plano no registro do usuário e pronto! Zero dor de cabeça, pode ter 5 bilhões de usuários com 765.000 promoções diferentes, não importa.

Aliás, sabe quem faz exatamente isso que eu comentei? O Google One.

O problema que a maioria dos devs não tem noção de escala. Ai sugerem esse tipo de solução sua, porque não sabem trabalhar com múltiplas ferramentas. Querem usar martelo pra tudo quando se tem chave de fenda, serra etc

1

Querido, você não pensou nem um pouco antes de escrever isso né. Se você quer reajustar o plano promocional, não precisa alterar os clientes em si, é só alterar o plano. Agora nessa sua solução simples, quando tiver um aumento de preço, vai lá e reajusta o valor normal do plano de cada pessoa em 20%, 5bi de atualização contra meia dúzia do SQL. Eu trabalho com bases gigantescas, não vem achar que só você tem experiência não, Oracle bem indexado é um absurdo de performance, se você tiver bons DBAs e ADs na empresa, tudo corre bem.

-1
1

Entendo que nesse caso o conceito de Snapshot seria útil, não? Você "trava" os registros com a informação deles, Plano A com valor X para o usuário 1 (valor travado), reajustes e descontos aplicados a ele, Plano A com valor Y para usuário 2...
Sempre que você atualiza um plano, quem tem esse plano não atualiza, eles ficam com o valor atual, contendo os reajustes e descontos aplicados.

Isso é ruim pra caso a empresa queira fazer um "ajuste geral" mas é bom para fidelizar o cliente.

Ou a ideia de novos planos sempre é a opção, "exemplo com internet" ao invés de no banco chamar o plano de 600mb ele seria 600mb20260302 para que tenha um registro de quando esse plano foi criado, as atualizações nele vão impactar todos os clientes cadastrados nele e os novos planos de "600mb" vão ter nomes com registros diferentes, pode haver uma "coluna" com o valor de mb do plano para "ajuste em massa", extinção e migração do plano caso necessário.

Me corrija se eu estiver errado em meu ponto de visita por favor.

1

O que você sugeri não passa de bacalhau. Pessima ideia quando se trabalha com escala.

Leia meu outro comentário que você vai entender que com NoSQL isso se resolveria muito mais fácil do que com esse bacalhau horrível 😂