Introdução aos bancos não-
relacionais com MongoDB
Unidev 1ª edição
Quem sou eu
• Estagiário na SecrelNet;
• Desenvolvedor há 8 anos;
• Membro preguiçoso de comunidades;
• Apaixonado pelo que faço;
Eu com Jon "Maddog" Hall, CTO da Linux
International
Primeiro, vamos recapitular o que são bancos
de dados relacionais
Bancos grandes demais se
tornam dificeis de se
manter
FilosofiaA.C.I.D
•Atomicity (Atômicidade)
•Consistency (Consistência)
•Isolation (Isolado)
•Durability (Durável)
* Bancos de dados precisam ser constantemente normalizados.
SQL (StructuredQuery Language)
• Criada pela IBM em 1974
• Usada por todos os bancos relacionais
• Realiza todos os tipos de operações em um banco de dados
• Consultas mal escritas podem acarretar em gargalo
Revisão feita, agora vamos ver como
são os banco não-relacionais
Um pouco de historia....
• Termo NoSQL criado 1998 porCarlo Strozzi
• Carlo Stozziconsiderava o SQL:
• Muito complexo
• Pouco portábil
• Limitado
• Com uma fraca usabilidade
• Criou a próprialinguagem baseado emOperator-Stream
Paradigm(Pipe)
Carlo Strozzi
Utilizava-se de recursos comoAWK, Perl e Grep para se
realizar a busca
No começo do NoSQL..
As tabelas eram arquivos textos
separados por tab
Uso de redirecionamento à esquerda para leitura dos dados
Um pouco de historia....
• Em 2004 foi lançadoo BigTable pela
Google.Seguido pelo Dynamo(Amazon)
em 2007 e pelo Cassandra(Facebook)em
2008
• Em 2009 foi realizado o primeiro grande
evento debancosNoSQLem San Fracisco,
patrocinadopela Last.FMcomparceria
comFacebookeLinkedin
• Tambémrecebeu o nomede NoREL (Not
Relational)
Programação 1º grande evento de NoSQL
Um pouco de historia....
Em 2008 usando MySQL (banco relacional) oTwitter ficou 84 horas offline
ao decorrer do ano. Já em 2009 após migrar para Cassandra esse tempo caiu
para 23 horas e 45 minutos.
Fonte: http://bit.ly/1yZ0cEn(ComputerWorld)
Fonte: http://bit.ly/1aZA0Or (InfoWorld)
Hoje existe uma variedade de bancos NoSQL
Agora vamos falarde coisa boa, vamos
falar de
• Lançado em Fevereiro de 2009 pela 10gen (hoje Mongo Inc.)
• Escrito em C++
• Opensource (código-aberto)
• Surgiu da palavra homongous (gigantesco)
• Orientado à documentos
• Mais de 9 milhões de downloads desde seu lançamento
Quem utiliza?
Schemas
• Utilizasse de BSON (Binary JSON)
Exemplo de JSON
Beleza, beleza. Já entendi maaaaas....
Bancos Relacionaisx MongoDB
• MongoDB não possui nenhum tipo de relacionamento entre seus documentos
• Segue o modelo BASE (Basically Available, Soft state, Eventual consistency):
• Disponível otempo inteiro
• Disponível emestado leve
• Eventualmenteconsistente
• Facilmente escalonável
Motivo 1: Evita "AlterTables"
• Documentos não precisam seguir ter os mesmos atributos
• Como se cada linha da tabela fosse "independente"
• É função no DBA garantir que essa liberdade não vire bagunça
Motivo 2:Auto-sharding
• Consiste em utilizar mais de uma máquina para rodar todo o Banco de
Dados
• Processo trás uma série de vantagens:
• Otimiza o tempodas consultas
• Casoalguma das máquinastenha problema
• MongoDB possui sistemas de sharding automático
Motivo 2:Auto-sharding
Motivo 3: Ótimo para Big Data
• O protocolo mais utilizado hoje porWeb Services é o JSON
• Acaba evitando ORM (Object-Relational Mapping) em diversas situações
Motivo 4: Simples porém Robusto
• BSON Query relativamente simples
• Não há preocupação com relacionamentos
• Ideal para iniciantes em NoSQL
Iniciandono
Instalando o
Via linha de comando: (linhas de comando são legais)
Usuários de Linux baseados em Debian/Ubuntu:
Usuários de Linux baseados em RedHat/Fedora/CentOS:
Usuários de MacOSX:
Usuários de NPM (todos os Sistemas Operacionais) *Recomendado
Instalando o
Via linha de comando: (linhas de comando são legais)
Para usuários de Windows via Chocolatey:
Ou baixando diretamente do site xD
https://www.mongodb.org/downloads
Instalando cliente gráfico
http://robomongo.org/
Inicializandoo Mongo
1º passo: Inicialização do servidor do Mongo
2º passo:
* Para os fãs de terminal:
* Para os fãs de interface gráfica:
Abram o Robomongo
APIs para Mongo
•PyMongo (Python)
•Php_mongo (PHP)
•Mongo JDBC Driver (Java)
• Mongo Ruby Driver (Ruby)
• Mgo (Go)
Para outras linguagens consulte:
http://api.mongodb.org/
Quem sabe faz ao vivo!
Agora é a hora....
Me sigam :D
https://github.com/Ziggoto
http://pt.slideshare.net/ziggoto

Introducao aos bancos_nao_relacionais_com_mongodb

  • 1.
    Introdução aos bancosnão- relacionais com MongoDB Unidev 1ª edição
  • 2.
    Quem sou eu •Estagiário na SecrelNet; • Desenvolvedor há 8 anos; • Membro preguiçoso de comunidades; • Apaixonado pelo que faço; Eu com Jon "Maddog" Hall, CTO da Linux International
  • 3.
    Primeiro, vamos recapitularo que são bancos de dados relacionais
  • 6.
    Bancos grandes demaisse tornam dificeis de se manter
  • 7.
    FilosofiaA.C.I.D •Atomicity (Atômicidade) •Consistency (Consistência) •Isolation(Isolado) •Durability (Durável) * Bancos de dados precisam ser constantemente normalizados.
  • 8.
    SQL (StructuredQuery Language) •Criada pela IBM em 1974 • Usada por todos os bancos relacionais • Realiza todos os tipos de operações em um banco de dados • Consultas mal escritas podem acarretar em gargalo
  • 9.
    Revisão feita, agoravamos ver como são os banco não-relacionais
  • 10.
    Um pouco dehistoria.... • Termo NoSQL criado 1998 porCarlo Strozzi • Carlo Stozziconsiderava o SQL: • Muito complexo • Pouco portábil • Limitado • Com uma fraca usabilidade • Criou a próprialinguagem baseado emOperator-Stream Paradigm(Pipe) Carlo Strozzi Utilizava-se de recursos comoAWK, Perl e Grep para se realizar a busca
  • 11.
    No começo doNoSQL.. As tabelas eram arquivos textos separados por tab Uso de redirecionamento à esquerda para leitura dos dados
  • 12.
    Um pouco dehistoria.... • Em 2004 foi lançadoo BigTable pela Google.Seguido pelo Dynamo(Amazon) em 2007 e pelo Cassandra(Facebook)em 2008 • Em 2009 foi realizado o primeiro grande evento debancosNoSQLem San Fracisco, patrocinadopela Last.FMcomparceria comFacebookeLinkedin • Tambémrecebeu o nomede NoREL (Not Relational) Programação 1º grande evento de NoSQL
  • 13.
    Um pouco dehistoria.... Em 2008 usando MySQL (banco relacional) oTwitter ficou 84 horas offline ao decorrer do ano. Já em 2009 após migrar para Cassandra esse tempo caiu para 23 horas e 45 minutos. Fonte: http://bit.ly/1yZ0cEn(ComputerWorld) Fonte: http://bit.ly/1aZA0Or (InfoWorld)
  • 14.
    Hoje existe umavariedade de bancos NoSQL
  • 15.
    Agora vamos falardecoisa boa, vamos falar de
  • 16.
    • Lançado emFevereiro de 2009 pela 10gen (hoje Mongo Inc.) • Escrito em C++ • Opensource (código-aberto) • Surgiu da palavra homongous (gigantesco) • Orientado à documentos • Mais de 9 milhões de downloads desde seu lançamento
  • 17.
  • 18.
    Schemas • Utilizasse deBSON (Binary JSON) Exemplo de JSON
  • 19.
    Beleza, beleza. Jáentendi maaaaas....
  • 20.
    Bancos Relacionaisx MongoDB •MongoDB não possui nenhum tipo de relacionamento entre seus documentos • Segue o modelo BASE (Basically Available, Soft state, Eventual consistency): • Disponível otempo inteiro • Disponível emestado leve • Eventualmenteconsistente • Facilmente escalonável
  • 21.
    Motivo 1: Evita"AlterTables" • Documentos não precisam seguir ter os mesmos atributos • Como se cada linha da tabela fosse "independente" • É função no DBA garantir que essa liberdade não vire bagunça
  • 22.
    Motivo 2:Auto-sharding • Consisteem utilizar mais de uma máquina para rodar todo o Banco de Dados • Processo trás uma série de vantagens: • Otimiza o tempodas consultas • Casoalguma das máquinastenha problema • MongoDB possui sistemas de sharding automático
  • 23.
  • 24.
    Motivo 3: Ótimopara Big Data • O protocolo mais utilizado hoje porWeb Services é o JSON • Acaba evitando ORM (Object-Relational Mapping) em diversas situações
  • 25.
    Motivo 4: Simplesporém Robusto • BSON Query relativamente simples • Não há preocupação com relacionamentos • Ideal para iniciantes em NoSQL
  • 26.
  • 27.
    Instalando o Via linhade comando: (linhas de comando são legais) Usuários de Linux baseados em Debian/Ubuntu: Usuários de Linux baseados em RedHat/Fedora/CentOS: Usuários de MacOSX: Usuários de NPM (todos os Sistemas Operacionais) *Recomendado
  • 28.
    Instalando o Via linhade comando: (linhas de comando são legais) Para usuários de Windows via Chocolatey: Ou baixando diretamente do site xD https://www.mongodb.org/downloads
  • 29.
  • 30.
    Inicializandoo Mongo 1º passo:Inicialização do servidor do Mongo 2º passo: * Para os fãs de terminal: * Para os fãs de interface gráfica: Abram o Robomongo
  • 31.
    APIs para Mongo •PyMongo(Python) •Php_mongo (PHP) •Mongo JDBC Driver (Java) • Mongo Ruby Driver (Ruby) • Mgo (Go) Para outras linguagens consulte: http://api.mongodb.org/
  • 32.
    Quem sabe fazao vivo!
  • 34.
    Agora é ahora....
  • 35.