46
com Jean Carlo Nascimento aka SUISSA

Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

Embed Size (px)

Citation preview

Page 1: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

com

Jean Carlo Nascimento aka SUISSA

Page 2: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

github.com/suissaabout.me/suissa

nosqlbr.com.br@osuissa

Page 3: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

NOSQLO que é?

Quais são?Por que usar?

Onde usar?

Page 4: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 5: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 6: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 7: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 8: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 9: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 10: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 11: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 12: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

key/value

Page 13: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 14: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

graph

Page 15: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 16: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 17: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 18: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 19: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 20: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 21: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 22: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 23: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 24: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

Terminologia

SQL RDBMS

DATABASETABLEROWSQUERYINDEXPARTITION

MongoDB    

DATABASECOLLECTIONJSON DOCUMENTQUERYINDEXSHARD

Page 25: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

INSERIR

INSERT INTO USERS VALUES(1,1)

$db->users->insert(array("a" => 1, "b" => 1));

//ou$query = array(    'usuario'    => "suissa",    'email' => "[email protected]");

$db->collection->insert($query);

Page 26: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

CONSULTAR

select * from tabela where nome = 'Jean Nascimento' 

$filter = array( "nome" => "Jean Nascimento" );$cursor = $collection->find($filter);foreach ($cursor as $arr) {     echo $arr["nome"]. " - " . $arr["_id"] . "<br />"; } 

Page 27: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

CONSULTAR

select * from tabela where nome LIKE 'J___ Nascimento'

$filter = array( "nome" => new MongoRegex('/^J[a-Z]{3}Nascimento/i' );

select * from tabela where nome LIKE '%Nasc%' 

$filter = array(   'title' => new MongoRegex('/.Nasc./i') );

Page 28: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

ALTERAR

update tarefas set Tarefa='Terminar artigo' where Usuario='suissa'

$db->collection->update(    array('Usuario'=> 'suissa'),     array('$set' => array('Tarefa' => 'Terminar artigo')));   

update users set a=a+2 where b='q'

$db->users->update(array("b" => "q"), array('$inc => array("a" => 2)));

Page 29: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

EXCLUIR

delete from usuarios where Usuario = 'suissa'

$db->collection->remove(array('Usuario'=> 'suissa'));

Page 30: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

EXPLAIN

EXPLAIN SELECT * FROM users WHERE z=3

$db->users->find(array("z" => 3))->explain()

Page 31: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 32: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 33: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa
Page 34: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

 

Page 35: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

Talk is cheap. Show me the 

code.

Page 36: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

 $nome_banco = ‘prioridades’;$nome_collection = ‘tarefas’;$this->conexao = new Mongo();$this->db = $this->conexao->$nome_banco;$this->collection = $this->db->$nome_collection;

Page 37: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

 

function inserir(){    $this->query = array(    ‘UsuarioID’ => $this->UsuarioID,    ‘Usuario’ => $this->Usuario,    ‘Tarefa’ => $this->Tarefa,    ‘Tipo’ => $this->Tipo,//Obrigatório, idéia, outro    ‘Prioridade’ => $this->Prioridade);    $this->collection->insert($this->query);}

Page 38: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

 

function excluir(){    $this->mongo_id = new MongoID($this->_id);    $this->collection->remove(array(‘_id’ => $this->mongo_id));}    

Page 39: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

 

function mudar_tarefa(){    $this->mongo_id = new MongoID($this->_id);    $this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$set’ => array(‘Tarefa’ => $this->Tarefa)), false);} 

Page 40: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

 

function mudar_tarefa(){    $this->mongo_id = new MongoID($this->_id);    $this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$set’ => array(‘Tarefa’ => $this->Tarefa)), false);} 

Page 41: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

 function mudar_prioridade(){    $this->mongo_id = new MongoID($this->_id);    if($this->modo==’up’){        $this->collection->update(            array(‘_id’ => $this->mongo_id),                             array(‘$inc’ => array(‘Prioridade’ => 1)),             false        );    } elseif($this->modo==’down’){        $this->collection->update(            array(‘_id’ => $this->mongo_id),             array(‘$inc’ => array(‘Prioridade’ => -1)),             false        );    }}

Page 42: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

 

https://github.com/suissa/mongodb-exemplos

Page 43: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

Frameworks

CakePHPCodeigniterDoctrineDrupalFat-FreeKohana

LithiumMemcachedSymfony 2TechMVCVorkYiiZend

Page 44: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

Standalone Tools

ActiveMongo

MapReduce API

Mongofilesystem

Mandango

MongoDb PHP ODM

Mongodloid

MongoQueue

MongoRecord

Morph

simplemongophp

Uniform Server 6-Carbo with MongoDB and phpMoAdmin

Page 45: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa

Referências

http://www.nosqlbr.com.br/http://nosql-database.org/http://pt.wikipedia.org/wiki/NoSQLhttp://www.mongodb.org/

Page 46: Com Jean Carlo Nascimento aka SUISSA. github.com/suissa about.me/suissa nosqlbr.com.br @osuissa