[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
-
Upload
vinicius-de-sa -
Category
Technology
-
view
1.116 -
download
0
description
Transcript of [LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
PHP 5.4 + MongoDBConceitos e prática
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
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;
PHP, mas quem usa?Facebook;Google;WikiMedia (WikiPedia);Yahoo;Bank of America;Wordpress.
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
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
Testando a instalação
cd ˜/mkdir testes || cd testesecho "<?php phpinfo(); ?>" > index.phpsudo php -S 127.0.0.1:80
Resultado da instalação... :)
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.
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.
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);
Então, o que quer dizer NoSQL?
Tipos de bancos NoSQL ! =)
Wide Column Store;Document Store;Key Value;Graph Databases;
Wide Column Store
Cassandra (Apache);
Big Table (Google);
Suporte a grande quantidade de linhas e colunas;
Subcolunas;
Exemplos:
Documents Store
MongoDB (10gen);
CouchDB (Apache);
Baseado em docs XML ou JSON;
Localização por ID ou qualquer outro registro;
Exemplos:
Key Value
MemCached;
SimpleDB;
Suporte a maior carga de dados;
Maior escalabilidade;
Exemplos:
Graph Store
Neo4j;
monetdb;
Armazenamento de objetos;
Navegabilidade pelos objetos;
Exemplos:
Mas então, qual eu devo utilizar?
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!
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.;
Casos de Uso Mongo
E pra instalar?
Acesse: http://www.mongodb.org/downloadsBaixe a release para seu sistema;Descompacte e pronto. :)
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!
Instalação Mongo: 2tar -zxvf mongodb-osx-x86_64-2.2.0.tgz
Instalação Mongo: 3
sudo cp mongodb-osx-x86_64-2.2.0/bin/* /usr/bin/
Instalação Mongo: 4sudo mkdir -p /data/dbsudo chown `id -u` /data/db
E agora??sudo mongod
Como eu sei que funcionou?Acesse: http://127.0.0.1:28017
E quem já sabe SQL?
E quem já sabe SQL?
E como é que uso as duas coisas? PHP+Mongo
Extensão Mongo p/ PHPsudo pecl install mongoecho "extension=mongo.so" >> /usr/local/lib/php.ini
SQL -> Mongo+PHP
http://www.php.net/manual/en/mongo.sqltomongo.php
Conectando ao Mongo
Inserindo em uma Collection
Removendo em uma Collection
Atualizando em uma Collection
Buscando em uma Collection
Projeto prático
CRUD(inserir, buscar, atualizar e deletar);Dados de uma pessoa:
nome, telefones, email, observacoes, data de nascimento
Conteúdo disponível em:
[email protected] github.com/[email protected]
Obrigaduuuuuu!