Michel Felipemichelphp@gmail.com   @mfdeveloper
APRESENTAÇÃOv  Analista de Sistemas na Prodeb	v  Formado em Redes de Computadores	v  Pós-Graduando em Eng. de Software
AGENDAv  MongoDb: Características	v  Download, instalação e Comandos Shell	v  Inserindo, retornando e removendo dados v...
MONGO E NOSQLv  Not only SQL – Banco de dados não relacional	v  Foco em “escalabilidade” e “desempenho”	v  Tipos: Basea...
MONGODB -             CARACTERISTICASv  Nosql open source baseado em documentos	v  Fácil utilização	v  Utiliza uma API ...
MONGODB -DOCUMENTOS
MONGODB -      CARACTERISTICASDatabase           Collections                         Documents
MONGODB -           CARACTERISTICASv  BSON – Binary-encoded JSON	v  Obs: Utilizar o tipo “MongoDate” para datas	v  Limi...
MONGODB - INSTALAÇÃO1.    http://www.mongodb.org/	2.    Download e descompactação	3.    Criar arquivo de configuração e ini...
MONGODB – ÁRVORE DE    DIRETÓRIOS
MONGODB – ÁRQUIVO DE   CONFIGURAÇÃO
MONGODB – CONEXÃO
MONGODB – CONEXÃO:           PROBLEMASv  Problemas podem acontecer	    •  Crash, conexão não finalizada corretamente 	v  ...
MONGODB – CONEXÃO:         AUTENTICAÇÃOv  Provê segurança para as bases de dados	v  Geralmente não é necessário para amb...
MONGODB – CRUD NO              BASHv  Método db.collection.insert( );v  Método db.collection.find( ) e db.collection.fin...
MONGODB – MAPREDUCEv  Mapeia os dados, usando um valor do documento comocondição	v  Muito parecido com o “GROUP BY”	v  ...
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ári...
PHP + MONGODB –        CLASSES BASE   Database:Mongo/MongoDB                  Collections:                MongoCollection ...
PHP + MONGODB – CLASSES         DE TIPOS DE DADOS         ID:                  ID:                     ID:       MongoId  ...
PHP + MONGODB            “SCRIPT INJECTION”v  Semelhante ao SQL Injection	v  Utiliza-se de código Javascript	v  Técnica...
PHP + MONGODB         “SCRIPT INJECTION”                  Exemplos:Requisição: www.example.com?usr[$ne]=barScript: db.exec...
PHP + MONGO–INSTALAÇÃO DO DRIVER   pecl install mongo	   php.ini:	   extension=mongo.so
PHP + MONGO–      INSTALAÇÃO DO DRIVER1.  https://github.com/mongodb/mongo-php- driver/downloads 	2.  Copiar para a pasta ...
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->findOn...
PHP + MONGO –      ATUALIZANDO DADOS<?php		$addresses->update(	  array(‘_id’=>new MongoId(‘4f9af7fd08e9’))	  array(‘$set’=...
PHP – REMOVENDO             DADOS<?php		$where =‘_id’=>new MongoId(‘4f9af7fd08e9’);	$addresses->remove(	  $where,	  array(...
PHP + MONGO – GRIDFSv  Utilizado para armazenar grandes arquivos	v  Associa metadados aos arquivos 	v  Separa arquivos ...
PHP – REMOVENDO             DADOS<?php	    	$db = new Mongo();	    	$grid = $db->getGridFS();	    	$grid->storeFile(‘file....
PHP + MONGO – REST APIv  Acesso aos dados usando requisição HTTP	v  Interfaces Especiais:	    v  Sleepy Mongoose (Pytho...
PHP + MONGO – REST APIv  Acesso nativo de “somente leitura” 	v  Necessário o parâmetro “- - rest” no bash/prompt	v  Ace...
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...
PHP + MONGO – ORM’Sv  Symfony 2: sfStoragePerformancePlugin	v  CodeIgniter: MongoDB-CodeIgniter-Driver
PHP + MONGO – DESAFIOCADASTRAR 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!
PHPMongoDB
Upcoming SlideShare
Loading in …5
×

PHPMongoDB

1,855 views
1,761 views

Published on

Workshop de PHP + MongoDb no Nosql Ba

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,855
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
23
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

PHPMongoDB

  1. 1. Michel Felipemichelphp@gmail.com @mfdeveloper
  2. 2. APRESENTAÇÃOv  Analista de Sistemas na Prodeb v  Formado em Redes de Computadores v  Pós-Graduando em Eng. de Software
  3. 3. AGENDAv  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. 4. MONGO E NOSQLv  Not only SQL – Banco de dados não relacional v  Foco em “escalabilidade” e “desempenho” v  Tipos: Baseado em Grafos, Orientado a colunas
  5. 5. MONGODB - CARACTERISTICASv  Nosql open source baseado em documentos v  Fácil utilização v  Utiliza uma API OO Javascript
  6. 6. MONGODB -DOCUMENTOS
  7. 7. MONGODB - CARACTERISTICASDatabase Collections Documents
  8. 8. MONGODB - CARACTERISTICASv  BSON – Binary-encoded JSON v  Obs: Utilizar o tipo “MongoDate” para datas v  Limitações de tamanho: •  Arquitetura 32 bits e BSON
  9. 9. MONGODB - INSTALAÇÃO1.  http://www.mongodb.org/ 2.  Download e descompactação 3.  Criar arquivo de configuração e iniciar “serviço” do banco
  10. 10. MONGODB – ÁRVORE DE DIRETÓRIOS
  11. 11. MONGODB – ÁRQUIVO DE CONFIGURAÇÃO
  12. 12. MONGODB – CONEXÃO
  13. 13. MONGODB – CONEXÃO: PROBLEMASv  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. 14. MONGODB – CONEXÃO: AUTENTICAÇÃOv  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. 15. MONGODB – CRUD NO BASHv  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. 16. MONGODB – MAPREDUCEv  Mapeia os dados, usando um valor do documento comocondição v  Muito parecido com o “GROUP BY” v  Reduz os valores mapeados, associando uma informação
  17. 17. MONGODB – MAPREDUCE Exemplo:Agrupamento - Tags por usuários
  18. 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. 19. PHP + MONGODB – CLASSES BASE Database:Mongo/MongoDB Collections: MongoCollection Documents: MongoCursor
  20. 20. PHP + MONGODB – CLASSES DE TIPOS DE DADOS ID: ID: ID: MongoId MongoCode MongoDate ID: ID: MongoRegex MongoBinDataObs: Existem mais classes em: http://br2.php.net/manual/en/mongo.types.php
  21. 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. 22. PHP + MONGODB “SCRIPT INJECTION” Exemplos:Requisição: www.example.com?usr[$ne]=barScript: db.execute(‘codigoJavascript’)
  23. 23. PHP + MONGO–INSTALAÇÃO DO DRIVER pecl install mongo php.ini: extension=mongo.so
  24. 24. PHP + MONGO– INSTALAÇÃO DO DRIVER1.  https://github.com/mongodb/mongo-php- driver/downloads 2.  Copiar para a pasta de extensões do PHP(.dll ou .so)
  25. 25. PHP + MONGO – CONECTANDO AO MONGODB<?php $connection = new Mongo(‘localhost:27017’); ?>
  26. 26. PHP + MONGO – INSERINDO DADOS<?php $connection->dbName->collection->insert( array(‘field’=>’value’) ); ?>
  27. 27. PHP + MONGO – RETORNANDO DADOS<?php $id = new MongoId(‘4f9af7fd08e9243347’); $connection->dbName->collection->findOne( array(‘_id’=>$id) ); ?>
  28. 28. PHP + MONGO – ATUALIZANDO DADOS<?php $addresses->update( array(‘_id’=>new MongoId(‘4f9af7fd08e9’)) array(‘$set’=>array(‘zip’=>’1001’) ); Adicionar ao documento ?>
  29. 29. PHP – REMOVENDO DADOS<?php $where =‘_id’=>new MongoId(‘4f9af7fd08e9’); $addresses->remove( $where, array(‘justOne’=>true) ); ?>
  30. 30. PHP + MONGO – GRIDFSv  Utilizado para armazenar grandes arquivos v  Associa metadados aos arquivos v  Separa arquivos em “chunks” v  Utiliza a classe MongoGridFS
  31. 31. PHP – REMOVENDO DADOS<?php $db = new Mongo(); $grid = $db->getGridFS(); $grid->storeFile(‘file.txt’, array(‘metadata’=> ( ‘date’ =>new MongoDate() )) )); ?>
  32. 32. PHP + MONGO – REST APIv  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. 33. PHP + MONGO – REST APIv  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. 34. PHP + MONGO – REST API Exemplo:http://localhost:28017/mongophp/user/find
  35. 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. 36. PHP + MONGO – ORM’Sv  Symfony 2: sfStoragePerformancePlugin v  CodeIgniter: MongoDB-CodeIgniter-Driver
  37. 37. PHP + MONGO – DESAFIOCADASTRAR GRANDE QUANTIDADE DE IMAGENS NO BANCO NOSQL
  38. 38. PHP – REFERÊNCIAS
  39. 39. PHP – REFERÊNCIAS v  http://www.mongodb.org/ http://devzone.zend.com/1730/getting-started-with-mongodb-and-php/
  40. 40. PHP + MONGO OBRIGADO!

×