SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Michel Felipe
michelphp@gmail.com

   @mfdeveloper
APRESENTAÇÃO

v  Analista de Sistemas na Prodeb	


v  Formado em Redes de Computadores	


v  Pós-Graduando em Eng. de Software
AGENDA
v  MongoDb: Características	

v  Download, instalação e Comandos Shell	

v  Inserindo, retornando e removendo dados via shell	

v  PHP e MongoDB: Por que utilizá-los juntos?	

v Conexão PHP com Mongo e CRUD	

v Conceito de “Chave Primária”	

v ORM’s para PHP + Mongo
MONGO E NOSQL

v  Not only SQL – Banco de dados não relacional	


v  Foco em “escalabilidade” e “desempenho”	


v  Tipos: Baseado em Grafos, Orientado a colunas
MONGODB -
             CARACTERISTICAS

v  Nosql open source baseado em documentos	


v  Fácil utilização	


v  Utiliza uma API OO Javascript
MONGODB -
DOCUMENTOS
MONGODB -
      CARACTERISTICAS

Database


           Collections

                         Documents
MONGODB -
           CARACTERISTICAS

v  BSON – Binary-encoded JSON	


v  Obs: Utilizar o tipo “MongoDate” para datas	


v  Limitações de tamanho: 	

   •  Arquitetura 32 bits e BSON
MONGODB - INSTALAÇÃO
1.    http://www.mongodb.org/	


2.    Download e descompactação	


3.    Criar arquivo de configuração e iniciar
  “serviço” do banco
MONGODB – ÁRVORE DE
    DIRETÓRIOS
MONGODB – ÁRQUIVO DE
   CONFIGURAÇÃO
MONGODB – CONEXÃO
MONGODB – CONEXÃO:
           PROBLEMAS

v  Problemas podem acontecer	

    •  Crash, conexão não finalizada corretamente 	

v  Necessário executar um “repair” nas bases	


v “old lock file”, pode indicar a remoção do arquivo
“mongod.lock”
MONGODB – CONEXÃO:
         AUTENTICAÇÃO

v  Provê segurança para as bases de dados	

v  Geralmente não é necessário para ambientes de “teste”	


v  Utiliza-se o argumento opcional “- - auth” na conexão
MONGODB – CRUD NO
              BASH

v  Método db.collection.insert( );

v  Método db.collection.find( ) e db.collection.findOne( );

v  Método db.collection.remove( );

v  Método db.collection.update( ) e db.collection.save( );
MONGODB – MAPREDUCE

v  Mapeia os dados, usando um valor do documento como
condição	


v  Muito parecido com o “GROUP BY”	


v  Reduz os valores mapeados, associando uma informação
MONGODB – MAPREDUCE


          Exemplo:

Agrupamento - Tags por usuários
PHP + MONGODB?

v  Gerenciar dados em larga escala	

v  ORM’s geralmente não são bons em desempenho	

v  As vezes é necessário alternativas:”MemCache,
Raid,Cluster…”
PHP + MONGODB –
        CLASSES BASE
   Database:
Mongo/MongoDB
                  Collections:
                MongoCollection
                                  Documents:
                                  MongoCursor
PHP + MONGODB – CLASSES
         DE TIPOS DE DADOS
         ID:                  ID:                     ID:
       MongoId             MongoCode               MongoDate

                       ID:                        ID:
                MongoRegex                MongoBinData

Obs: Existem mais classes em: http://br2.php.net/manual/en/mongo.types.php
PHP + MONGODB
            “SCRIPT INJECTION”
v  Semelhante ao SQL Injection	

v  Utiliza-se de código Javascript	

v  Técnicas de prevenção	

    v  Request Injection: Forçar cast para string	

    v  Utilizar classe MongoCode para código javascript	

    v  De preferência, utilizar o parâmetro $scope
PHP + MONGODB
         “SCRIPT INJECTION”

                  Exemplos:

Requisição: www.example.com?usr[$ne]=bar

Script: db.execute(‘codigoJavascript’)
PHP + MONGO–
INSTALAÇÃO DO DRIVER

   pecl install mongo	

   php.ini:	

   extension=mongo.so
PHP + MONGO–
      INSTALAÇÃO DO DRIVER
1.  https://github.com/mongodb/mongo-php-
 driver/downloads 	


2.  Copiar para a pasta de extensões do PHP(.dll
 ou .so)
PHP + MONGO – CONECTANDO
        AO MONGODB

<?php	
	
$connection = new Mongo(‘localhost:27017’); 	
	

?>
PHP + MONGO –
        INSERINDO DADOS
<?php	
	
$connection->dbName->collection->insert(	
    	array(‘field’=>’value’)	
);	
	

?>
PHP + MONGO –
      RETORNANDO DADOS
<?php	
	
$id = new MongoId(‘4f9af7fd08e9243347’);	
$connection->dbName->collection->findOne(	
    	array(‘_id’=>$id)	
);	
	

?>
PHP + MONGO –
      ATUALIZANDO DADOS
<?php	
	
$addresses->update(	
  array(‘_id’=>new MongoId(‘4f9af7fd08e9’))	
  array(‘$set’=>array(‘zip’=>’1001’)	
);	
                 Adicionar ao documento
	

?>
PHP – REMOVENDO
             DADOS
<?php	
	
$where =‘_id’=>new MongoId(‘4f9af7fd08e9’);	
$addresses->remove(	
  $where,	
  array(‘justOne’=>true)	
);	
	

?>
PHP + MONGO – GRIDFS

v  Utilizado para armazenar grandes arquivos	


v  Associa metadados aos arquivos 	


v  Separa arquivos em “chunks”	


v  Utiliza a classe MongoGridFS
PHP – REMOVENDO
             DADOS
<?php	
    	$db = new Mongo();	
    	$grid = $db->getGridFS();	
    	$grid->storeFile(‘file.txt’,    	
    	    array(‘metadata’=> (	
    	    	     	‘date’ =>new MongoDate()	
    	    	))	
    	));	

?>
PHP + MONGO – REST API

v  Acesso aos dados usando requisição HTTP	


v  Interfaces Especiais:	

    v  Sleepy Mongoose (Python)	

    v  MongoDB Rest(Node.js)	

    v  MongoDB Java Rest server
PHP + MONGO – REST API

v  Acesso nativo de “somente leitura” 	


v  Necessário o parâmetro “- - rest” no bash/prompt	


v  Acessível através porta padrão: 28017
PHP + MONGO – REST API

               Exemplo:

http://localhost:28017/mongophp/user/find
PHP + MONGO – ORM’S
      v  ZendFramework : Zend_Nosql_Mongo	

      	
      	
      $db = new Zend_Nosql_Mongo_Db(null,‘test’);	
      $col1 = $db->getCollection(‘testcollect’);	
      $id = $col1->save(new
      Zend_Nosql_Mongo_Object(array(‘field’=>1)->getId( );	
	

      	

v  Kohana: MangoDB
PHP + MONGO – ORM’S

v  Symfony 2: sfStoragePerformancePlugin	


v  CodeIgniter: MongoDB-CodeIgniter-Driver
PHP + MONGO – DESAFIO

CADASTRAR GRANDE QUANTIDADE
 DE IMAGENS NO BANCO NOSQL
PHP – REFERÊNCIAS
PHP – REFERÊNCIAS	


	

v  http://www.mongodb.org/	

	
http://devzone.zend.com/1730/getting-started-with-
mongodb-and-php/
PHP + MONGO

 OBRIGADO!

Mais conteúdo relacionado

Mais procurados

Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBLuiz Duarte
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...Rafael Jaques
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1 Edgar Dantas
 
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend FrameworkEntendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend FrameworkGedvan Dias
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesrjsmelo
 
Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBLuiz Duarte
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php segurosDouglas V. Pasqua
 
Aplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTAplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTBruno Neves Menezes
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)Bruno Pedro
 
Iniciando com javaScript 2017
Iniciando com javaScript 2017Iniciando com javaScript 2017
Iniciando com javaScript 2017Romualdo Andre
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBElaine Naomi
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberChristiano Anderson
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3Flávio Lisboa
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseLuiz Duarte
 

Mais procurados (20)

Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1
 
GET /conceitos HTTP/1.1
GET /conceitos HTTP/1.1GET /conceitos HTTP/1.1
GET /conceitos HTTP/1.1
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend FrameworkEntendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicações
 
Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDB
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
 
Aplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTAplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWT
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)
 
Iniciando com javaScript 2017
Iniciando com javaScript 2017Iniciando com javaScript 2017
Iniciando com javaScript 2017
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
assertTrue($tdd)
assertTrue($tdd)assertTrue($tdd)
assertTrue($tdd)
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + Mongoose
 

Destaque

Javascript e Orientação a Objetos - Palestra UNIFACS
Javascript e Orientação a Objetos - Palestra UNIFACSJavascript e Orientação a Objetos - Palestra UNIFACS
Javascript e Orientação a Objetos - Palestra UNIFACSMichel Felipe
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryReinaldo Junior
 
Curso jQuery Velame - Aula 2 - Manipulando o DOM
Curso jQuery Velame - Aula 2 - Manipulando o DOMCurso jQuery Velame - Aula 2 - Manipulando o DOM
Curso jQuery Velame - Aula 2 - Manipulando o DOMMichel Felipe
 
Curso jQuery Aula 3 - Eventos
Curso jQuery Aula 3 - EventosCurso jQuery Aula 3 - Eventos
Curso jQuery Aula 3 - EventosMichel Felipe
 
Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webHenrique Gogó
 

Destaque (6)

Javascript e Orientação a Objetos - Palestra UNIFACS
Javascript e Orientação a Objetos - Palestra UNIFACSJavascript e Orientação a Objetos - Palestra UNIFACS
Javascript e Orientação a Objetos - Palestra UNIFACS
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQuery
 
Curso jQuery Velame - Aula 2 - Manipulando o DOM
Curso jQuery Velame - Aula 2 - Manipulando o DOMCurso jQuery Velame - Aula 2 - Manipulando o DOM
Curso jQuery Velame - Aula 2 - Manipulando o DOM
 
Curso jQuery Aula 3 - Eventos
Curso jQuery Aula 3 - EventosCurso jQuery Aula 3 - Eventos
Curso jQuery Aula 3 - Eventos
 
Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações web
 
Ce JS 23 06-2012
Ce JS 23 06-2012Ce JS 23 06-2012
Ce JS 23 06-2012
 

Semelhante a PHPMongoDB

Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBiMasters
 
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDBJS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDBiMasters
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSDesenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSRomulo Fagundes
 
Mongo DB
Mongo DBMongo DB
Mongo DBdist_bp
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Rogerio Fontes
 
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
 
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...Tchelinux
 
MongoDB, Banco de Dados orientado a documento
MongoDB, Banco de Dados orientado a documentoMongoDB, Banco de Dados orientado a documento
MongoDB, Banco de Dados orientado a documentoThiago Avelino
 
Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04Luiz Duarte
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014Christiano Anderson
 
desenvolvimento-web-javascript
desenvolvimento-web-javascriptdesenvolvimento-web-javascript
desenvolvimento-web-javascriptFelipe Barros
 
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTOPDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTOPerla Coutinho Barbosa
 

Semelhante a PHPMongoDB (20)

Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
MongoDB na Campus Party
MongoDB na Campus PartyMongoDB na Campus Party
MongoDB na Campus Party
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
 
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDBJS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSDesenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014
 
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
 
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
 
MongoDB, Banco de Dados orientado a documento
MongoDB, Banco de Dados orientado a documentoMongoDB, Banco de Dados orientado a documento
MongoDB, Banco de Dados orientado a documento
 
Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014
 
desenvolvimento-web-javascript
desenvolvimento-web-javascriptdesenvolvimento-web-javascript
desenvolvimento-web-javascript
 
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTOPDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
 

PHPMongoDB

  • 2. APRESENTAÇÃO v  Analista de Sistemas na Prodeb v  Formado em Redes de Computadores v  Pós-Graduando em Eng. de Software
  • 3. AGENDA v  MongoDb: Características v  Download, instalação e Comandos Shell v  Inserindo, retornando e removendo dados via shell v  PHP e MongoDB: Por que utilizá-los juntos? v Conexão PHP com Mongo e CRUD v Conceito de “Chave Primária” v ORM’s para PHP + Mongo
  • 4. MONGO E NOSQL v  Not only SQL – Banco de dados não relacional v  Foco em “escalabilidade” e “desempenho” v  Tipos: Baseado em Grafos, Orientado a colunas
  • 5. MONGODB - CARACTERISTICAS v  Nosql open source baseado em documentos v  Fácil utilização v  Utiliza uma API OO Javascript
  • 7. MONGODB - CARACTERISTICAS Database Collections Documents
  • 8. MONGODB - CARACTERISTICAS v  BSON – Binary-encoded JSON v  Obs: Utilizar o tipo “MongoDate” para datas v  Limitações de tamanho: •  Arquitetura 32 bits e BSON
  • 9. MONGODB - INSTALAÇÃO 1.  http://www.mongodb.org/ 2.  Download e descompactação 3.  Criar arquivo de configuração e iniciar “serviço” do banco
  • 10. MONGODB – ÁRVORE DE DIRETÓRIOS
  • 11. MONGODB – ÁRQUIVO DE CONFIGURAÇÃO
  • 13. MONGODB – CONEXÃO: PROBLEMAS v  Problemas podem acontecer •  Crash, conexão não finalizada corretamente v  Necessário executar um “repair” nas bases v “old lock file”, pode indicar a remoção do arquivo “mongod.lock”
  • 14. MONGODB – CONEXÃO: AUTENTICAÇÃO v  Provê segurança para as bases de dados v  Geralmente não é necessário para ambientes de “teste” v  Utiliza-se o argumento opcional “- - auth” na conexão
  • 15. MONGODB – CRUD NO BASH v  Método db.collection.insert( ); v  Método db.collection.find( ) e db.collection.findOne( ); v  Método db.collection.remove( ); v  Método db.collection.update( ) e db.collection.save( );
  • 16. MONGODB – MAPREDUCE v  Mapeia os dados, usando um valor do documento como condição v  Muito parecido com o “GROUP BY” v  Reduz os valores mapeados, associando uma informação
  • 17. MONGODB – MAPREDUCE Exemplo: Agrupamento - Tags por usuários
  • 18. PHP + MONGODB? v  Gerenciar dados em larga escala v  ORM’s geralmente não são bons em desempenho v  As vezes é necessário alternativas:”MemCache, Raid,Cluster…”
  • 19. PHP + MONGODB – CLASSES BASE Database: Mongo/MongoDB Collections: MongoCollection Documents: MongoCursor
  • 20. PHP + MONGODB – CLASSES DE TIPOS DE DADOS ID: ID: ID: MongoId MongoCode MongoDate ID: ID: MongoRegex MongoBinData Obs: Existem mais classes em: http://br2.php.net/manual/en/mongo.types.php
  • 21. PHP + MONGODB “SCRIPT INJECTION” v  Semelhante ao SQL Injection v  Utiliza-se de código Javascript v  Técnicas de prevenção v  Request Injection: Forçar cast para string v  Utilizar classe MongoCode para código javascript v  De preferência, utilizar o parâmetro $scope
  • 22. PHP + MONGODB “SCRIPT INJECTION” Exemplos: Requisição: www.example.com?usr[$ne]=bar Script: db.execute(‘codigoJavascript’)
  • 23. PHP + MONGO– INSTALAÇÃO DO DRIVER pecl install mongo php.ini: extension=mongo.so
  • 24. PHP + MONGO– INSTALAÇÃO DO DRIVER 1.  https://github.com/mongodb/mongo-php- driver/downloads 2.  Copiar para a pasta de extensões do PHP(.dll ou .so)
  • 25. PHP + MONGO – CONECTANDO AO MONGODB <?php $connection = new Mongo(‘localhost:27017’); ?>
  • 26. PHP + MONGO – INSERINDO DADOS <?php $connection->dbName->collection->insert( array(‘field’=>’value’) ); ?>
  • 27. PHP + MONGO – RETORNANDO DADOS <?php $id = new MongoId(‘4f9af7fd08e9243347’); $connection->dbName->collection->findOne( array(‘_id’=>$id) ); ?>
  • 28. PHP + MONGO – ATUALIZANDO DADOS <?php $addresses->update( array(‘_id’=>new MongoId(‘4f9af7fd08e9’)) array(‘$set’=>array(‘zip’=>’1001’) ); Adicionar ao documento ?>
  • 29. PHP – REMOVENDO DADOS <?php $where =‘_id’=>new MongoId(‘4f9af7fd08e9’); $addresses->remove( $where, array(‘justOne’=>true) ); ?>
  • 30. PHP + MONGO – GRIDFS v  Utilizado para armazenar grandes arquivos v  Associa metadados aos arquivos v  Separa arquivos em “chunks” v  Utiliza a classe MongoGridFS
  • 31. PHP – REMOVENDO DADOS <?php $db = new Mongo(); $grid = $db->getGridFS(); $grid->storeFile(‘file.txt’, array(‘metadata’=> ( ‘date’ =>new MongoDate() )) )); ?>
  • 32. PHP + MONGO – REST API v  Acesso aos dados usando requisição HTTP v  Interfaces Especiais: v  Sleepy Mongoose (Python) v  MongoDB Rest(Node.js) v  MongoDB Java Rest server
  • 33. PHP + MONGO – REST API v  Acesso nativo de “somente leitura” v  Necessário o parâmetro “- - rest” no bash/prompt v  Acessível através porta padrão: 28017
  • 34. PHP + MONGO – REST API Exemplo: http://localhost:28017/mongophp/user/find
  • 35. PHP + MONGO – ORM’S v  ZendFramework : Zend_Nosql_Mongo $db = new Zend_Nosql_Mongo_Db(null,‘test’); $col1 = $db->getCollection(‘testcollect’); $id = $col1->save(new Zend_Nosql_Mongo_Object(array(‘field’=>1)->getId( ); v  Kohana: MangoDB
  • 36. PHP + MONGO – ORM’S v  Symfony 2: sfStoragePerformancePlugin v  CodeIgniter: MongoDB-CodeIgniter-Driver
  • 37. PHP + MONGO – DESAFIO CADASTRAR GRANDE QUANTIDADE DE IMAGENS NO BANCO NOSQL
  • 38.
  • 40. PHP – REFERÊNCIAS v  http://www.mongodb.org/ http://devzone.zend.com/1730/getting-started-with- mongodb-and-php/
  • 41. PHP + MONGO OBRIGADO!