[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

42
PHP 5.4 + MongoDB Conceitos e prática

description

Mini-curso sobre PHP 5.4 e MongoDB no Latino Ware 2012.

Transcript of [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Page 1: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

PHP 5.4 + MongoDBConceitos e prática

Page 2: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Quem fala?Vinícius de Sá - @vdssg

19 anos

Desenvolve na Móveis Simonetti

Estuda Análise e Desenv. de Sistemas na UNISAM

Ama tecnologia e qualquer coisa que agilize as coisas

Programa em PHP, JavaScript, Python

Page 3: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

PHPPHP: Hypertext PreprocessorLinguagem de programação OpenSource;Criada em 1995 por Rasmus Lerdorf;Sintaxe like C/C++ e Perl;Orientado a Objetos;6a Linguagem no Ranking TIOBE;20 mi de WebSites, em mais de 1 mi de servidores;

Page 4: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

PHP, mas quem usa?Facebook;Google;WikiMedia (WikiPedia);Yahoo;Bank of America;Wordpress.

Page 5: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Tá, mas como eu faço pra instalar?

Debian, Ubuntu, Mint: apt-get install php5;Fedora, CentOS, RedHat: yum install php;OpenSuse: zypper install php5;OS X: port install phpWindows(aff): http://windows.php.net/downloads

Page 6: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Mas... no nosso caso.wget http://br1.php.net/distributions/php-5.4.7.tar.bz2tar -jxvf php-5.4.7.tar.bz2cd php-5.4.7./configure --disable-allmakesudo make install

Page 7: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Testando a instalação

cd ˜/mkdir testes || cd testesecho "<?php phpinfo(); ?>" > index.phpsudo php -S 127.0.0.1:80

Page 8: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Resultado da instalação... :)

Page 9: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

E o que o PHP tem de bom?

Documentação;Certificação oficial - Zend Technologies;Modelo orientado a objeto;Restful, SOAP, AJAX;Namespaces;Closures;Traits;Interface CLI;Servidor Web embutido para testes;Ecossistema (Composer, git, perl, pecl);Frameworks (Zend, Symfony, CodeIgniter, Yii);ORM (Doctrine2, Propel);Instalação de extensões.

Page 10: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
Page 11: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

E o NoSQL? O que é?

NoSQL são diferentes sistemas de armazenamentoque vieram para suprir necessidades em demandas onde os bancos de dadostradicionais (relacionais) são ineficazes.

Page 12: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Bancos NoSQL são...Sem relacionamentos;Distribuidos;Open-Source;Map/Reduce;Altamente escaláveis(horizontalmente);Schema-free;Fáceis ao replicar;Simples(instalação, API, etc);NO ACID - Tolerância à falhas;Robustos(Grandes quantidades de carga e dados);

Page 13: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Então, o que quer dizer NoSQL?

Page 14: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Tipos de bancos NoSQL ! =)

Wide Column Store;Document Store;Key Value;Graph Databases;

Page 15: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Wide Column Store

Cassandra (Apache);

Big Table (Google);

Suporte a grande quantidade de linhas e colunas;

Subcolunas;

Exemplos:

Page 16: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Documents Store

MongoDB (10gen);

CouchDB (Apache);

Baseado em docs XML ou JSON;

Localização por ID ou qualquer outro registro;

Exemplos:

Page 17: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Key Value

MemCached;

SimpleDB;

Suporte a maior carga de dados;

Maior escalabilidade;

Exemplos:

Page 18: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Graph Store

Neo4j;

monetdb;

Armazenamento de objetos;

Navegabilidade pelos objetos;

Exemplos:

Page 19: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Mas então, qual eu devo utilizar?

Page 20: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

O banco certo pra situação certa!

Cada ferramenta é boa em uma área especifíca, não tem como atender todas as situações com um único tipo de banco.Então, cuidado!

Page 21: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

E onde entra o MongoDB?

Alternativa para o velho M do LAMP;Altamente escalável;Totalmente sem esquemas;Fácil acesso à informação;Suporte a várias linguagens e O.S.;

Page 22: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Casos de Uso Mongo

Page 23: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

E pra instalar?

Acesse: http://www.mongodb.org/downloadsBaixe a release para seu sistema;Descompacte e pronto. :)

Page 24: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Instalação do Mongo: 1

As versões 32-bits só suportam bases com até 2GB e não são recomendados para produção!

Page 25: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Instalação Mongo: 2tar -zxvf mongodb-osx-x86_64-2.2.0.tgz

Page 26: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Instalação Mongo: 3

sudo cp mongodb-osx-x86_64-2.2.0/bin/* /usr/bin/

Page 27: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Instalação Mongo: 4sudo mkdir -p /data/dbsudo chown `id -u` /data/db

Page 28: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

E agora??sudo mongod

Page 29: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Como eu sei que funcionou?Acesse: http://127.0.0.1:28017

Page 30: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

E quem já sabe SQL?

Page 31: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

E quem já sabe SQL?

Page 32: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

E como é que uso as duas coisas? PHP+Mongo

Page 33: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Extensão Mongo p/ PHPsudo pecl install mongoecho "extension=mongo.so" >> /usr/local/lib/php.ini

Page 34: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

SQL -> Mongo+PHP

http://www.php.net/manual/en/mongo.sqltomongo.php

Page 35: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Conectando ao Mongo

Page 36: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Inserindo em uma Collection

Page 37: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Removendo em uma Collection

Page 38: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Atualizando em uma Collection

Page 39: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Buscando em uma Collection

Page 40: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Projeto prático

CRUD(inserir, buscar, atualizar e deletar);Dados de uma pessoa:

nome, telefones, email, observacoes, data de nascimento

Page 42: [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB

Obrigaduuuuuu!