Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHPMongoDB

2,157 views

Published on

Workshop de PHP + MongoDb no Nosql Ba

  • Be the first to comment

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!

×