introdução ao nosql

42
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 Rego Professor Paulo Roberto Donatilio Rego [email protected] [email protected] @btolinux @btolinux http://gentecomum.blogspot.com http://gentecomum.blogspot.com

Upload: paulo-roberto-donatilio-rego

Post on 18-Dec-2014

4.589 views

Category:

Technology


1 download

DESCRIPTION

Mini Curso introdutório sobre NoSQL,

TRANSCRIPT

Page 1: Introdução ao NoSql

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

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

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

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

““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

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

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

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

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

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

Quais são os Produtos?Quais são os Produtos?

=

Page 12: Introdução ao NoSql

Quem são as empresas?Quem são as empresas?

...

Page 13: Introdução ao NoSql

O escolhido de Hoje é:O escolhido de Hoje é:

➔ Open Source;➔ Hight Performance;➔ Schema-Free;➔ Object Oriented;➔ Scalable;

Page 14: Introdução ao NoSql

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

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

““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

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

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

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

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

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

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

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

““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

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

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

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

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

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

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

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

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

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

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

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

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

Pelo menos isso vocês Pelo menos isso vocês tem que aprender hoje!!tem que aprender hoje!!

Page 38: Introdução ao NoSql

Pelo menos isso vocês Pelo menos isso vocês tem que aprender hoje!!tem que aprender hoje!!

Page 39: Introdução ao NoSql

Agora deixa eu perguntarAgora deixa eu perguntaruma coisa?uma coisa?

Page 40: Introdução ao NoSql

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

““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

So this is the end!So this is the end!

➔Por hoje é só pessoal!