SlideShare uma empresa Scribd logo
1 de 30
Sem limites com
NoSQL
Modelagem com MongoDB
• Jhonathan de Souza Soares
• Bacharel Ciência da Computação - UNIFENAS
• Pós Graduado em Arquitetura de Software - IGTI
• MBA em Gestão de TI - UNIS
• Most Valuable Professional (MVP) - Microsoft
• Top 50 World Certified - Neo4j
• Evangelist e Ambassador - MongoDB
• Scrum Master PSM – Scrum.org
• Professor na FIAP e Bandtec
• Lead Architect na Lumini IT Solutions
About me
Surgimento NOSQL
• Primeiramente introduzido em 1998 por Carlo Strozzi,
como NoREL
• Conceito BigTable – 2006 Google Inc
• NÃO ACID ( Atomicidade, Consistência, Isolamento e
Durabilidade )
• SIM BASE (Basic Availability , Soft-state , Eventual
consistency )
BASE - Basically Available, Soft state, Eventual consistency
• Basic Availability
• Caracteriza-se por ser basicamente disponível, ou
seja, o sistema parece estar funcionando o tempo
todo;
• Soft-state
• Em estado leve, o sistema não precisa ser
consistente o tempo todo nem possuir esquema
rígido
• Eventual consistency
• Eventualmente consistente, o sistema torna-se
consistente no momento devido, priorizando a
disponibilidade do que a consistência.
Fundamentos NoSQL
• BIG DATA – Grande volume de dados
• BIG DATA – Velocidade para análise de dados
• BIG DATA – Capturar, armazenar e analisar dados não
estruturados
• Flexibilidade no desenvolvimento
• “Nova” Arquitetura em Nuvem
• Internet of things – tudo conectado
• Demandas por escalabilidade é cada vez maior
Fundamentos NoSQL
90% das empresas top 100 que mais faturam no mundo
utilizam algum NoSQL!
Fundamentos NoSQL
NoSQL
Não Relacional, distribuído,
alta performance para e alta
escalabilidade;
SQL
Relacional, processamento
de transações, concorrência,
consistência, baixíssima
latência;
Dificuldades para escalar; Não serve para tudo;
Fundamentos NoSQL
NoSQL não substitui SQL, e sim trabalha em conjunto -
POLIGLOTA
Teorema de CAP
MongoDB – quem é?
• Origem do nome: Humongous – Gigantesco
MongoDB – quem é?
• Escrito em C++
• Document Model / Multi-model
• Alta disponibilidade
• Alta escalabilidade
• Json Like
• Não possui schema definido
• Não é relacional
MongoDB – quem é?
• Criado pelo 10gen em 2007 e lançado em 2009
• Criado para dar suporte à restful API’s (que era algo
novo na época)
• Mantido pela MongoDB como Open Source
• Altamente escalável e disponível
• Projetado para velocidade de leitura
• Curva de aprendizagem pequena
• Altamente abrangente em inúmeras aplicações
MongoDB – quem é?
MongoDB – quando usar?
Dados para armazenar
• 60 ~ 80% das aplicações
• Sistemas via Restfull API
• Aplicações com dados não estruturados, semi-
estruturados e polimórficos
• Integração ou suporte à outros bancos
• Alta leitura
MongoDB – quando usar?
Os documentos BSON (JSON binário) do
Mongo são schemaless e aceitam quase
qualquer coisa que você quiser armazenar.
MongoDB – quando não usar?
Dados para não armazenar
• Relatórios
• Sistemas de busca complexos
• Alta conectividade
• ACID
MongoDB – quem usa?
• Google
• Twitter
• Adobe
• Ebay
• Gap
• SAP
• Forbes
• Expedia
• EA sports
• PES e Crysis utilizam MongoDB
MongoDB – principais características
MongoDB – principais características
MongoDB – modelagem
MongoDB – modelagem
Conseguimos separar em 3 contextos diferentes nosso
sistema:
• Produto
• Pedido
• Usuário
MongoDB – modelagem - Produto
products: [{
_id: '21321321',
name: 'MongoDB Product',
type: 'ebook',
price: 10.00,
description: 'Produto da eloja da mongodb',
tags: ['mongodb', 'nosql', 'db'],
stock: 2000
}]
MongoDB – modelagem - Pedido
orders: [{
_id: '234423432',
user: users._id,
type: 'ebook',
products: [{
product_id: products._id,
quantity: 1
}],
date_created: '01-01-2017'
}]
MongoDB – modelagem - Usuário
users: [{
_id: ‘768675’,
name: ‘Jhonathan’,
email: ‘jhonathan@email.com’,
address: [{
street: ‘Rua X’,
number: 1
}],
password: ‘XYZ'
}]
MongoDB – Final users: [{
_id: ‘768675’,
name: ‘Jhonathan’,
email: ‘jhonathan@email.com’,
address: [{
street: ‘Rua X’,
number: 1
}],
password: ‘XYZ’
}, orders: [{
products: [{
product_id: products._id,
quantity: 1,
tags: [“x”,”y”]
}],
date_created: '01-01-2017'}]]
Não confie em ninguém, nem em você mesmo!
Benchmarks are not trustful
MongoDB – não siga a modinha
Our database is too
slow and is not big
enough!
We need NoSql!
MongoDB – KISS
KISS
• Avoid complexity
• Product First
• MVP
• Baby Step
MongoDB – Dúvidas?
OBRIGADO!
http://codigosimples.net

Mais conteúdo relacionado

Mais procurados

NoSQL Databases
NoSQL DatabasesNoSQL Databases
NoSQL DatabasesBADR
 
Amazon Redshift Tutorial | AWS Tutorial for Beginners | AWS Certification Tra...
Amazon Redshift Tutorial | AWS Tutorial for Beginners | AWS Certification Tra...Amazon Redshift Tutorial | AWS Tutorial for Beginners | AWS Certification Tra...
Amazon Redshift Tutorial | AWS Tutorial for Beginners | AWS Certification Tra...Edureka!
 
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안Amazon Web Services Korea
 
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDDDomain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDDDaniel Baptista Dias
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...Amazon Web Services Korea
 
Spark streaming , Spark SQL
Spark streaming , Spark SQLSpark streaming , Spark SQL
Spark streaming , Spark SQLYousun Jeong
 
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019Amazon Web Services Korea
 
SEO for Ecommerce - Adam Audette
SEO for Ecommerce - Adam AudetteSEO for Ecommerce - Adam Audette
SEO for Ecommerce - Adam AudetteAdam Audette
 
Amazon Personalize 소개 (+ 실습 구성)::김영진, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon Personalize 소개 (+ 실습 구성)::김영진, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나Amazon Personalize 소개 (+ 실습 구성)::김영진, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon Personalize 소개 (+ 실습 구성)::김영진, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나Amazon Web Services Korea
 
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB DayGetting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB DayAmazon Web Services Korea
 
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...Amazon Web Services Korea
 
Elasticsearch From the Bottom Up
Elasticsearch From the Bottom UpElasticsearch From the Bottom Up
Elasticsearch From the Bottom Upfoundsearch
 
DAT302_Deep Dive on Amazon Relational Database Service (RDS)
DAT302_Deep Dive on Amazon Relational Database Service (RDS)DAT302_Deep Dive on Amazon Relational Database Service (RDS)
DAT302_Deep Dive on Amazon Relational Database Service (RDS)Amazon Web Services
 
Intro to elasticsearch
Intro to elasticsearchIntro to elasticsearch
Intro to elasticsearchJoey Wen
 
The easiest consistent hashing
The easiest consistent hashingThe easiest consistent hashing
The easiest consistent hashingDaeMyung Kang
 

Mais procurados (20)

NoSQL Databases
NoSQL DatabasesNoSQL Databases
NoSQL Databases
 
Amazon Redshift Tutorial | AWS Tutorial for Beginners | AWS Certification Tra...
Amazon Redshift Tutorial | AWS Tutorial for Beginners | AWS Certification Tra...Amazon Redshift Tutorial | AWS Tutorial for Beginners | AWS Certification Tra...
Amazon Redshift Tutorial | AWS Tutorial for Beginners | AWS Certification Tra...
 
Introducing DynamoDB
Introducing DynamoDBIntroducing DynamoDB
Introducing DynamoDB
 
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
 
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDDDomain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
 
Mongo DB Presentation
Mongo DB PresentationMongo DB Presentation
Mongo DB Presentation
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
 
Spark streaming , Spark SQL
Spark streaming , Spark SQLSpark streaming , Spark SQL
Spark streaming , Spark SQL
 
AWS DynamoDB and Schema Design
AWS DynamoDB and Schema DesignAWS DynamoDB and Schema Design
AWS DynamoDB and Schema Design
 
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
 
SEO for Ecommerce - Adam Audette
SEO for Ecommerce - Adam AudetteSEO for Ecommerce - Adam Audette
SEO for Ecommerce - Adam Audette
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Amazon Personalize 소개 (+ 실습 구성)::김영진, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon Personalize 소개 (+ 실습 구성)::김영진, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나Amazon Personalize 소개 (+ 실습 구성)::김영진, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon Personalize 소개 (+ 실습 구성)::김영진, 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
 
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB DayGetting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
 
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
 
Elasticsearch From the Bottom Up
Elasticsearch From the Bottom UpElasticsearch From the Bottom Up
Elasticsearch From the Bottom Up
 
MongoDB
MongoDBMongoDB
MongoDB
 
DAT302_Deep Dive on Amazon Relational Database Service (RDS)
DAT302_Deep Dive on Amazon Relational Database Service (RDS)DAT302_Deep Dive on Amazon Relational Database Service (RDS)
DAT302_Deep Dive on Amazon Relational Database Service (RDS)
 
Intro to elasticsearch
Intro to elasticsearchIntro to elasticsearch
Intro to elasticsearch
 
The easiest consistent hashing
The easiest consistent hashingThe easiest consistent hashing
The easiest consistent hashing
 

Semelhante a Introdução ao NoSQL e modelagem de dados com MongoDB

Conhecendo o mongodb e clusterização de dados - ReplicaSet
Conhecendo o mongodb e clusterização de dados - ReplicaSetConhecendo o mongodb e clusterização de dados - ReplicaSet
Conhecendo o mongodb e clusterização de dados - ReplicaSetJhonathan de Souza Soares
 
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmicaPepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmicaFATEC São José dos Campos
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Fernando Rizzato
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Luiz Henrique Zambom Santana
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Rogerio Fontes
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Christiano Anderson
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANOsmar Petry
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBPaulo Bischof
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloNoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloRenato Groff
 
Introducao aos bancos_nao_relacionais_com_mongodb
Introducao aos bancos_nao_relacionais_com_mongodbIntroducao aos bancos_nao_relacionais_com_mongodb
Introducao aos bancos_nao_relacionais_com_mongodbFábio Theophilo
 
I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)wchevreuil
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJavaFernando Boaglio
 

Semelhante a Introdução ao NoSQL e modelagem de dados com MongoDB (20)

Sem limites com NoSQL
Sem limites com NoSQLSem limites com NoSQL
Sem limites com NoSQL
 
Conhecendo o mongodb e clusterização de dados - ReplicaSet
Conhecendo o mongodb e clusterização de dados - ReplicaSetConhecendo o mongodb e clusterização de dados - ReplicaSet
Conhecendo o mongodb e clusterização de dados - ReplicaSet
 
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmicaPepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
 
Mongo
MongoMongo
Mongo
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEAN
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDB
 
Mongo db
Mongo dbMongo db
Mongo db
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloNoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
 
Introducao aos bancos_nao_relacionais_com_mongodb
Introducao aos bancos_nao_relacionais_com_mongodbIntroducao aos bancos_nao_relacionais_com_mongodb
Introducao aos bancos_nao_relacionais_com_mongodb
 
I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJava
 

Mais de Jhonathan de Souza Soares

Azure Service Fabric - Orquestrando aplicações .Net
Azure Service Fabric - Orquestrando aplicações .NetAzure Service Fabric - Orquestrando aplicações .Net
Azure Service Fabric - Orquestrando aplicações .NetJhonathan de Souza Soares
 
Azure CosmosDB para desenvolvedores de software
Azure CosmosDB para desenvolvedores de softwareAzure CosmosDB para desenvolvedores de software
Azure CosmosDB para desenvolvedores de softwareJhonathan de Souza Soares
 
Análise de faces e emoções com Serviços Cognitivos de Visão da Microsoft
Análise de faces e emoções com Serviços Cognitivos de Visão da Microsoft Análise de faces e emoções com Serviços Cognitivos de Visão da Microsoft
Análise de faces e emoções com Serviços Cognitivos de Visão da Microsoft Jhonathan de Souza Soares
 
Criando sistemas de recomendação com Neo4j
Criando sistemas de recomendação com Neo4jCriando sistemas de recomendação com Neo4j
Criando sistemas de recomendação com Neo4jJhonathan de Souza Soares
 
Criando sistemas de recomendação com neo4j
Criando sistemas de recomendação com  neo4jCriando sistemas de recomendação com  neo4j
Criando sistemas de recomendação com neo4jJhonathan de Souza Soares
 

Mais de Jhonathan de Souza Soares (17)

Link Prediction with Neo4j
Link Prediction with Neo4jLink Prediction with Neo4j
Link Prediction with Neo4j
 
6 Principios arquitetura de dados moderna
6 Principios arquitetura de dados moderna6 Principios arquitetura de dados moderna
6 Principios arquitetura de dados moderna
 
Api todo list
Api todo listApi todo list
Api todo list
 
Azure Service Fabric - Orquestrando aplicações .Net
Azure Service Fabric - Orquestrando aplicações .NetAzure Service Fabric - Orquestrando aplicações .Net
Azure Service Fabric - Orquestrando aplicações .Net
 
Azure CosmosDB para desenvolvedores de software
Azure CosmosDB para desenvolvedores de softwareAzure CosmosDB para desenvolvedores de software
Azure CosmosDB para desenvolvedores de software
 
Graph of Thrones - Neo4j + Game of Thrones
Graph of Thrones - Neo4j + Game of Thrones Graph of Thrones - Neo4j + Game of Thrones
Graph of Thrones - Neo4j + Game of Thrones
 
CosmosDB from zero2hero
CosmosDB from zero2heroCosmosDB from zero2hero
CosmosDB from zero2hero
 
NoSQL CosmosDB e IOT na era Serveless
NoSQL CosmosDB e IOT na era ServelessNoSQL CosmosDB e IOT na era Serveless
NoSQL CosmosDB e IOT na era Serveless
 
Introdução ao neo4j com c# e asp.net core
Introdução ao neo4j com c# e asp.net coreIntrodução ao neo4j com c# e asp.net core
Introdução ao neo4j com c# e asp.net core
 
NoSQL Multi-Model - Conheça o CosmosDB
NoSQL Multi-Model - Conheça o CosmosDB NoSQL Multi-Model - Conheça o CosmosDB
NoSQL Multi-Model - Conheça o CosmosDB
 
Análise de faces e emoções com Serviços Cognitivos de Visão da Microsoft
Análise de faces e emoções com Serviços Cognitivos de Visão da Microsoft Análise de faces e emoções com Serviços Cognitivos de Visão da Microsoft
Análise de faces e emoções com Serviços Cognitivos de Visão da Microsoft
 
Criando sistemas de recomendação com Neo4j
Criando sistemas de recomendação com Neo4jCriando sistemas de recomendação com Neo4j
Criando sistemas de recomendação com Neo4j
 
Graph of Thrones - Neo4j + Game of Thrones
Graph of Thrones - Neo4j + Game of ThronesGraph of Thrones - Neo4j + Game of Thrones
Graph of Thrones - Neo4j + Game of Thrones
 
Neo4j + nodejs
Neo4j + nodejsNeo4j + nodejs
Neo4j + nodejs
 
Criando sistemas de recomendação com neo4j
Criando sistemas de recomendação com  neo4jCriando sistemas de recomendação com  neo4j
Criando sistemas de recomendação com neo4j
 
Migrando dados do SQL para Neo4j - TDC
Migrando dados do SQL para Neo4j  - TDCMigrando dados do SQL para Neo4j  - TDC
Migrando dados do SQL para Neo4j - TDC
 
Introdução ao neo4j
Introdução ao neo4jIntrodução ao neo4j
Introdução ao neo4j
 

Introdução ao NoSQL e modelagem de dados com MongoDB

  • 2. • Jhonathan de Souza Soares • Bacharel Ciência da Computação - UNIFENAS • Pós Graduado em Arquitetura de Software - IGTI • MBA em Gestão de TI - UNIS • Most Valuable Professional (MVP) - Microsoft • Top 50 World Certified - Neo4j • Evangelist e Ambassador - MongoDB • Scrum Master PSM – Scrum.org • Professor na FIAP e Bandtec • Lead Architect na Lumini IT Solutions About me
  • 3. Surgimento NOSQL • Primeiramente introduzido em 1998 por Carlo Strozzi, como NoREL • Conceito BigTable – 2006 Google Inc • NÃO ACID ( Atomicidade, Consistência, Isolamento e Durabilidade ) • SIM BASE (Basic Availability , Soft-state , Eventual consistency )
  • 4. BASE - Basically Available, Soft state, Eventual consistency • Basic Availability • Caracteriza-se por ser basicamente disponível, ou seja, o sistema parece estar funcionando o tempo todo; • Soft-state • Em estado leve, o sistema não precisa ser consistente o tempo todo nem possuir esquema rígido • Eventual consistency • Eventualmente consistente, o sistema torna-se consistente no momento devido, priorizando a disponibilidade do que a consistência.
  • 5.
  • 6. Fundamentos NoSQL • BIG DATA – Grande volume de dados • BIG DATA – Velocidade para análise de dados • BIG DATA – Capturar, armazenar e analisar dados não estruturados • Flexibilidade no desenvolvimento • “Nova” Arquitetura em Nuvem • Internet of things – tudo conectado • Demandas por escalabilidade é cada vez maior
  • 7. Fundamentos NoSQL 90% das empresas top 100 que mais faturam no mundo utilizam algum NoSQL!
  • 8. Fundamentos NoSQL NoSQL Não Relacional, distribuído, alta performance para e alta escalabilidade; SQL Relacional, processamento de transações, concorrência, consistência, baixíssima latência; Dificuldades para escalar; Não serve para tudo;
  • 9. Fundamentos NoSQL NoSQL não substitui SQL, e sim trabalha em conjunto - POLIGLOTA
  • 11. MongoDB – quem é? • Origem do nome: Humongous – Gigantesco
  • 12. MongoDB – quem é? • Escrito em C++ • Document Model / Multi-model • Alta disponibilidade • Alta escalabilidade • Json Like • Não possui schema definido • Não é relacional
  • 13. MongoDB – quem é? • Criado pelo 10gen em 2007 e lançado em 2009 • Criado para dar suporte à restful API’s (que era algo novo na época) • Mantido pela MongoDB como Open Source • Altamente escalável e disponível • Projetado para velocidade de leitura • Curva de aprendizagem pequena • Altamente abrangente em inúmeras aplicações
  • 15. MongoDB – quando usar? Dados para armazenar • 60 ~ 80% das aplicações • Sistemas via Restfull API • Aplicações com dados não estruturados, semi- estruturados e polimórficos • Integração ou suporte à outros bancos • Alta leitura
  • 16. MongoDB – quando usar? Os documentos BSON (JSON binário) do Mongo são schemaless e aceitam quase qualquer coisa que você quiser armazenar.
  • 17. MongoDB – quando não usar? Dados para não armazenar • Relatórios • Sistemas de busca complexos • Alta conectividade • ACID
  • 18. MongoDB – quem usa? • Google • Twitter • Adobe • Ebay • Gap • SAP • Forbes • Expedia • EA sports • PES e Crysis utilizam MongoDB
  • 19. MongoDB – principais características
  • 20. MongoDB – principais características
  • 22. MongoDB – modelagem Conseguimos separar em 3 contextos diferentes nosso sistema: • Produto • Pedido • Usuário
  • 23. MongoDB – modelagem - Produto products: [{ _id: '21321321', name: 'MongoDB Product', type: 'ebook', price: 10.00, description: 'Produto da eloja da mongodb', tags: ['mongodb', 'nosql', 'db'], stock: 2000 }]
  • 24. MongoDB – modelagem - Pedido orders: [{ _id: '234423432', user: users._id, type: 'ebook', products: [{ product_id: products._id, quantity: 1 }], date_created: '01-01-2017' }]
  • 25. MongoDB – modelagem - Usuário users: [{ _id: ‘768675’, name: ‘Jhonathan’, email: ‘jhonathan@email.com’, address: [{ street: ‘Rua X’, number: 1 }], password: ‘XYZ' }]
  • 26. MongoDB – Final users: [{ _id: ‘768675’, name: ‘Jhonathan’, email: ‘jhonathan@email.com’, address: [{ street: ‘Rua X’, number: 1 }], password: ‘XYZ’ }, orders: [{ products: [{ product_id: products._id, quantity: 1, tags: [“x”,”y”] }], date_created: '01-01-2017'}]]
  • 27. Não confie em ninguém, nem em você mesmo! Benchmarks are not trustful
  • 28. MongoDB – não siga a modinha Our database is too slow and is not big enough! We need NoSql!
  • 29. MongoDB – KISS KISS • Avoid complexity • Product First • MVP • Baby Step