O documento fornece uma introdução prática ao NoSQL em 4 passos. Primeiro, analisa o problema que levou ao surgimento do NoSQL e explica como ele surgiu. Depois, instrui o leitor a começar a construir seu conhecimento sobre os conceitos básicos do NoSQL. Por fim, guia o leitor em direção a aplicar seus novos conhecimentos na prática.
Empreendedorismo com Software Livre - Um novo Horizonte
Introdução ao NoSql
1. 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 Rego
btolinux@gmail.com.brbtolinux@gmail.com.br
@btolinux@btolinux
http://gentecomum.blogspot.comhttp://gentecomum.blogspot.com
2. 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;
3. 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.
4. Analisando o ProblemaAnalisando o Problema
➔
As vezes pensar éAs vezes pensar é
mais importante domais importante do
que agir.que agir.
5. ““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?
6. 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);
7. 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;
8. 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;
9. 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!
10. 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;
12. Quem são as empresas?Quem são as empresas?
...
13. O escolhido de Hoje é:O escolhido de Hoje é:
➔ Open Source;
➔ Hight Performance;
➔ Schema-Free;
➔ Object Oriented;
➔ Scalable;
14. How to install thisHow 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!
15. Um Novo DespertarUm Novo Despertar
Acordar cedo podeAcordar cedo pode
ser chato as vezes,ser chato as vezes,
mas geralmente émas geralmente é
compensador.compensador.
16. ““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?
17. Então, já que é tudo issoEntão, já que é tudo isso
o 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!
18. O NovoO Novo
Quarteto FantásticoQuarteto Fantástico
➔ Os 4 Cavaleiros do Apocalipse:
● Databases;
● Coleções;
● Documentos;
● BSON;
19. O NovoO 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;
20. O NovoO Novo
Quarteto FantásticoQuarteto Fantástico
➔ Coleções:
● Agrupamento lógico de documentos em um
database;
● Equivalente a tabela do YesREL;
21. O NovoO Novo
Quarteto 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;
22. O NovoO 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;
23. Vamos ConstruirVamos Construir
➔
O Importante é dar oO Importante é dar o
primeiro passo... ouprimeiro passo... ou
colocar a primeiracolocar a primeira
lajota.lajota.
24. ““Agora é que a chapa vaiAgora é 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?)
25. 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;
26. 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!
27. 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'
28. 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']});
29. 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é'});
30. Conecta isso em umaConecta 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
31. Conecta isso em umaConecta 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
32. Escovador de Bits euEscovador 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");
33. Escovador de Bits euEscovador de Bits eu
escolho você!escolho você!
➔ Veja só esse código:
$doc = array("_id" => 1,
"email" => "meu@email.com",
"nome" => "Joaozinho",
"nivel" => "admin_supremo");
$conn_mongodb->selectDB("blogs")->
selectCollection("users")->save($doc);
34. Escovador de Bits euEscovador 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);
35. Escovador de Bits euEscovador 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);
36. Pelo menos isso vocêsPelo 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;
37. Pelo menos isso vocêsPelo menos isso vocês
tem que aprender hoje!!tem que aprender hoje!!
38. Pelo menos isso vocêsPelo menos isso vocês
tem que aprender hoje!!tem que aprender hoje!!
39. Agora deixa eu perguntarAgora deixa eu perguntar
uma coisa?uma coisa?
40. Rumo ao Novo MundoRumo ao Novo Mundo
➔
Pedro Á Cabral devePedro Á Cabral deve
ter dito assimter dito assim
quando viu o Brasilquando viu o Brasil
pela primeira vez:pela primeira vez:
Putz, mandei Bem!Putz, mandei Bem!
41. ““Opa o estômago roncouOpa 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
42. So this is the end!So this is the end!
➔Por hoje é só pessoal!