Palestra mongoDB

  • 838 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
838
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
6
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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 - 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)
  • 3. Quem Usa? http://www.mongodb.org/display/DOCS/Production+Deployments
  • 4. Modelo de Dados
    • Databases
    • Coleções
    • Documentos
    • BSON
  • 5. Database
    • Agrupamento físico de coleções
    • Arquivos de dados
      • pré-alocação: 64 MB -> 128MB -> 256MB -> 512 MB -> 1GB -> 2GB -> ...
  • 6. 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
  • 7. 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
  • 8. 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)
  • 9. 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
  • 10. 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
  • 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 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
  • 13. 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
  • 14. 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".
  • 15. 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)
  • 16. 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)
  • 17. E os “wheres”?
    • Selects
      • $gt, $lt, $gte, $lte, $eq, $neq: >, <, >=, <=, ==, !=
      • $in, $nin
      • $size, $exists
      • $where: apenas para expressões javascript
      • group()
      • limit()
      • skip ()
  • 18. Tem mais?
    • Updates
      • $set
      • $unset
      • $push
      • $pull
      • $inc
  • 19. 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();
  • 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 - 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);
  • 22. 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));
  • 23. 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
  • 24. Obrigado!