Skip to content

Documento de Arquitetura do Banco de Dados

Caio Oliveira de Moraes edited this page Dec 13, 2017 · 4 revisions

Arquitetura do Banco de Dados

Para o funcionamento correto da aplicação o dados requisitados da API dos Mapas Culturais passam para o Django que salva essas dados no MongoDB, eles são passadas para o metabase para que possa ser criados os gráficos e dados da plataforma, essas informações são salvas no Postgres.

Figura 1 - Diagrama de camadas

Com a figura 1 é possível ver o fluxo de trabalho.

Models

As models são os locais onde é feito a modelagem e a persistência dos dados. Como o mongoDB não possui esquemas então é possível fazer a remodelagem dos dados quando necessário, por isso usamos a mongoenine que faz com que classes das models se tornem uma coleção.

Views

A camada views é responsável por popular o banco, para que as informações da página estejam sempre atualizadas é necessário que o celery faça periodicamente a chamada da função que popula o banco com os novos registros e atualizações da plataforma, assim o site se mantém atualizado.

Django ORM

ORM (object relational mapping) é uma técnica utilizada para automatizar a transferência de dados, transformando classes em tabelas e os objetos em uma tupla do banco de dados. As vantagens do ORM está no poder de abstração, pois permite o programador desenvolver em python e não se preocupar com as instruções SQL.

Mongoengine

O mongo engine é uma Object-Document Mapper, é como uma ORM porém é usada para banco de dados orientados a documentos, o mongoDB não precisa de esquemas, ou seja você pode adicionar ou remover campos sem que o banco de erros. Do mesmo jeito de uma ORM o mongoengine cria "documentos" de acordo com a classe e esses dados são salvos em coleções. A grande facilidade de usar uma ORM é que não é passado nenhum esquema para o banco, será tudo modelado no nível de aplicação.

Mongo DB

Mongo DB é um banco de dados orientado a documentos, isso quer dizer que o banco não usa esquemas, e sim coleções e documentos. Um documento guarda todas as informações de um objeto em uma única instancia, em vez de separar em tabelas como bancos relacionais, outra diferença do mongo e outros bancos não relacionais é que ele guarda os dados em um formato de json, chave e valor.

Clone this wiki locally