Please enable JavaScript.
Coggle requires JavaScript to display documents.
Java OO 7/7 - Projeto (MongoDB) - Coggle Diagram
Java OO 7/7 - Projeto (MongoDB)
HTTP: protocolo de transporte
REST é um conceito arquitetural muito complexo, mas que no fim visa tirar vantagem de todas as características do protocolo HTTP
O JSON é somente uma forma de representar informações que precisam ser transportadas de um lado para outro
APIs REST e APIs HTTP são produtos da API RESTful
APIs REST são compatíveis com mais recursos do que as APIs HTTP
APIs HTTP são projetadas com recursos mínimos para que possam ser oferecidas por um preço mais baixo
Qual é a diferença entre REST e SOAP?
SOAP é independente e pode funcionar com qualquer protocolo de transporte
REST funciona somente com HTTPS
SOAP oferece suporte somente para a troca de dados XML
REST oferece suporte XML, JSON, texto simples e HTML
REST: Representational State Transfer
Uma REST indica um conjunto de restrições que devem ser seguidas no desenvolvimento de uma aplicação na internet
O que é SOAP e WSDL
SOAP é a estrutura de empacotamento padrão para transportar documentos XML através de protocolos da Internet (HTTP, SMTP, FTP)
WSDL é a tecnologia que padroniza a descrição da interface de um Web Service
Quais são os tipos de API Rest?
Privadas: como o próprio nome sugere, as APIs privadas são restritas e utilizadas apenas entre as aplicações de uma empresa, ou seja, de forma local;
Parceiras: também restritivas. ...
Públicas: podem ser utilizadas livremente.
Por que usar SOAP?
Uma das vantagens do SOAP é o uso de um método de transporte "genérico". Enquanto que o REST faz uso de HTTP/HTTPS, o SOAP pode usar qualquer meio de transporte existente para enviar sua requisição, desde SMTP até mesmo JMS (Java Messaging Service)
Para que serve o swagger?
é, basicamente, um conjunto de ferramentas que nos ajuda a fazer o design, ou seja, fazer a modelagem, a documentar e até gerar código para desenvolvimento de APIs.
O que é GraphQL e para que serve?
é uma linguagem de consulta e ambiente de execução voltada a servidores para as interfaces de programação de aplicações (APIs) cuja prioridade é fornecer exatamente os dados que os clientes solicitam e nada além.
No mongodb a tabela é chamada de coleção. Coleção de agregados
NoSQL resolve alguns problemas do modelo ER x OO
Incompatibilidade de Impedância - baixo desempenho - Martin Fowler
Soluções de ORM diminuiram o problema acima
BD relacional. Transações e Junções degradam a performace
Transações não tem jeito. Mas junções são melhoradas no BD orientado a agregados- do DDD
Grande volume de dados e acessos
Solução vertical: compro um megacomputador
Solução horizontal: compro vários computadores menores e coloco em cluster. Virtualizo.
BD Relacional e cluster não são tão compatíveis. Ficam caros
NoSQL
Primeiras influências: Google (BigTable) e Amazon (Dynamo)
Principais características
Não utilizam modelo relacional
Tem uma boa execução em clusters
Código aberto
Século XXI
Não tem esquema
Duas classes principais de bancos de dados NoSQL
Banco de dado orientado a agregados
Modelo chave-valor (Riak, Redis
Modelo de documentos (MongoDB, CouchDB)
Modelo família de colunas (Cassandra, Apache HBase)
Banco de dados de grafos
(Neo4j)
Agregado
: é um conjunto de objetos relacionados que desejamos tratar como uma
unidade
A grande questão: conseguimos acessar um conjunto de dados complexos em um único acesso
projetista: como modelar de forma a acessar eficientemente os agregados
Ex: pedido condensado em um agregado que poderá ser acessado frequentemente em uma única vez
NoSQL
Dados frequentemente acessados juntos são mais importantes que a normalização
Decisão: colocar os objetos aninhados ou apenas uma referência que estará em outro lugar
O agregado: é uma unidade natural de replicação e fragmentação
Agregado: todos os dados de um agregado estão armazenados JUNTOS e no MESMO NODO do cluster
Nota: não suportam todo suporte ACID como bancos relacionais, mas garantem atomicidade no agregado.
Rest
resources
Nome para os recursos Rest
O termo em implementação é controlador. Vão disponibilizar os recursos Rest
Checklist para criar as entidades
Atributos básicos
Associações (inicie as coleções)
Construtores (não inclua coleções no construtor com parâmetros)
Getters e setters
hashCode e equals (implementação padrão: somente id)
Serializable (padrão: 1L)
pom.xml - arquivo de dependências do Maven
incluir a dependência do MongoDB
Em application.properties, incluir os dados de conexão com a base de dados
spring.data.mongodb.uri=mongodb://localhost:27017/workshop_mongo
NoSQL: decisões de design
Usar um post aninhado. Implica desnormalização com repetição de dados. Acesso com muita frequência neste modo
Usar lista de referência. Próprio para grandes volumes de dados
Quando aninhado, o agregado Post (ex.) tem um campo cujo tipo é User, ou seja, objeto. Ao inserir um post o user com seus dados é copiado no retorno ao GET do Post
Query methods - Spring x MongoDB
Queries via http precisam ter o argumento, o valor de pesquisa encodado
encodeURIComponent("bom dia") resulta em 'bom%20dia'
Queries MongoDB