• Like
  • Save
Palestra MongoDB
Upcoming SlideShare
Loading in...5
×
 

Palestra MongoDB

on

  • 1,701 views

Palestra

Palestra

Statistics

Views

Total Views
1,701
Views on SlideShare
1,695
Embed Views
6

Actions

Likes
2
Downloads
23
Comments
0

1 Embed 6

http://paper.li 6

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Palestra MongoDB Palestra MongoDB Presentation Transcript

    • {nome : “ Jamerson Silva ”, email : “ [email_address] ”}
    • 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 - não precisa parar o site para adicionar uma nova coluna na tabela
      • Escrito em C, alta performance
        • Suporta Índices ;
        • Auto-Sharding – preparado para escalar horizontalmente ;
        • Insert/Update - Dados armazenados em memória , em segundo plano, para serem gravados em disco.
      • Suporta tipos ricos
        • datas, expressões regulares, códigos, dados binários
        • GridFS para armazenamento eficiente de arquivos binários grandes (BLOB)
    • Quem Usa? http://www.mongodb.org/display/DOCS/Production+Deployments
    • Modelo de Dados
      • Databases
      • Coleções
      • Documentos
      • BSON
    • Database
      • Agrupamento físico de coleções
      • Arquivos de dados
        • pré-alocação: 64 MB -> 128MB -> 256MB -> 512 MB -> 1GB -> 2GB -> ...
    • Coleções
      • Agrupamento lógico de documentos
        • Equivale às tabelas do RDBMs
      • Schema-free
        • pré-alocação: 64 MB -> 128MB -> 256MB -> 512 MB -> 1GB -> 2GB -> ...
      • Número ilimitado de documentos
    • Documentos
      • Unidade de armazenamento
        • equivale às linhas do RDBMs
      • Todos devem ter um _id único
      • Tamanho máximo de 4MB
        • para objetos maiores, use GridFS
    • BSON
      • Objetos no MongoDB
        • Formato de armazenamento de dados de documentos
      • "Binary JSON"
      • Permite representação de tipos ricos
        • algumas formas de dados que não fazem parte do padrão JSON (Date, BinData, outros)
    • Legal! Como começar?
      • Baixando o MongoDB
      • Binários disponíveis em 32/64 bit para Linux, Windows, OS X e Solaris.
      • Versão 32 bit linux:
        • http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.0.tgz
      • Versão 64 bit linux:
        • http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz
    • E agora? Como Instalar?
      • Extrair conteúdo do arquivo para uma pasta
        • Exemplo: /mongodb
      • Crie uma pasta para armazenar os dados
        • Dê permissão 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
    • Pronto? É só isso?...
    • Instalando o Driver PHP
      • Via pecl
        • pecl install mongo
      • Via GitHub:
        • baixar source de http://github.com/mongodb/mongo-php-driver/tarball/master
        • Extrair conteúdo 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 linha extension=mongo.so
      • Reiniciar apache
    • de quebra...
      • Shell
        • suapastamongodb/bin/mongo
      • Interface web
        • http://localhost:28017
      • Ferramentas
        • importar suapastamongodb/bin/mongoimportjson
        • exportar suapastamongodb/bin/mongoexport
        • backup suapastamongodb/bin/mongodump
        • Restore suapastamongodb/bin/mongorestore
    • Vamos ao que interessa?
      • Abrir uma conexão
        • $connection = new Mongo();
        • /* host padrão localhost, porta padrão 27017 */
        • $connection = new Mongo( "example.com" );
        • /* host remoto example.com, port padrão */
        • $connection = new Mongo( "example.com:65432" );
        • /* host example.com, porta 65432 */
      • Autenticação
        • É possível adicionar autenticação individual para cada database, inserindo usuário/senha na coleção "admin".
    • Metendo a mão na massa
      • Selecionando um Banco de dados
        • $dbMongo = $conexaoMongo->selectDB(‘nomedobanco’);
        • $dbMongo = $conexaoMongo->nomedobanco; (mágica? __set)
      • Selecionando uma Coleção (tabela)
        • $dbMongo = $dbMongo->selectCollection(‘nomedacolecao’);
        • $dbMongo = $dbMongo->nomedacolecao; (mágica? __set)
    • Inserindo um documento
      • Criando um Documento (linha)
        • Em PHP, documentos são nativamente Arrays;
        • $doc = array(“nome” => “Jamerson Silva”, “email” => “jamersonweb@gmail.com”);
      • Salvando um Documento em uma Coleção
        • $colecaoMongo->save($doc);
        • Se seu documento ($doc) não tiver um "_id", mongodb irá atribuir um MongoID automaticamente (12 bytes)
      • Recuperando um Documento
        • $documento = $colecaoMongo->findOne();
        • Este método retorna um array (objeto Mongo/Documento)
    • E os “wheres”?
      • Selects
        • $gt, $lt, $gte, $lte, $eq, $neq: >, <, >=, <=, ==, !=
        • $in, $nin
        • $size, $exists
        • $where: apenas para expressões javascript
        • group()
        • limit()
        • skip ()
    • Tem mais?
      • Updates
        • $set
        • $unset
        • $push
        • $pull
        • $inc
    • Ele faz o MySQL faz?
      • MySQL
        • MySQL = SELECT count(*) FROM table
      • MongoDB
        • MongoDB = $collection->count();
      • MySQL
        • SELECT count(*) FROM table WHERE foo = 1
      • MongoDB
        • $collection->find(array(&quot;foo&quot; => 1))->count();
    • 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));
    • Suporta limites - paginação
      • 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);
    • Indexando campos
      • Criando um Índice
        • $colecao->ensureIndex(array(“campo&quot; => 1));
        • 1 ascendente, -1 descendente
      • Removendo um Índice
        • $colecao->deleteIndex(“campo”);
      • Índices Únicos
        • $colecao->ensureIndex(array(“campo&quot; => 1), array(&quot;unique&quot; => 1));
    • Ao infinito e Além
      • No momento, mongodb só pode em hosts dedicados / VPS
      • Desenvolvedores estão propondo suporte em hosts compartilhados
      • Documentação da extensão mongophp:
        • www.php.net/mongodb
      • Documentação oficial é bem completa:
        • www.mongodb.com
      • Lista de discussão com participação ativa e prestativa
        • http://groups.google.com/group/mongodb-user
    • Obrigado!