PHPMongoDB

2.037 visualizações

Publicada em

Workshop de PHP + MongoDb no Nosql Ba

0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.037
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
24
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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!

×