Introdução ao NoSql

Post on 18-Dec-2014

4.590 views 1 download

description

Mini Curso introdutório sobre NoSQL,

Transcript of 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 Regobtolinux@gmail.com.brbtolinux@gmail.com.br

@btolinux@btolinuxhttp://gentecomum.blogspot.comhttp://gentecomum.blogspot.com

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;

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.

Analisando o ProblemaAnalisando o Problema➔ As vezes pensar é As vezes pensar é

mais importante do mais importante do que agir.que agir.

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

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);

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;

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;

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!

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;

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

=

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

...

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

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

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!

Um Novo DespertarUm Novo DespertarAcordar cedo pode Acordar cedo pode ser chato as vezes, ser chato as vezes, mas geralmente é mas geralmente é compensador.compensador.

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

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!

O Novo O Novo Quarteto FantásticoQuarteto Fantástico

➔ Os 4 Cavaleiros do Apocalipse:

● Databases;

● Coleções;

● Documentos;

● BSON;

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;

O Novo O Novo Quarteto FantásticoQuarteto Fantástico

➔ Coleções:● Agrupamento lógico de documentos em um

database;● Equivalente a tabela do YesREL;

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;

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;

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.

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

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;

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!

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'

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']});

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é'});

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

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

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");

Escovador de Bits eu Escovador 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);

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);

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);

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;

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

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

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

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!

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

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

➔Por hoje é só pessoal!