Palestra mongoDB
date post
24-May-2015Category
Documents
view
901download
3
Embed Size (px)
Transcript of Palestra mongoDB
- 1. {nome : Jamerson Silva , email : [email_address] }
2. Mongo?Que danado isso?
- banco de dados orientado a documentos
- Usa o formato BSON: Binary JSON. Tudo um documento ( die ORM );
- Documentos aninhados, reduz a necessidade de JOINS ;
- Schema-less-no precisa parar o site para adicionar uma nova coluna na tabela
- Escrito em C, alta performance
- Suportandices ;
- Auto-Sharding preparado paraescalar horizontalmente ;
- Insert/Update- Dadosarmazenados em memria , em segundo plano, para serem gravados em disco.
- Suporta tipos ricos
- datas, expresses regulares, cdigos, dados binrios
- GridFSpara armazenamento eficiente de arquivos binrios grandes (BLOB)
3. Quem Usa? http://www.mongodb.org/display/DOCS/Production+Deployments 4. Modelo de Dados
- Databases
- Colees
- Documentos
- BSON
5. Database
- Agrupamento fsico de colees
- Arquivos de dados
- pr-alocao: 64 MB -> 128MB -> 256MB -> 512 MB -> 1GB -> 2GB -> ...
6. Colees
- Agrupamento lgico de documentos
- Equivale s tabelas do RDBMs
- Schema-free
- pr-alocao: 64 MB -> 128MB -> 256MB -> 512 MB -> 1GB -> 2GB -> ...
- Nmero ilimitado de documentos
7. Documentos
- Unidade de armazenamento
- equivale s linhas do RDBMs
- Todos devem ter um _id nico
- Tamanho mximo de 4MB
- para objetos maiores, use GridFS
8. BSON
- Objetos no MongoDB
- Formato de armazenamento de dados de documentos
- "Binary JSON"
- Permite representao de tipos ricos
- algumas formas de dados que no fazem parte do padro JSON (Date, BinData, outros)
9. Legal! Como comear?
- Baixando o MongoDB
- Binrios disponveis em 32/64 bit para Linux, Windows, OS X e Solaris.
- Verso 32 bit linux:
- http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.0.tgz
- Verso 64 bit linux:
- http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz
10. E agora? Como Instalar?
- Extrair contedo do arquivo para uma pasta
- Exemplo:/mongodb
- Crie uma pasta para armazenar os dados
- Dpermisso de escrita ;
- Exemplo:/data/db
- Execute o daemon
- Suapastamongodb/bin/mongod dbpath suapasta/de/dados
- Execute o daemon
- Exemplo:suapastamongodb/bin/mongod run
- Via apt-get(linux fedora, ubuntu)
- http://www.mongodb.org/display/DOCS/Building+for+Linux
11. Pronto? s isso?... 12. Instalando o Driver PHP
- Via pecl
- pecl install mongo
- Via GitHub:
- baixar source de http://github.com/mongodb/mongo-php-driver/tarball/master
- Extrair contedo de tar.gz
- Acessar pasta e digitar no console:
- $ phpize
- $ ./configure
- $ sudo make install
- Altere o arquivo php.ini
- Adicione no fim do arquivo a linhaextension=mongo.so
- Reiniciar apache
13. de quebra...
- Shell
- suapastamongodb/bin/mongo
- Interface web
- http://localhost:28017
- Ferramentas
- importarsuapastamongodb/bin/mongoimportjson
- exportarsuapastamongodb/bin/mongoexport
- backupsuapastamongodb/bin/mongodump
- Restoresuapastamongodb/bin/mongorestore
14. Vamos ao que interessa?
- Abrir uma conexo
- $connection = new Mongo();
- /* host padro localhost, porta padro 27017 */
- $connection = new Mongo( "example.com" );
- /* host remoto example.com, port padro */
- $connection = new Mongo( "example.com:65432" );
- /* host example.com, porta 65432 */
- Autenticao
- possvel adicionar autenticao individual para cada database, inserindo usurio/senha na coleo "admin".
15. Metendo a mo na massa
- Selecionando um Banco de dados
- $dbMongo = $conexaoMongo->selectDB(nomedobanco);
- $dbMongo = $conexaoMongo->nomedobanco;(mgica? __set)
- Selecionando uma Coleo(tabela)
- $dbMongo = $dbMongo->selectCollection(nomedacolecao);
- $dbMongo = $dbMongo->nomedacolecao;(mgica? __set)
16. Inserindo um documento
- Criando um Documento(linha)
- Em PHP, documentos so nativamente Arrays;
- $doc = array(nome => Jamerson Silva, email => jamersonweb@gmail.com);
- Salvando um Documento em uma Coleo
- $colecaoMongo->save($doc);
- Se seu documento ($doc) no tiver um "_id", mongodb ir atribuir um MongoID automaticamente (12 bytes)
- Recuperando um Documento
- $documento = $colecaoMongo->findOne();
- Este mtodo retorna um array (objeto Mongo/Documento)
17. E os wheres?
- Selects
- $gt,$lt, $gte, $lte, $eq, $neq: >, =, count();
- MySQL
- SELECT count(*) FROM table WHERE foo = 1
- MongoDB
- $collection->find(array("foo" => 1))->count();
20. Mongo ordena?
- MySQL
- SELECT * FROM table
- WHERE field IN (5,6,7) and enable=1 and worth < 5
- ORDER BY timestamp DESC
- MongoDB
- $filter = array(
- field => array($in => array(5,6,7)),
- enable => 1,
- worth => array($lt => 5)
- );
- $results = $collection->find($filter)->sort(array(timestamp => -1));
21. Suporta limites- paginao
- MySQL
- SELECT * FROM table
- WHERE field IN (5,6,7) and enable=1 and worth < 5
- ORDER BY timestamp DESC LIMIT 10, 20
- MongoDB
- $filter = array(
- field => array($in => array(5,6,7)),
- enable => 1,
- worth => array($lt => 5)
- );
- $cursor = $collection->find($filter);
- $cursor->sort(array(timestamp => -1))->skip(10)->limit(20);
22. Indexando campos
- Criando um ndice
- $colecao->ensureIndex(array(campo" => 1));
- 1 ascendente, -1 descendente
- Removendo um ndice
- $colecao->deleteIndex(campo);
- ndices nicos
- $colecao->ensureIndex(array(campo" => 1), array("unique" => 1));
23. Ao infinito e Alm
- No momento, mongodb s pode em hosts dedicados / VPS
- Desenvolvedores esto propondo suporte em hosts compartilhados
- Documentao da extenso mongophp:
- www.php.net/mongodb
- Documentao oficial bem completa:
- www.mongodb.com
- Lista de discusso com participao ativa e prestativa
- http://gro