+ All Categories
Home > Technology > Introdução no sql mongodb java

Introdução no sql mongodb java

Date post: 22-Jan-2018
Category:
Upload: fabiano-modos
View: 247 times
Download: 4 times
Share this document with a friend
41
Introdução ao Mundo NoSQL com MongoDB e Java Fabiano Guizellini Modos Arquiteto de Software: HBSIS Twitter: @fmodos Github.com/fmodos
Transcript
Page 1: Introdução no sql mongodb java

Introdução ao Mundo NoSQL com MongoDB e Java

Fabiano Guizellini ModosArquiteto de Software: HBSIS

Twitter: @fmodos

Github.com/fmodos

Page 2: Introdução no sql mongodb java

Agenda

• NOSQL vs SQL• Key-Value• Column• Graph• Document• CAP Theorem• MongoDB Java Driver• Spring Data MongoDB• Estudo de Caso

Page 3: Introdução no sql mongodb java

SQL NOSQL

Page 4: Introdução no sql mongodb java

“Different databases are designed to solve different problems. Using a single database engine for all of the requirements usually leads to non-performant solutions; storing transactional data, caching session information, traversing graph of customers and the products their friends bought are essentially different problems.”― Pramod J. Sadalage, NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence

“Complex applications combine different types of problems, so picking the right language for each job may be more productive than trying to fit all aspects into a single language.” ― Pramod J. Sadalage, NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence

Page 5: Introdução no sql mongodb java

SQL: Estrutura e tipo de dados são fixos

NOSQL: Estrutura dinâmica e varios modelos de dados.

Page 6: Introdução no sql mongodb java

NoSQL - Modelo de Dados

• Key-Value – chave-valor (Redis)

• Column – orientado a colunas (Cassandra)

• Graph – oriento grafos (Neo4j)

• Document – orientado a JSON (MongoDB)

Page 7: Introdução no sql mongodb java

Key-Value (Chave Valor)

Page 8: Introdução no sql mongodb java

Key-Value

• Quando Usar?-Armazenar sessão do usuário-Informações de carrinho compra

• Quando não usar?-Necessita buscar via query-Operações de relacionamento entre dados

Page 9: Introdução no sql mongodb java

Column

Page 10: Introdução no sql mongodb java

Column

• Quando Usar?-Sistemas gerenciamento de conteúdo,-Dados de grande massa, exemplo log

• Quando não usar?-Sistema que precisa fazer query com join-Sistema no inicio do desenvolvimento

Page 11: Introdução no sql mongodb java

Graph

Page 12: Introdução no sql mongodb java

Graph

• Quando Usar?-Rede social-Navegação em grafos

Page 13: Introdução no sql mongodb java

Document

JSON ->

Page 14: Introdução no sql mongodb java

Document

Page 15: Introdução no sql mongodb java

Document

Page 16: Introdução no sql mongodb java

Document

• Quando Usar?-Armazenamento de analytics-Ecommerce-Blogging

• Quando não usar?-Transações complexas-Operações que agrupam varias estruturas

Page 17: Introdução no sql mongodb java
Page 18: Introdução no sql mongodb java

CAP Theorem

Page 19: Introdução no sql mongodb java
Page 20: Introdução no sql mongodb java

Java MongoDB Driver

• MongoClient -> Connection

• DB -> Base de dados

• DBCollection -> Tabela

• DBObject -> Registro

• DBCursor -> ResultSet

Page 21: Introdução no sql mongodb java
Page 22: Introdução no sql mongodb java

Spring Data

Page 23: Introdução no sql mongodb java

Spring Data

• MongoDB

• Neo4j

• Cassandra

• JDBC Extensions

• Redis

• Etc…

“This is an umbrella project which contains many subprojects that are specific to a given database”

Page 24: Introdução no sql mongodb java

Spring Data MongoDB

• Spring configuration support using Java based @Configuration classes or an XML namespace

• MongoTemplate helper class

• Java based Query, Criteria, and Update DSLs

• GeoSpatial integration

• Etc…

“The Spring Data MongoDB project provides integration with the MongoDB document database. ”

Page 25: Introdução no sql mongodb java

Configuração<dependency>

<groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId><version>1.6.0.RELEASE</version>

</dependency>

MongoTemplate template = new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(new ServerAddress("localhost")), "database"))

Depência Maven ->

Instanciando um MongoTemplate:

Page 26: Introdução no sql mongodb java

MongoTemplate operations • save - salva o objeto

• insert - insere o objeto, caso não exista

• insertAll - insere uma lista de objetos

• updateFirst - atualiza o primeiro registro de umaquery

• updateMulti - atualiza todos registros de umaquery

Page 27: Introdução no sql mongodb java

MongoTemplate operations

• findOne – retorna um objeto da query

• findById – retorna o objeto desse id

• Find – retorna todos objetos da query

• findAndRemove – remove e retorna o primeiro objeto da query

Page 28: Introdução no sql mongodb java

MongoTemplate operations

• upsert - atualiza ou insere o registro da query

• findAndModify – encontra e altera o registroda query

• Remove – remove o objeto

Page 29: Introdução no sql mongodb java

Full Text Query

• Busca por texto em mais de uma propriedade de um documento

• @TextIndexed(weight=1)

• Query q = TextQuery.searching(new TextCriteria().matching(“java"));

Page 30: Introdução no sql mongodb java

GeoSpatial Query

• withinCenter - na area de um Circle

• withinCenterSphere - na are de uma Circle

• withinBox – na area de uma Box

• near – perto de um Point

• nearSphere - perto de um Circle

• maxDistance – com a distancia maxima de

Page 31: Introdução no sql mongodb java

Exemplos - GeoSpatial

Box box = new Box(new Point(-73.99756, 40.73083), new Point(-73.988135, 40.741404));List<Player> venues =

template.find(new Query(Criteria.where("location").withinBox(box)), Player.class);

private double[] location;

1. Buscar por uma area

Page 32: Introdução no sql mongodb java

Exemplos - GeoSpatial

Point location = new Point(-73.99171, 40.738868);NearQuery query = NearQuery.near(location).maxDistance(new Distance(10, Metrics.MILES));

GeoResults<GuriaSolteira> = operations.geoNear(query, GuriaSolteira.class);

2. Busca por uma distancia maxima

Page 33: Introdução no sql mongodb java

SpringData Repositories

• Abstração para reduzir a quantidade de código de acesso a dados

Page 34: Introdução no sql mongodb java

Estudo de Caso

• Desenvolver uma aplicação que permita cadastrar pratos de comida. Cada prato deve conter um nome, uma descrição e os ingredientes. Deve permitir também a inserção de comentários para cada prato.

Page 35: Introdução no sql mongodb java

Diagrama de Classe

Page 36: Introdução no sql mongodb java

Modelagem Relacional

Page 37: Introdução no sql mongodb java

Modelagem NoSQL (Document)

Page 38: Introdução no sql mongodb java
Page 39: Introdução no sql mongodb java

Stack Demo

Código Fonte: https://github.com/fmodos/blog-angularjs-mongodb

Page 40: Introdução no sql mongodb java
Page 41: Introdução no sql mongodb java

Recommended