introdução ao nosql
DESCRIPTION
Mini Curso introdutório sobre NoSQL,TRANSCRIPT
![Page 1: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/1.jpg)
O que é NoSQL?O que é NoSQL? Uma introdução prática em 4 passos!Uma introdução prática em 4 passos!
Professor Paulo Roberto Donatilio RegoProfessor Paulo Roberto Donatilio [email protected]@gmail.com.br
@btolinux@btolinuxhttp://gentecomum.blogspot.comhttp://gentecomum.blogspot.com
![Page 2: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/2.jpg)
Sobre MimSobre Mim
➔ Desenvolvedor de sistemas desde 2001;➔ Linguagens:
● Delphi, PHP, Lazarus, Java;
➔ Bancos de Dados:● Mysql, Interbase, Firebird, MongoDB;
➔ Graduado em Ciências da Computação pelo Pitágoras de Teixeira de Freitas;
➔ Pós graduando em Engenharia de Software;➔ Professor da UnesulBahia;
![Page 3: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/3.jpg)
SumárioSumário
➔ Analisando o Problema:● Afinal o que é NoSQL?
➔ Um Novo Despertar:● A quebra de um paradigma.
➔ Vamos Construir:● Grandes obras devem ser iniciadas.
➔ Rumo ao Novo Mundo:● Agora é com vocês.
![Page 4: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/4.jpg)
Analisando o ProblemaAnalisando o Problema➔ As vezes pensar é As vezes pensar é
mais importante do mais importante do que agir.que agir.
![Page 5: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/5.jpg)
““Vamos por partes!”Vamos por partes!”
➔ Questões Relevantes:● Pra que surgiu o NoSQL?● Como surgiu o NoSQL?● Qual a diferença entre SQL e NoSQL?● Qual a estrutura de um Banco Não Relacional?● Quais os produtos mais comuns?● Qual desses a gente vai ver hoje?● Como que instala o MongoDB?
![Page 6: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/6.jpg)
Como Surgiu o NoSQL?Como Surgiu o NoSQL?
➔ Qual a Necessidade?● Novo Cenário: Cloud Computing;● Volumes de dados on Web cada vez maiores;● Necessidade de grande storages;● A estrutura de DBs atual não suporta a
escalabilidade exigida pela Nuvem;● Aplicativos com respostas mais rápidas;● Diminuir o custo com DBM; (DataBase Managements);● Diminuir o custo com DBA; (DataBase Administrators);
![Page 7: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/7.jpg)
Como Surgiu o NoSQL?Como Surgiu o NoSQL?
➔ E Quando Surgiu?● 1998, primeira vez utilizado o Termo NoSQL;● O DB não possuía interface SQL;● O movimento iniciou-se Open Source;● Só ganhou força em 2009 com a criação de um
seminário para debater bancos de dados Distribuídos;
![Page 8: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/8.jpg)
NoSQL X SQL? NoSQL X SQL? É isso mesmo?É isso mesmo?
➔ E Começam os Trabalhos:● A ideia é ser diferente do modelo relacional, o certo
então seria chamar noREL;● Um banco NoREL (esse nome não pega), supre as
necessidades deixadas por um banco YesRel:– Alta performance, escalabilidade, replicação, sub-
Colunas, etc; ● Como é um conceito iniciado no Open Source, a
ideia foi debatida em todo mundo;
![Page 9: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/9.jpg)
Bancos Não Relacionais! Bancos Não Relacionais! Agora simAgora sim
➔ NoSQL é mais commercial!● Bancos de Dados Horizontais;
– Mais dados Mais Servidores com:– Baixo Custo;– Grande poder de processamento;– Facilidade de Manutenção;
● Então aparecem diversas formas de se ver o mundo!
![Page 10: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/10.jpg)
Bancos Não Relacionais! Bancos Não Relacionais! Como assim?Como assim?
➔ How This Stuff Work?● Como o Banco NoSQL manipula os dados?
– Key/Value Store;
– Wide Columns Store;
– Document Store;
– Graph Store;
– Column Oriented Store;
![Page 11: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/11.jpg)
Quais são os Produtos?Quais são os Produtos?
=
![Page 12: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/12.jpg)
Quem são as empresas?Quem são as empresas?
...
![Page 13: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/13.jpg)
O escolhido de Hoje é:O escolhido de Hoje é:
➔ Open Source;➔ Hight Performance;➔ Schema-Free;➔ Object Oriented;➔ Scalable;
![Page 14: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/14.jpg)
How to install this How to install this Database?Database?
➔ Processo de Instalação: ➔ No Ubuntu é extremamente fácil...
● Entre no Synaptic e escolha o MongoDB e instale;
➔ No Windows então mais fácil ainda...● Baixa o arquivo extraia em uma pasta e pronto!
![Page 15: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/15.jpg)
Um Novo DespertarUm Novo DespertarAcordar cedo pode Acordar cedo pode ser chato as vezes, ser chato as vezes, mas geralmente é mas geralmente é compensador.compensador.
![Page 16: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/16.jpg)
““No principio disseram: No principio disseram: Haja Google e ouve GoogleHaja Google e ouve Google”!!!”!!!
➔ Nossos primeiros passos:● Como que funciona o MongoDB?● Iniciando nosso servidor MongoDB!● Novos conceitos, novos nomes!● Databases, Coleções, Documentos, BSON!● Hum legal, tem mais tio?
![Page 17: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/17.jpg)
Então, já que é tudo issoEntão, já que é tudo issoo que a gente faz agora?o que a gente faz agora?
➔ Vamos iniciar os trabalhos:● Para Acionar o banco de dados mongoDB
– Vamos criar uma pasta para testar nossos bancos ok?– mongodb/data/db/– Agora, ao acionar o servidor, informa o caminho:
– mongod --dbpath mongodb/data/db
– Servidor ligado agora reserve!
![Page 18: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/18.jpg)
O Novo O Novo Quarteto FantásticoQuarteto Fantástico
➔ Os 4 Cavaleiros do Apocalipse:
● Databases;
● Coleções;
● Documentos;
● BSON;
![Page 19: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/19.jpg)
O Novo O Novo Quarteto FantásticoQuarteto Fantástico
➔ Databases:● Agrupamento físico de coleções● Um arquivo com os “namespaces”;
– Nome das coleções;● Aonde Guarda os dados;
![Page 20: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/20.jpg)
O Novo O Novo Quarteto FantásticoQuarteto Fantástico
➔ Coleções:● Agrupamento lógico de documentos em um
database;● Equivalente a tabela do YesREL;
![Page 21: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/21.jpg)
O NovoO NovoQuarteto FantásticoQuarteto Fantástico
➔ Documentos:● Unidade de armazenamento;● Tipo assim a linha da tabela, morou?● Cada documento tem um id único em relação a
coleção;● Tamanho máximo 4MB;
● Volumes > 4MB use GridFS;
![Page 22: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/22.jpg)
O Novo O Novo Quarteto FantásticoQuarteto Fantástico
➔ BSON:● Formato de armazenamento de dados de
documentos ou objetos;● Binary Json;● Json tem algumas limitações;● O Binary Json arquiva alguns tipos a mais de
dados, por exemplo: Date e e BinData;● Da forma mais grosseira que se pode explicar é
equivalente ao MyISAM ou InnoDB;
![Page 23: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/23.jpg)
Vamos ConstruirVamos Construir➔ O Importante é dar o O Importante é dar o
primeiro passo... ou primeiro passo... ou colocar a primeira colocar a primeira lajota.lajota.
![Page 24: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/24.jpg)
““Agora é que a chapa vai Agora é que a chapa vai começar a esquentar”!!!começar a esquentar”!!!
➔ Chega de perguntas professor:● Vamos Brincar;● Conhecendo o console do MongoDB;● Dados, dados e mais dados!!!● Alterar, filtrar, fuçar!!● Plugando no PHP.● Métodos Básicos;● Entendendo um CRUD MongoDB x PHP.● (o que é Crud Mesmo?)
![Page 25: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/25.jpg)
Mão na massa pessoalMão na massa pessoal
➔ Ligando o console do MongoDB:● Abram outro terminal, deixem o console anterior
ligado;● Executem o comando:
– mongo;● Apareceu o >? Então tá valendo;● Comandos iniciais:
– help;– Show dbs;– Show collections;
![Page 26: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/26.jpg)
Mão na massa pessoalMão na massa pessoal
➔ Alguns comandos básicos:● Vamos fazer um cadastro básico de colegas aqui
presentes, saber o nome de cada um, a idade e as linguagens de programação que ele acha interessante!
● Para ir cadastrando:● db.cadPart.save({nome:'Paulo Roberto', idade: 29,
lingPref:['java', 'php', 'delphi']});● Vamos ver se cadastrou direito?● db.cadPart.find();● Então ok, cadastrem o resto do povo pra gente poder
criar os filtros!
![Page 27: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/27.jpg)
Mão na massa pessoalMão na massa pessoal
➔ Agora vamos a filtros de verdade:● db.cadPart.find({idade: 25})● It's Me!● for(i=0;i<10;i++){db.cadPart.find({idade: 25})};● Now I talk about de Query Operators:
– $gt '>' $lt - '<'– $lte - '<=' $gte - '>=' $ne - '!=' – $in - 'is in array', $nin - '! in array'
![Page 28: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/28.jpg)
Mão na massa pessoalMão na massa pessoal
➔ Atualizando dados:● db.cadPart.update({idade: 29},{nome:'Claudio
José', idade:25, lingPref['Português']);● Atualizando dados com $pull e $push;● db.cadPart.update({nome:'Claudio José'},{$pull:
{lingPref['Espanhol']});● db.cadPart.update({nome:'Claudio José'},{$push:
{lingPref['Espanhol']});
![Page 29: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/29.jpg)
Mão na massa pessoalMão na massa pessoal
➔ Removendo dados:● Apaga tudo:
– db.cadPart.remove();● Apaga documento selecionado:
– db.cadPart.remove({nome:'Claudio José'});
![Page 30: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/30.jpg)
Conecta isso em uma Conecta isso em uma linguagem de verdade vai!linguagem de verdade vai!
➔ Conceitos Importantes:● Linguagem + Banco = Software;● Um olhar Básico com PHP;● CRUD =
– Create– Retrieve– Update– Delete
![Page 31: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/31.jpg)
Conecta isso em uma Conecta isso em uma linguagem de verdade vai!linguagem de verdade vai!
➔ Conectar o MongoDB ao PHP:● Instalar o php5-dev;● Agora digite:● Sudo pecl install mongo;● Deixa rolar até o final;● Então acesse:
– gedit /ect/php5/apache2/php.ini● Ao final acrescente esta linha:
– extension=mongo.so● Reinicie o apache e está pronto
![Page 32: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/32.jpg)
Escovador de Bits eu Escovador de Bits eu escolho você!escolho você!
➔ Veja só esse código:
$conn_mongodb = new Mongo();
$db = $conn_mongodb->selectDB("blogs");
$col = $db->selectCollection("users");
![Page 33: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/33.jpg)
Escovador de Bits eu Escovador de Bits eu escolho você!escolho você!
➔ Veja só esse código:
$doc = array("_id" => 1,
"email" => "[email protected]",
"nome" => "Joaozinho",
"nivel" => "admin_supremo");
$conn_mongodb->selectDB("blogs")-> selectCollection("users")->save($doc);
![Page 34: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/34.jpg)
Escovador de Bits eu Escovador de Bits eu escolho você!escolho você!
➔ Veja só esse código:
$query = array("nome" => "Joaozinho");
$cursor = $conn_mongodb->selectDB("blogs")-> selectCollection("users")->find($query);
$query = array("nome" => "Joaozinho");
$fields = array("email" => true);
$cursor = $conn_mongodb->selectDB("blogs")-> selectCollection("users")->find($query,$fields);
![Page 35: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/35.jpg)
Escovador de Bits eu Escovador de Bits eu escolho você!escolho você!
➔ Veja só esse código:
$query = array("_id" => "1");
$col = $conn_mongodb->selectDB("blogs")->selectCollection("users");
$cursor = $col->find($query);
while($cursor->hasNext()) {
$doc = $cursor->getNext();
}
$query = array("_id" => "1");
$col = $conn_mongodb->selectDB("blogs")->selectCollection("users");
$doc = $col->findOne($query);
![Page 36: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/36.jpg)
Pelo menos isso vocês Pelo menos isso vocês tem que aprender hoje!!tem que aprender hoje!!
➔ Chegamos a conclusão que:● NoSQL não é uma modinha!● NoSQL não veio para sobrepor o “YesSQL”!● NoSQL não foi concebido para pequenos projetos!● NoSQL é uma quebra de paradigma;● NoSQL é uma oportunidade nova!● Pouca gente sabe oque é mesmo NoSQL;
![Page 37: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/37.jpg)
Pelo menos isso vocês Pelo menos isso vocês tem que aprender hoje!!tem que aprender hoje!!
![Page 38: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/38.jpg)
Pelo menos isso vocês Pelo menos isso vocês tem que aprender hoje!!tem que aprender hoje!!
![Page 39: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/39.jpg)
Agora deixa eu perguntarAgora deixa eu perguntaruma coisa?uma coisa?
![Page 40: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/40.jpg)
Rumo ao Novo MundoRumo ao Novo Mundo➔ Pedro Á Cabral deve Pedro Á Cabral deve
ter dito assim ter dito assim quando viu o Brasil quando viu o Brasil pela primeira vez: pela primeira vez: Putz, mandei Bem!Putz, mandei Bem!
![Page 41: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/41.jpg)
““Opa o estômago roncou Opa o estômago roncou agora, deve ser o sinal”!!!agora, deve ser o sinal”!!!
➔ Sites interessantes:● http://www.mongodb.org/● http://try.mongodb.org/● http://www.phpes.org/● http://twitter.com/#!/sanainside● http://gentecomum.blogspot.comhttp://gentecomum.blogspot.com● http://twitter.com/btolinuxhttp://twitter.com/btolinux
![Page 42: Introdução ao NoSql](https://reader033.vdocuments.mx/reader033/viewer/2022061213/54967e50ac7959ff2d8b5116/html5/thumbnails/42.jpg)
So this is the end!So this is the end!
➔Por hoje é só pessoal!