... | ... | @@ -18,14 +18,48 @@ |
|
|
|
|
|
# Documentação do Banco de dados
|
|
|
|
|
|
## Banco de Dados PostgreSQL 12
|
|
|
Neste projeto, utilizamos um banco de dados misto, com a base em um banco de dados relacional - utilizando o PostgreSQL - para os dados de quase toda a aplicação, exceto pela lógica dos carrinhos de compras dos usuários, que foi feita de maneira não relacional - utilizando o Redis - para ter um melhor desempenho com esses registros de maior volatilidade.
|
|
|
|
|
|
## Banco de Dados Relacional PostgreSQL 12
|
|
|
|
|
|
Neste projeto, utilizamos o PostgreSQL 12 como nosso sistema de gerenciamento de banco de dados. O PostgreSQL é um sistema de banco de dados relacional de código aberto altamente confiável e poderoso, que oferece suporte a uma variedade de recursos avançados, como transações, indexação eficiente e consultas complexas.
|
|
|
|
|
|
### Modelo Conceitual
|
|
|
|
|
|
A modelagem conceitual foi feita utilizando a ferramenta Astah Professional:
|
|
|
|
|
|

|
|
|
|
|
|
### Modelo Lógico
|
|
|
|
|
|
A modelagem lógica foi feita utilizando a ferramenta online DrawSQL, por oferecer suporte às funcionalidades específicas do PostgreSQL:
|
|
|
|
|
|

|
|
|
|
|
|
### Funções de Acesso
|
|
|
|
|
|
Foram feitas Stored Procedures para limitar o acesso ao banco, de maneira que seja controlada. Foram feitas funções para todos os métodos necessários de inserção, remoção, atualização e visualização dos dados.
|
|
|
|
|
|
### PostgreSQL 12
|
|
|
|
|
|

|
|
|
|
|
|
- **Desempenho**: O PostgreSQL é conhecido por seu desempenho excepcional, especialmente quando se trata de consultas complexas e grandes conjuntos de dados.
|
|
|
- **Confiabilidade**: É altamente confiável, com suporte a transações ACID (Atomicidade, Consistência, Isolamento e Durabilidade) para garantir a integridade dos dados.
|
|
|
- **Escalabilidade**: O PostgreSQL é escalável e pode lidar com cargas de trabalho crescentes à medida que o projeto se expande. |
|
|
\ No newline at end of file |
|
|
- **Escalabilidade**: O PostgreSQL é escalável e pode lidar com cargas de trabalho crescentes à medida que o projeto se expande.
|
|
|
|
|
|
## Banco de Dados Não Relacional com Redis
|
|
|
|
|
|
Neste projeto, utilizamos o Redis como nosso sistema de gerenciamento de banco de dados não relacional. O Redis é um banco de dados em memória de código aberto, amplamente utilizado por sua alta performance, simplicidade e suporte a estruturas de dados avançadas, como listas, conjuntos, hashes e strings.
|
|
|
|
|
|
Utilizamos uma estrutura em JSON com a lista de itens do carrinho, contendo todas as informações necessárias em cada item, e indexado pelo ID do usuário, aproveitando que o carrinho e o usuário tem uma relação 1-1.
|
|
|
|
|
|
### Redis
|
|
|
|
|
|

|
|
|
|
|
|
- **Desempenho:** O Redis é extremamente rápido, oferecendo operações com latência muito baixa, uma vez que armazena todos os dados diretamente na memória. Isso o torna ideal para aplicações que exigem respostas em tempo real.
|
|
|
|
|
|
- **Confiabilidade:** Apesar de ser um banco em memória, o Redis oferece mecanismos robustos de persistência, como snapshots e log de operações (AOF), garantindo a durabilidade dos dados mesmo em caso de falhas.
|
|
|
|
|
|
- **Escalabilidade:** O Redis é altamente escalável, suportando replicação, particionamento de dados (sharding) e integração com soluções de alta disponibilidade (Redis Sentinel) e escalabilidade horizontal (Redis Cluster), permitindo seu uso em aplicações com grande volume de acessos simultâneos. |