Não sei a estrutura do Banco de Dados e também os dados armazenados, mas falarei dos casos em que eu gosto de usar jsonb
em uma tabela:
- Quando eu preciso salvar dados auxilares de um registro que podem seguir um schema definido ou não e que eu não necessite realizar comsultas dentro deste campo, ou seja, são dados exclusivamente para visualização ou o processamento deles podem ser feitos no backend;
- Quando eu preciso fazer uma tabela de histórico dos dados, exemplo:
Tabela_Referencia | Registro_PK | Registro_Antigo | Novo_Registro | Acao | Data_Acao |
---|---|---|---|---|---|
usuario | 1 | {"nome": "Fulano"} | {"nome": "Fulano de Tal"} | update | 2023-07-02 |
No exemplo acima, temos uma tabela que mostra o histórico dos dados de todas as tabelas para fins de auditoria, o registro exemplificado contém uma atualização do campo nome do registro 1 da tabela de usuários.
Como eu mostro esses dados? Crio uma view materializada devidamente indexada com atualização periódica concurrently
e faço a query na própria view ou obrigo o usuário administrador à escolher um período, tabela de referência e um pk (mas é apresentado de forma amigável no front).
- Nunca armazene binário no Banco de Dados, nem que seja imagens de 30 kb, a boa prática é você salvar o arquivo em uma pasta no servidor ou utilizar um serviço de cloud storage, registrar o caminho relativo do arquivo (sem vazar essa informação para o front) ou a URL completa quando armazenado em um serviço externo.
Estes são os casos de uso que eu tenho experiência e consegui lembrar agora.