phpmongodb
-
Upload
michel-felipe -
Category
Documents
-
view
119 -
download
0
Transcript of phpmongodb
APRESENTAÇÃO
Analista de Sistemas na Prodeb
Formado em Redes de Computadores
Pós-Graduando em Eng. de Software
AGENDA MongoDb: Características
Download, instalação e Comandos Shell
Inserindo, retornando e removendo dados via shell
PHP e MongoDB: Por que utilizá-los juntos?
Conexão PHP com Mongo e CRUD
Conceito de “Chave Primária”
ORM’s para PHP + Mongo
MONGO E NOSQL
Not only SQL – Banco de dados não relacional
Foco em “escalabilidade” e “desempenho”
Tipos: Baseado em Grafos, Orientado a colunas
MONGODB - CARACTERISTICAS
Nosql open source baseado em documentos
Fácil utilização
Utiliza uma API OO Javascript
MONGODB - DOCUMENTOS
MONGODB - CARACTERISTICAS
Database
Collections
Documents
MONGODB - CARACTERISTICAS
BSON – Binary-encoded JSON
Obs: Utilizar o tipo “MongoDate” para datas
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
Problemas podem acontecer• Crash, conexão não finalizada corretamente
Necessário executar um “repair” nas bases
“old lock file”, pode indicar a remoção do arquivo
“mongod.lock”
MONGODB – CONEXÃO: AUTENTICAÇÃO
Provê segurança para as bases de dados
Geralmente não é necessário para ambientes de “teste”
Utiliza-se o argumento opcional “- - auth” na conexão
MONGODB – CRUD NO BASH
Método db.collection.insert( );
Método db.collection.find( ) e
db.collection.findOne( );
Método db.collection.remove( );
Método db.collection.update( ) e
db.collection.save( );
MONGODB – MAPREDUCE
Mapeia os dados, usando um valor do documento como
condição
Muito parecido com o “GROUP BY”
Reduz os valores mapeados, associando uma informação
MONGODB – MAPREDUCE
Exemplo:
Agrupamento - Tags por usuários
PHP + MONGODB?
Gerenciar dados em larga escala
ORM’s geralmente não são bons em desempenho
As vezes é necessário alternativas:”MemCache,
Raid,Cluster…”
PHP + MONGODB – CLASSES BASE
Database: Mongo/
MongoDBCollections:
MongoCollection Document
s:MongoCur
sor
PHP + MONGODB – CLASSES DE TIPOS DE DADOS
ID:MongoI
d
ID:MongoCo
de
ID:MongoDat
eID:
MongoRegex
ID:MongoBinD
ata
Obs: Existem mais classes em: http://br2.php.net/manual/en/mongo.types.php
PHP + MONGODB “SCRIPT INJECTION”
Semelhante ao SQL Injection
Utiliza-se de código Javascript
Técnicas de prevenção Request Injection: Forçar cast para string Utilizar classe MongoCode para código javascript 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/d
ownloads
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
Utilizado para armazenar grandes arquivos
Associa metadados aos arquivos
Separa arquivos em “chunks”
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
Acesso aos dados usando requisição HTTP
Interfaces Especiais: Sleepy Mongoose (Python) MongoDB Rest(Node.js) MongoDB Java Rest server
PHP + MONGO – REST API
Acesso nativo de “somente leitura”
Necessário o parâmetro “- - rest” no bash/prompt
Acessível através porta padrão: 28017
PHP + MONGO – REST API
Exemplo:
http://localhost:28017/mongophp/user/find
PHP + MONGO – ORM’S
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( );
Kohana: MangoDB
PHP + MONGO – ORM’S
Symfony 2: sfStoragePerformancePlugin
CodeIgniter: MongoDB-CodeIgniter-Driver
PHP + MONGO – DESAFIO
CADASTRAR GRANDE QUANTIDADE
DE IMAGENS NO BANCO NOSQL
PHP – REFERÊNCIAS
PHP – REFERÊNCIAS
http://www.mongodb.org/
http
://devzone.zend.com/1730/getting-started-with-mongodb-an
d-php/
PHP + MONGO
OBRIGADO!