SlideShare a Scribd company logo
1 of 49
Marcos Thomaz da Silva
Bacharel em Sistemas de Informação pela 
Universidade Federal do Acre 
Analista de Tecnologia da Informação da 
Universidade Federal do Acre 
Desenvolvedor em Linguagens como Clipper, 
Delphi, PHP e Python 
Entusiasta por Bancos de Dados e Otimização 
de Consultas
Banco de Dados NoSQL; 
Desenvolvimento iniciado em 2007 (10gen); 
Primeiro Release em 2009 (MongoDB Inc.); 
Escrito em C++; 
Multi-Plataforma (Windows, Linux, OSX); 
OpenSource; 
Banco de Dados Orientado a Documentos;
Binários para 32 e 64 bits; 
Pacotes disponíveis para várias distribuições 
Linux (Red Hat, CentOS, Fedora, Debian, ...); 
Utiliza Javascript como “motor” do sistema; 
Documentos JSON; 
É NoSQL, não OO
Suporte a principais tipos de dados: 
 String; 
 Double; 
 Inteiros; 
 Date; 
 Null; 
 Binary Data; 
 TimeStamp; 
 Boolean.
E suporte a alguns tipos especiais: 
 Array; 
 Regular Expressions; 
 Javascript ; 
 ObjectID; 
 Object; 
Mas espere um pouco, não era OO!
“JSON (JavaScript Object Notation - Notação 
de Objetos JavaScript) é uma formatação 
leve de troca de dados.” 
“JSON é em formato texto e completamente 
independente de linguagem...” 
Fonte: http://www.json.org/json-pt.html
Suporte às principais operações DML (Data 
Manipulation Language): 
 Insert; 
 Update; 
 Delete; e 
 Select.
MongoDB é suportado pelas seguintes 
linguagens: 
 Javascript; 
 C, C++, Haskell; 
 PHP, C#, Python, Perl, Ruby 
 Erlang, Scala e Java;
Quem usa: 
 CraigList; 
 eBay; 
 Foursquare; 
 SourceForge; 
 The NewYork Times;
Possui estrutura semelhante à outros Bancos 
de Dados: 
 Tabelas; 
 Registros; 
 Campos; 
 Índices;
Semelhança com uso do MySQL: 
 Conexão com o servidor; 
 Comando use para indicar qual database; 
 Sem integridade referencial (MyISAM); 
 Criado dinamicamente.
Tabelas: 
 No MongoDB são chamadas de Collections; 
Campos: 
 Sem restrição no nome do campo;
Chamados de Documents (Documentos); 
São uma estrutura JSON; 
Podem ter diferentes campos em uma 
mesma Collection;
Podem ser criados índices de ordem 
ascendente ou descendente; 
Podem ser criados índices compostos; 
Podem ser criados índices únicos 
(considerando ou ignorando nulos); 
Existem chaves-primárias (por padrão são 
campos nomeados por _id) 
Permite índices para busca textual (text 
indexes)
Permite consultas por quaisquer campos das 
Collections; 
Permite consultas em arrays (mesmo campos 
do tipo array); 
Permite consultas com diversos filtros, 
aplicando instruções como order by, limit e 
skip;
Permite os principais comandos de 
agregação: 
 Sum; 
 Max; 
 Min; 
 Count; 
 Avg;
Tipos GeoJSON; 
Cadastro de Polygons, Point’s, LineString; 
Consultas baseadas em coordenadas: 
 União; 
 Intersecção; e 
 Proximidade. 
Criação de índices para melhora das 
consultas espaciais.
Executáveis servidores (gerenciadores do 
banco): 
Banco de Dados Executável 
MySQL mysqld 
Oracle oracle 
MongoDB mongod
Executáveis de consulta: 
Banco de Dados Executável 
MySQL mysql 
Oracle sqlplus 
PostgreSQL psql 
MondoDB mongo
MongoDB não suporta triggers nem 
procedures;
Replicação; 
Cluster; 
mongoimport / mongoexport; 
Console Interativo de Consulta; 
Servidor REST; 
Ferramentas de Backup/Restore; 
Monitoramento (mongotop, mongostat); 
Segurança
Instalação/Configuração Simples 
Servidor Leve; 
Servidor REST; 
Text Search com Multiplos Campos; 
Alta Performance; 
Alta Disponibilidade; 
Facilmente Escalável; 
Performance em consultas;
Explain; 
Instrução Hint; 
Índices; 
Tablespaces; 
Sharding;
Nem tudo são flores...
http://www.mongodb.org/ 
 Site oficial do MongoDB 
https://education.mongodb.com/ 
 Site com cursos oficiais gratuitos 
http://www.mongodb.org/about/production-deployments/ 
 Lista de empresas que usam MongoDB

More Related Content

What's hot

Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBThiago Avelino
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
Minicurso Introdução ao mongoDB SCTI
Minicurso Introdução ao mongoDB SCTIMinicurso Introdução ao mongoDB SCTI
Minicurso Introdução ao mongoDB SCTIBruna Pereira
 
MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16Christiano Anderson
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014Christiano Anderson
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosYuri Adams
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Fernando Boaglio
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 

What's hot (20)

NoSQL e MongoDB
NoSQL e MongoDBNoSQL e MongoDB
NoSQL e MongoDB
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDB
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
 
Minicurso Introdução ao mongoDB SCTI
Minicurso Introdução ao mongoDB SCTIMinicurso Introdução ao mongoDB SCTI
Minicurso Introdução ao mongoDB SCTI
 
MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Meetup MUG-RS KingHost
Meetup MUG-RS KingHostMeetup MUG-RS KingHost
Meetup MUG-RS KingHost
 
2011 01-18 mongo-db
2011 01-18 mongo-db2011 01-18 mongo-db
2011 01-18 mongo-db
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
#3 Instalação MongoDB
#3   Instalação MongoDB  #3   Instalação MongoDB
#3 Instalação MongoDB
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a Documentos
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
Mongo + php
Mongo + phpMongo + php
Mongo + php
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2
 

Viewers also liked

Criação de aplicações web com python
Criação de aplicações web com pythonCriação de aplicações web com python
Criação de aplicações web com pythonHelder Vieira
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDBJDSBD
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014Fernando Boaglio
 
Albert hofmann - Minha criança problema
Albert hofmann - Minha criança problemaAlbert hofmann - Minha criança problema
Albert hofmann - Minha criança problemaRobson Tabile
 
Manual Simples Expressões Regulares Python
Manual Simples Expressões Regulares PythonManual Simples Expressões Regulares Python
Manual Simples Expressões Regulares PythonBismarck Gomes
 
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPPHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPAryel Tupinambá
 
Aprendendo python 2a edição
Aprendendo python   2a ediçãoAprendendo python   2a edição
Aprendendo python 2a ediçãoCAVN/UFPB III
 
Python no ensino de programação
Python no ensino de programaçãoPython no ensino de programação
Python no ensino de programaçãoGivanaldo Rocha
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programaçãoMarcel Caraciolo
 
Redes Neurais e Python
Redes Neurais e PythonRedes Neurais e Python
Redes Neurais e Pythonpugpe
 
Arduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreArduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreÁlvaro Justen
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonGiancarlo Silva
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionaisalexculpado
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 
Python no Celular
Python no CelularPython no Celular
Python no Celulariuridiniz
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Marcelo Barros de Almeida
 
Dados tabulares: A Maneira Pythônica
Dados tabulares: A Maneira PythônicaDados tabulares: A Maneira Pythônica
Dados tabulares: A Maneira PythônicaÁlvaro Justen
 

Viewers also liked (20)

Criação de aplicações web com python
Criação de aplicações web com pythonCriação de aplicações web com python
Criação de aplicações web com python
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDB
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014
 
Albert hofmann - Minha criança problema
Albert hofmann - Minha criança problemaAlbert hofmann - Minha criança problema
Albert hofmann - Minha criança problema
 
Manual Simples Expressões Regulares Python
Manual Simples Expressões Regulares PythonManual Simples Expressões Regulares Python
Manual Simples Expressões Regulares Python
 
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPPHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
 
Aprendendo python 2a edição
Aprendendo python   2a ediçãoAprendendo python   2a edição
Aprendendo python 2a edição
 
Python no ensino de programação
Python no ensino de programaçãoPython no ensino de programação
Python no ensino de programação
 
GCM Android
GCM AndroidGCM Android
GCM Android
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programação
 
Redes Neurais e Python
Redes Neurais e PythonRedes Neurais e Python
Redes Neurais e Python
 
Arduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreArduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware Livre
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
Ensinando OO com Python
Ensinando OO com PythonEnsinando OO com Python
Ensinando OO com Python
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Python no Celular
Python no CelularPython no Celular
Python no Celular
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Dados tabulares: A Maneira Pythônica
Dados tabulares: A Maneira PythônicaDados tabulares: A Maneira Pythônica
Dados tabulares: A Maneira Pythônica
 

Similar to MongoDB Documento Introdutório

Tecnologias para sistemas distribuidos escalaveis
Tecnologias para sistemas distribuidos escalaveisTecnologias para sistemas distribuidos escalaveis
Tecnologias para sistemas distribuidos escalaveisLuiz Bettega
 
MongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webMongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webRafael Nunes
 
SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataRodrigo Dornel
 
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDBVinicius de Sá
 
Bancos de dados No-SQL e afins
Bancos de dados No-SQL e afinsBancos de dados No-SQL e afins
Bancos de dados No-SQL e afinsdcarneir
 
SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016Rodrigo Dornel
 
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
 
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...tdc-globalcode
 
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Thiago Barradas
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptxacsme
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 

Similar to MongoDB Documento Introdutório (20)

Tecnologias para sistemas distribuidos escalaveis
Tecnologias para sistemas distribuidos escalaveisTecnologias para sistemas distribuidos escalaveis
Tecnologias para sistemas distribuidos escalaveis
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
MongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webMongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações web
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigData
 
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
 
Bancos de dados No-SQL e afins
Bancos de dados No-SQL e afinsBancos de dados No-SQL e afins
Bancos de dados No-SQL e afins
 
SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016
 
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
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
 
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
MAC5855 - NoSQL
MAC5855 - NoSQLMAC5855 - NoSQL
MAC5855 - NoSQL
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 
Postgre sql +python
Postgre sql +pythonPostgre sql +python
Postgre sql +python
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Oficial
OficialOficial
Oficial
 

More from Marcos Thomaz

Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...Marcos Thomaz
 
Hydros - Apresentação para Investidores
Hydros - Apresentação para InvestidoresHydros - Apresentação para Investidores
Hydros - Apresentação para InvestidoresMarcos Thomaz
 
Minimax e corte alfa beta
Minimax e corte alfa betaMinimax e corte alfa beta
Minimax e corte alfa betaMarcos Thomaz
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do bancoMarcos Thomaz
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLMarcos Thomaz
 

More from Marcos Thomaz (8)

Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
 
Hydros - Apresentação para Investidores
Hydros - Apresentação para InvestidoresHydros - Apresentação para Investidores
Hydros - Apresentação para Investidores
 
Minimax e corte alfa beta
Minimax e corte alfa betaMinimax e corte alfa beta
Minimax e corte alfa beta
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do banco
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQL
 

MongoDB Documento Introdutório

  • 2. Bacharel em Sistemas de Informação pela Universidade Federal do Acre Analista de Tecnologia da Informação da Universidade Federal do Acre Desenvolvedor em Linguagens como Clipper, Delphi, PHP e Python Entusiasta por Bancos de Dados e Otimização de Consultas
  • 3. Banco de Dados NoSQL; Desenvolvimento iniciado em 2007 (10gen); Primeiro Release em 2009 (MongoDB Inc.); Escrito em C++; Multi-Plataforma (Windows, Linux, OSX); OpenSource; Banco de Dados Orientado a Documentos;
  • 4. Binários para 32 e 64 bits; Pacotes disponíveis para várias distribuições Linux (Red Hat, CentOS, Fedora, Debian, ...); Utiliza Javascript como “motor” do sistema; Documentos JSON; É NoSQL, não OO
  • 5. Suporte a principais tipos de dados:  String;  Double;  Inteiros;  Date;  Null;  Binary Data;  TimeStamp;  Boolean.
  • 6. E suporte a alguns tipos especiais:  Array;  Regular Expressions;  Javascript ;  ObjectID;  Object; Mas espere um pouco, não era OO!
  • 7. “JSON (JavaScript Object Notation - Notação de Objetos JavaScript) é uma formatação leve de troca de dados.” “JSON é em formato texto e completamente independente de linguagem...” Fonte: http://www.json.org/json-pt.html
  • 8. Suporte às principais operações DML (Data Manipulation Language):  Insert;  Update;  Delete; e  Select.
  • 9. MongoDB é suportado pelas seguintes linguagens:  Javascript;  C, C++, Haskell;  PHP, C#, Python, Perl, Ruby  Erlang, Scala e Java;
  • 10. Quem usa:  CraigList;  eBay;  Foursquare;  SourceForge;  The NewYork Times;
  • 11. Possui estrutura semelhante à outros Bancos de Dados:  Tabelas;  Registros;  Campos;  Índices;
  • 12. Semelhança com uso do MySQL:  Conexão com o servidor;  Comando use para indicar qual database;  Sem integridade referencial (MyISAM);  Criado dinamicamente.
  • 13. Tabelas:  No MongoDB são chamadas de Collections; Campos:  Sem restrição no nome do campo;
  • 14. Chamados de Documents (Documentos); São uma estrutura JSON; Podem ter diferentes campos em uma mesma Collection;
  • 15. Podem ser criados índices de ordem ascendente ou descendente; Podem ser criados índices compostos; Podem ser criados índices únicos (considerando ou ignorando nulos); Existem chaves-primárias (por padrão são campos nomeados por _id) Permite índices para busca textual (text indexes)
  • 16. Permite consultas por quaisquer campos das Collections; Permite consultas em arrays (mesmo campos do tipo array); Permite consultas com diversos filtros, aplicando instruções como order by, limit e skip;
  • 17.
  • 18. Permite os principais comandos de agregação:  Sum;  Max;  Min;  Count;  Avg;
  • 19. Tipos GeoJSON; Cadastro de Polygons, Point’s, LineString; Consultas baseadas em coordenadas:  União;  Intersecção; e  Proximidade. Criação de índices para melhora das consultas espaciais.
  • 20. Executáveis servidores (gerenciadores do banco): Banco de Dados Executável MySQL mysqld Oracle oracle MongoDB mongod
  • 21. Executáveis de consulta: Banco de Dados Executável MySQL mysql Oracle sqlplus PostgreSQL psql MondoDB mongo
  • 22. MongoDB não suporta triggers nem procedures;
  • 23. Replicação; Cluster; mongoimport / mongoexport; Console Interativo de Consulta; Servidor REST; Ferramentas de Backup/Restore; Monitoramento (mongotop, mongostat); Segurança
  • 24. Instalação/Configuração Simples Servidor Leve; Servidor REST; Text Search com Multiplos Campos; Alta Performance; Alta Disponibilidade; Facilmente Escalável; Performance em consultas;
  • 25.
  • 26.
  • 27. Explain; Instrução Hint; Índices; Tablespaces; Sharding;
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45. Nem tudo são flores...
  • 46.
  • 47.
  • 48.
  • 49. http://www.mongodb.org/  Site oficial do MongoDB https://education.mongodb.com/  Site com cursos oficiais gratuitos http://www.mongodb.org/about/production-deployments/  Lista de empresas que usam MongoDB

Editor's Notes

  1. Boa noite a todos!
  2. Bem, meu nome é Marcos Thomaz da Silva, sou graduado em Sistemas de Informação pela UFAC e Analista de TI da mesma universidade.
  3. Banco de dados NoSQL, começou a ser desenvolvido pela 10gen em 2007, sendo que seu primeiro release foi em 2009. A empresa 10gen, acabou mudando de nome para MongoDB Inc. Ele foi escrito em C++, é multi plataforma, estando disponível para os sistemas operacionais Windows, Linux e OSX. É Open-Souce e orientado a documentos. De acordo com seus criadores, “MongoDB preenche a lacuna entre modelagem chave/valor (que são bem rápidas e escaláveis) e os tradicionais bancos de dados relacionais”.
  4. Utiliza Javascript como “motor” do sistema, ou seja, as solicitações, funções e script’s serão todos em Javascript.
  5. Tem suporte aos principais tipos de dados.
  6. E suporta também alguns tipos especiais como Arrays, que também existem em outros bancos de dados como por exemplo o PostgreSQL, Expressões Regulares, e outros três tipos: Javascript, ObjectID e o Object. Foi mencionado Javascript porque pode-se armazenar funções javascript em campos, executando-as quando necessário. ObjectID é um tipo de dados que ocupa 12 bytes e é usado para gerar chaves únicas, com base em dados do processador, hora, ID do processo e um contador randômico. Suporta também o tipo Object. Mas espere um pouco lembram-se que eu citei qu enão era OO? O mongo utiliza documentos Json que teriam a seguinte definição... O ObjectID é um tipo de 12 bytes onde 4 representam os segundos, 3 um identificador da máquina, 2 o ID do processo, 3 um contador (que inicia com um valor randômico) – Usado para criar campos chave-primária (espécie UUID)
  7. Ou seja, apesar do Json servir como um tipo de orientação a objetos no javascript, e ter esse nome de object, nada mais é do que uma formatação que permite a troca (e organização ) de dados de forma mais leve que um XML. E o tipo Object no qual me referi no slide anterior é sobre esse tipo de “Objeto”, os documentos JSON.
  8. Claro! Tudo com comandos específicos que veremos a seguir.
  9. Vale lembrar que por ser suportado por estas linguagens, pode-se fazer uso de ferramentas destas linguagens juntamente com o MongoDB, tais como o pentaho (que é uma ferramenta de BI) e framework’s de desenvolvimento web (Rails do Ruby e Django do Python).
  10. Diversas empresas vem utilizando e seu uso é cada vez maior. Craigslist – Empresa de Classificados Web. Foursquare – Redes social para dispositivos moveis. Dentre estas, eu gostaria de destacar a CraigList, cuja base de dados em MongoDB atualmente contém mais de 2 Bilhões de documentos, com aproximadamente 5 Tera de tamanho.
  11. A forma de conexão com a base de dados se assemelha a conexão realizada com bancos de dados MySQL, ou seja, Conecta-se ao server e solicita-se o uso do banco de dados (através do comando use). Também não possui integridade referencial, assim como as bases MyISAM do MySQL. Um fato interessante é que o banco de dados é criado dinamicamente, ou seja, não existe a necessidade de comandos com os Create Tables ou outro do tipo.
  12. As Tabelas no MongoDB são chamadas de Collection’s. Seguindo o mesmo caminho do banco de dados, tanto as tabelas quanto os campos são dinâmicos, ou seja, os documentos armazenados em uma mesma collection não precisam necessariamente ter os mesmos campos, a mesma estrutura. Por isso o nome de tabela não atenderia, ficando melhor definição a de coleção. Os nomes dos campos podem conter letras e números exceto ponto e o $. Os dados armazenados são representados como JSON, mas mantém-se numa estrutura chamada de BSON, que é a representação binária, serializada, de um JSON.
  13. No MongoDB os registros ou linhas são chamados de Documents. Como já havia mencionado, é uma estrutura JSON que contém informações. Como as linhas são chamadas de Documents, o nome de Collection ao invés de tabela mais uma vez faz sentido. Também como já foi citado, Uma mesma Colection pode conter diferentes Documents, sendo permitido que cada um tenha uma estrutura, ou seja, nomes e tipos de campos completamente diferentes um do outro. Se não for especificado uma chave primária para um registro, por padrão, é atribuído um valor do tipo ObjectID, mas pode ser de qualquer tipo.
  14. O mongoDb permite a criação de índices, de forma semelhante ao dos SGBD’s, exceto pelo fato de que não existem índices de chave estrangeira.
  15. Queries ou consultas, podem ser realizadas sobre quaisquer campos das collections, inclusive em campos do tipo Array e Object. No caso do Skip, seria equivalente ao offset do postgreSQL por exemplo, usado para saltar os primeiros N registros antes de exibir os registros;
  16. Aqui temos um exemplo simplificado de como a engine realiza as consultas no banco de dados.
  17. Permite funções de agregação tais como Sum..... Além destas funções, é possível criar funções específicas através de funções Javascript, que podem ser rodadas diretamente no banco de dados.
  18. Uma característica interessante é que a engine do Mongo permite a utilização de GeoJSON, que é um tipo de JSON para geolozalização. Com ele podemos especificar geometrias do tipo Polygon, Point e LIneString, além de operações como União, Intersecção e Proximidade de uma determinada geometria. Trabalha de forma semelhante ao Postgis do POstgreSQL, permitindo também a criação de índices para um melhor desempenho em operações neste formato.
  19. Não possui o recurso de triggers ou procedures. Porém, no caso das procedures, pode ser suprida através da execução de funções javascript, que realizem operações sobre as collections de um banco de dados.
  20. Mongoimport/export realizam a importação/exportação de formato bson para json e vice versa. A segurança no mongoDB é um ponto importante e deve ser estudado ao se pensar em seu uso, pois por padrão, vem com a autenticação desabilitada, e a mesma deve ser ativada e configurada de acordo com a necessidade. Existem tambpem ferramentas para criptografia dos dados, o que aumenta um pouco mais a segurança.
  21. Alguns pontos favoráveis, pelo menos que levem-nos a testar o Mongo são... O Servidor REST permitiria que uma aplicação web, a partir de sua camada cliente, ou seja, de script’s javascript ou flash, realize consultas diretamente no banco de dados que, apesar de não recomendável, pode ser utilizado em testes. Mas O grande motivo que me levou a testar e estudar esse banco de dados foi a Performance. Para exemplificar, foi realizado um pequeno teste
  22. O teste foi simples, onde era realizada a inserção de alguns dados em uma base PostgreSQL, e numa base MongoDB e medido o tempo de inserção. Na mesma aplicação, era realizada a consulta de um registro aleatório, medido o tempo de resposta e avaliado. O teste mostrou que inserção no PostgreSQL é mais rápida, porém, a recuperação é mais lenta. Ambas as bases sem índices, e foram realizadas em uma mesma máquina. O teste foi repetido 10 vezes onde o valor apresentado é o que atingiu a média. Também vale lembrar que nenhum tipo de configuração foi realizada com nenhum dos 2 bancos de dados, ou seja, ambos estavam com suas configurações padrões.
  23. Resolvi então incrementar um pouco mais o teste e criei um índice na base de dados POstgreSQL e resolvi executar novamente o teste de consulta, obtendo um resultado interessante: O MongoDB teve maior performance mesmo estando sem índices criados. Claro que não é um comparativo oficial, mas ajuda a entender a diferença no desempenho.
  24. E se ainda assim o desempenho não for suficiente, existe a possibilidade de se realizar um tratamento mais fino, avaliando as consultas com o Explain e, se for o caso indicando o melhor índice para a mesma de forma explicita (usando o hint) ou Criando novos índices que atendam as necessidades. Outras opções seriam a criação de TableSpaces e realização de Sharding. No Mongo não existe exatamente as tablespaces, mas sim a opção de selecionar outros discos/partições de armazenamento, que atuam de forma idêntica as tablespaces. O Sharding é um tipo de recurso que permite escalar horizontalmente, aumentando a quantidade de instâncias. É um recurso semelhante ao Particionamento de Tabelas, mas realizado com Banco de Dados inteiro.
  25. O que eu quis demonstrar aqui foi o uso de funções javascript, dentro de comandos de agregação. Isso permite que funções de agregação possam ser muito flexíveis, apesar de, a primeira vista, parecer confuso.
  26. De uma forma geral, eu quis apresentar para vocês uma forma diferente utilizar e gerenciar uma base de dados. O MongoDB apesar de ser um banco de dados novo (apenas 4 anos), já vem ganhando espaço em meio a outros e se destacando pela simplicidade, quantidade de recursos e principalmente o desempenho. Cabe salientar que temos diversos outros bancos de dados NoSQL no mercado, tais como CouchDB (OO), Redis (Key/Value), DB4O (OO), Cassandra, e muitos outros O crescimento não só do MongoDB como dos outros bancos NoSQL, eu atribuo mais a simplicidade e facilidade de manutenção, uma tendência que pode ser vista tambem no desenvolvimento de software’s, com framework’s cada vez tendo maise mais recursos.
  27. Assim como todas as outras ferramentas de desenvolvimento, cabe um pouco de bom senso e experiência. O ponto chave é saber exatamente o que se precisa, o que cada ferramenta tem a oferecer, para só então escolhermos uma ferramenta que nos atenda com maior precisão. Se precisar de desempenho e escalabilidade, e não precise de transações, talvez seja um bom momento para utilizá-lo, caso contrário, a sugestão é utilizar uma base relacional convencional. Cabe também testes mais “parrudos” com um banco deste porte pois apesar de se ter notícias de uma base de aproximadamente 5TB, bases muito maiores são utilizadas, como por exemplo, uma das bases do SERPRO, com cerca de 40TB.