MongoDB com Java
Fernando Boaglio
Agosto de 2018
@boaglio
Quem é Fernando Boaglio?
MongoDB - o que é ?
• Banco de dados baseado em documentos
• classifcado como NoSQL
• Sem schemas
• Sem transações *
• Escalável
MongoDB – um pouco de história
1995 - Dwight funda a double click
2005 - vende ( Google compra em 2007)
2007 - Dwight funda a 10gen junto com Eliot
2007 - monta uma solução para concorrer com a
nuvem do Google:
App Engine chamava ED (Elliot + Dwight)
Banco de dados chamava P
MongoDB – um pouco de história
2008 - mudaram de P para MongoDB (Humongous)
2009 - vira open source o/
2010 - MongoDB vira production ready
2017 - Release 3 - versão community + Enterprise
(auth, in-memory,compass) + MongoDB Atlas
(nuvem)
2018 – Release 4 – suporte a transações
MongoDB – quem usa ?
http://www.mongodb.com/who-uses-mongodb
MongoDB no mercado
https://db-engines.com/en/ranking
Comparando conceitos...
Baseado em tabelas Baseado em documentos
Tabela Collection
Coluna Campo
Linha / registro sem limite de
tamanho
Documento / registro limitados em
16Mb
RAC Replica Set
Particionamento Sharding
Raw Device GridFS
MongoDB - o que é um documento?
• Representação da informação em formato JSON
• Linguagem usada é JavaScript
Exemplo NoSQL vs relacional
NOVO SISTEMA: JUGs do Brasil por região
Fonte: http://www.dfjug.org/jugs-brasil/
Exemplo NoSQL vs relacional
28 JUGs do Brasil por região
Fonte: http://www.dfjug.org/jugs-brasil/
Exemplo NoSQL e relacional
Por onde começamos ?
Exemplo relacional
Maneira tradicional ...
4 tabelas: JUG, LOCAL, REGION e LOCAL_REGION
4 registros para cadastrar 1 JUG
Exemplo relacional
Listar JUGs do Sudeste
Exemplo NoSQL - MongoDB
Listar JUGs do Sudeste
Exemplo NoSQL - MongoDB
1 collection : jug
1 registro (documento) para cadastrar 1 JUG
Schema Design
Pense primeiro no sistema e depois na base !
Não existe certo ou errado !
Desvantagens do MongoDB
- sintaxe JavaScript não é trivial
- usar MongoDB pensando relacional
- uso errado de índices
- serviço do servidor é pesado
Vantagens do MongoDB
- banco de dados feito para desenvolvedor (quase
não precisa de DBA)
- JSON em todo lugar
- foco na app e nao no banco de dados
- velocidade
- escalável
Vantagens do MongoDB
- comando upsert e update multiple
- full text search
- busca por índice geospatial -
https://github.com/boaglio/mongodb-java-geospatial-springdata-casadocodigo
- documento com validade
- capped collections
Dicas para iniciantes
- Use a ferramenta Robomongo - https://robomongo.org
- Pense bem no schema design
- Treinamentos gratuitos:
https://university.mongodb.com/courses/catalog
M101: Java , NodeJS , .Net, Python
Java + JSON + MongoDB
- Driver Java oficial
- JNoSQL Diana
- Morphia
- Spring Data
https://github.com/boaglio/mongodb-java-examples
Aceito sugestões!!!
Driver Java Oficial
JNoSQL Diana
Morphia
Spring Data
Bonus: PostgreSQL
Suporte nativo ao JSON desde a versão 9.2 (2012)
E para finalizar...
https://www.meetup.com/topics/java/
Participe dos Meetups!

MongoDB com Java - GUOB 2018

  • 1.
    MongoDB com Java FernandoBoaglio Agosto de 2018 @boaglio
  • 2.
  • 3.
    MongoDB - oque é ? • Banco de dados baseado em documentos • classifcado como NoSQL • Sem schemas • Sem transações * • Escalável
  • 4.
    MongoDB – umpouco de história 1995 - Dwight funda a double click 2005 - vende ( Google compra em 2007) 2007 - Dwight funda a 10gen junto com Eliot 2007 - monta uma solução para concorrer com a nuvem do Google: App Engine chamava ED (Elliot + Dwight) Banco de dados chamava P
  • 5.
    MongoDB – umpouco de história 2008 - mudaram de P para MongoDB (Humongous) 2009 - vira open source o/ 2010 - MongoDB vira production ready 2017 - Release 3 - versão community + Enterprise (auth, in-memory,compass) + MongoDB Atlas (nuvem) 2018 – Release 4 – suporte a transações
  • 6.
    MongoDB – quemusa ? http://www.mongodb.com/who-uses-mongodb
  • 7.
  • 8.
    Comparando conceitos... Baseado emtabelas Baseado em documentos Tabela Collection Coluna Campo Linha / registro sem limite de tamanho Documento / registro limitados em 16Mb RAC Replica Set Particionamento Sharding Raw Device GridFS
  • 9.
    MongoDB - oque é um documento? • Representação da informação em formato JSON • Linguagem usada é JavaScript
  • 10.
    Exemplo NoSQL vsrelacional NOVO SISTEMA: JUGs do Brasil por região Fonte: http://www.dfjug.org/jugs-brasil/
  • 11.
    Exemplo NoSQL vsrelacional 28 JUGs do Brasil por região Fonte: http://www.dfjug.org/jugs-brasil/
  • 12.
    Exemplo NoSQL erelacional Por onde começamos ?
  • 13.
    Exemplo relacional Maneira tradicional... 4 tabelas: JUG, LOCAL, REGION e LOCAL_REGION 4 registros para cadastrar 1 JUG
  • 14.
  • 15.
    Exemplo NoSQL -MongoDB Listar JUGs do Sudeste
  • 16.
    Exemplo NoSQL -MongoDB 1 collection : jug 1 registro (documento) para cadastrar 1 JUG
  • 17.
    Schema Design Pense primeirono sistema e depois na base ! Não existe certo ou errado !
  • 18.
    Desvantagens do MongoDB -sintaxe JavaScript não é trivial - usar MongoDB pensando relacional - uso errado de índices - serviço do servidor é pesado
  • 19.
    Vantagens do MongoDB -banco de dados feito para desenvolvedor (quase não precisa de DBA) - JSON em todo lugar - foco na app e nao no banco de dados - velocidade - escalável
  • 20.
    Vantagens do MongoDB -comando upsert e update multiple - full text search - busca por índice geospatial - https://github.com/boaglio/mongodb-java-geospatial-springdata-casadocodigo - documento com validade - capped collections
  • 21.
    Dicas para iniciantes -Use a ferramenta Robomongo - https://robomongo.org - Pense bem no schema design - Treinamentos gratuitos: https://university.mongodb.com/courses/catalog M101: Java , NodeJS , .Net, Python
  • 22.
    Java + JSON+ MongoDB - Driver Java oficial - JNoSQL Diana - Morphia - Spring Data https://github.com/boaglio/mongodb-java-examples Aceito sugestões!!!
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
    Bonus: PostgreSQL Suporte nativoao JSON desde a versão 9.2 (2012)
  • 28.