SlideShare uma empresa Scribd logo
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.
Introdução ao NoSQL e modelagem de dados com MongoDB
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

What Is DevOps?
What Is DevOps?What Is DevOps?
What Is DevOps?
Soumya De
 
DevOps
DevOpsDevOps
Red Hat OpenShift V3 Overview and Deep Dive
Red Hat OpenShift V3 Overview and Deep DiveRed Hat OpenShift V3 Overview and Deep Dive
Red Hat OpenShift V3 Overview and Deep Dive
Greg Hoelzer
 
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
Kubernetes: An Introduction to the Open Source Container Orchestration PlatformKubernetes: An Introduction to the Open Source Container Orchestration Platform
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
Michael O'Sullivan
 
Introduction to OpenStack Storage
Introduction to OpenStack StorageIntroduction to OpenStack Storage
Introduction to OpenStack Storage
NetApp
 
Microservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and JenkinsMicroservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and Jenkins
Red Hat Developers
 
Why Docker
Why DockerWhy Docker
Why Docker
dotCloud
 
Introduction to devops
Introduction to devopsIntroduction to devops
Introduction to devops
UtpalenduChakrobortt1
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
Imesh Gunaratne
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
Ravindu Fernando
 
Monitoring at the Speed of DevOps
Monitoring at the Speed of DevOpsMonitoring at the Speed of DevOps
Monitoring at the Speed of DevOps
DevOps.com
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Frederik Mogensen
 
Microsoft SQL Server Database Administration.pptx
Microsoft SQL Server Database Administration.pptxMicrosoft SQL Server Database Administration.pptx
Microsoft SQL Server Database Administration.pptx
samtakke1
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
Paris Apostolopoulos
 
docker installation and basics
docker installation and basicsdocker installation and basics
docker installation and basics
Walid Ashraf
 
The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS
NATS
 
Getting Real Overview(한글)
Getting Real Overview(한글)Getting Real Overview(한글)
Getting Real Overview(한글)
parkchanwook
 
Migrating Monitoring to Observability – How to Transform DevOps from being Re...
Migrating Monitoring to Observability – How to Transform DevOps from being Re...Migrating Monitoring to Observability – How to Transform DevOps from being Re...
Migrating Monitoring to Observability – How to Transform DevOps from being Re...
Liz Masters Lovelace
 
Sql
SqlSql
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
LeClubQualiteLogicielle
 

Mais procurados (20)

What Is DevOps?
What Is DevOps?What Is DevOps?
What Is DevOps?
 
DevOps
DevOpsDevOps
DevOps
 
Red Hat OpenShift V3 Overview and Deep Dive
Red Hat OpenShift V3 Overview and Deep DiveRed Hat OpenShift V3 Overview and Deep Dive
Red Hat OpenShift V3 Overview and Deep Dive
 
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
Kubernetes: An Introduction to the Open Source Container Orchestration PlatformKubernetes: An Introduction to the Open Source Container Orchestration Platform
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
 
Introduction to OpenStack Storage
Introduction to OpenStack StorageIntroduction to OpenStack Storage
Introduction to OpenStack Storage
 
Microservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and JenkinsMicroservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and Jenkins
 
Why Docker
Why DockerWhy Docker
Why Docker
 
Introduction to devops
Introduction to devopsIntroduction to devops
Introduction to devops
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Monitoring at the Speed of DevOps
Monitoring at the Speed of DevOpsMonitoring at the Speed of DevOps
Monitoring at the Speed of DevOps
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Microsoft SQL Server Database Administration.pptx
Microsoft SQL Server Database Administration.pptxMicrosoft SQL Server Database Administration.pptx
Microsoft SQL Server Database Administration.pptx
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
docker installation and basics
docker installation and basicsdocker installation and basics
docker installation and basics
 
The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS
 
Getting Real Overview(한글)
Getting Real Overview(한글)Getting Real Overview(한글)
Getting Real Overview(한글)
 
Migrating Monitoring to Observability – How to Transform DevOps from being Re...
Migrating Monitoring to Observability – How to Transform DevOps from being Re...Migrating Monitoring to Observability – How to Transform DevOps from being Re...
Migrating Monitoring to Observability – How to Transform DevOps from being Re...
 
Sql
SqlSql
Sql
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
 

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

Sem limites com NoSQL
Sem limites com NoSQLSem limites com NoSQL
Sem limites com NoSQL
Jhonathan de Souza Soares
 
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
Jhonathan 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âmica
FATEC São José dos Campos
 
Mongo
MongoMongo
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
Christiano 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-uaijugcloudday2014
Rogerio 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 15
Christiano Anderson
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEAN
Osmar 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 MongoDB
Paulo Bischof
 
Mongo db
Mongo dbMongo db
Mongo db
Edmilson Neto
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
Gabriel Alves Scavassa
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
Alex Martins
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
Luiz Guilherme Sucupira
 
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
Renato 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_mongodb
Fá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 Javascript
Denis Vieira
 
MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJava
Fernando 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

Link Prediction with Neo4j
Link Prediction with Neo4jLink Prediction with Neo4j
Link Prediction with Neo4j
Jhonathan de Souza Soares
 
6 Principios arquitetura de dados moderna
6 Principios arquitetura de dados moderna6 Principios arquitetura de dados moderna
6 Principios arquitetura de dados moderna
Jhonathan de Souza Soares
 
Api todo list
Api todo listApi 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
Jhonathan 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 software
Jhonathan de Souza Soares
 
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
Jhonathan de Souza Soares
 
CosmosDB from zero2hero
CosmosDB from zero2heroCosmosDB from zero2hero
CosmosDB from zero2hero
Jhonathan de Souza Soares
 
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
Jhonathan de Souza Soares
 
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
Jhonathan de Souza Soares
 
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
Jhonathan 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 Neo4j
Jhonathan de Souza Soares
 
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
Jhonathan de Souza Soares
 
Neo4j + nodejs
Neo4j + nodejsNeo4j + 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
Jhonathan de Souza Soares
 
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
Jhonathan de Souza Soares
 
Introdução ao neo4j
Introdução ao neo4jIntrodução ao neo4j
Introdução ao neo4j
Jhonathan 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.
  • 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