MongoDB: Construa novas aplicações com novas tecnologias
()
Sobre este e-book
Atingir alta escalabilidade com bancos de dados relacionais exige infraestruturas caríssimas, que podem ser evitadas com outros paradigmas. É aí que entra o MongoDB, famoso banco de dados orientado a documentos, desenvolvido pela 10gen e principal alternativa para aliar a alta escalabilidade com facilidade de uso.
Nesse livro, Fernando Boaglio vai ensiná-lo como trabalhar com o MongoDB, principal banco de dados orientado a documentos do mercado. Com ele é possível desenvolver aplicações que atingem alta escalabilidade e de forma tão simples quanto trabalhar com os tradicionais banco de dados relacionais.
Leia mais títulos de Fernando Boaglio
Spring Boot: Acelere o desenvolvimento de microsserviços Nota: 0 de 5 estrelas0 notasJenkins: Automatize tudo sem complicações Nota: 0 de 5 estrelas0 notasPlay Framework: Java para web sem Servlets e com diversão Nota: 0 de 5 estrelas0 notas
Relacionado a MongoDB
Ebooks relacionados
PostgreSQL: Banco de dados para aplicações web modernas Nota: 5 de 5 estrelas5/5APIs REST: Seus serviços prontos para o mundo real Nota: 5 de 5 estrelas5/5Azure: Coloque suas plataformas e serviços no cloud Nota: 0 de 5 estrelas0 notasCaixa de Ferramentas DevOps: Um guia para construção, administração e arquitetura de sistemas modernos Nota: 0 de 5 estrelas0 notasConstruindo APIs REST com Node.js: Caio Ribeiro Pereira Nota: 5 de 5 estrelas5/5Front-end com Vue.js: Da teoria à prática sem complicações Nota: 5 de 5 estrelas5/5Desconstruindo a Web: As tecnologias por trás de uma requisição Nota: 0 de 5 estrelas0 notasContainers com Docker: Do desenvolvimento à produção Nota: 3 de 5 estrelas3/5Vue.js: Construa aplicações incríveis Nota: 0 de 5 estrelas0 notasAplicações Java para a web com JSF e JPA Nota: 0 de 5 estrelas0 notasGraphQL: A revolucionária linguagem de consulta e manipulação de dados para APIs Nota: 0 de 5 estrelas0 notasCangaceiro JavaScript: Uma aventura no sertão da programação Nota: 5 de 5 estrelas5/5O retorno do cangaceiro JavaScript: De padrões a uma abordagem funcional Nota: 0 de 5 estrelas0 notasColetânea Front-end: Uma antologia da comunidade front-end brasileira Nota: 0 de 5 estrelas0 notasECMAScript 6: Entre de cabeça no futuro do JavaScript Nota: 5 de 5 estrelas5/5PHP e Laravel: Crie aplicações web como um verdadeiro artesão Nota: 0 de 5 estrelas0 notasMeteor: Criando aplicações web real-time com JavaScript Nota: 5 de 5 estrelas5/5Refatorando com padrões de projeto: Um guia em Ruby Nota: 0 de 5 estrelas0 notasCodeIgniter: Produtividade na criação de aplicações web em PHP Nota: 0 de 5 estrelas0 notasDSL: Quebre a barreira entre desenvolvimento e negócios Nota: 0 de 5 estrelas0 notasFragmentos de um programador: Artigos e insights da carreira de um profissional Nota: 5 de 5 estrelas5/5Primeiros passos com Node.js Nota: 0 de 5 estrelas0 notasiReport: Crie relatórios práticos e elegantes Nota: 0 de 5 estrelas0 notasExplorando APIs e bibliotecas Java: JDBC, IO, Threads, JavaFX e mais Nota: 0 de 5 estrelas0 notasGuia prático de TypeScript: Melhore suas aplicações JavaScript Nota: 0 de 5 estrelas0 notasJavaScript Assertivo: Testes e qualidade de código em todas as camadas da aplicação Nota: 0 de 5 estrelas0 notasSOA aplicado: Integrando com web services e além Nota: 0 de 5 estrelas0 notasMySQL: Comece com o principal banco de dados open source do mercado Nota: 4 de 5 estrelas4/5Programação funcional em .NET: Explore um novo universo Nota: 0 de 5 estrelas0 notasAplicações web real-time com Node.js Nota: 5 de 5 estrelas5/5
Aplicativos Empresariais para você
Pacote Microsoft Office Capacitação Nota: 0 de 5 estrelas0 notasExcel 2013 Técnicas Avançadas – 2ª edição Nota: 4 de 5 estrelas4/5Do Mil Ao Milhão Com Pouco Investimento: Guia Completo Nota: 0 de 5 estrelas0 notasA Bíblia Do Swing Trader Nota: 0 de 5 estrelas0 notasE-book Microsoft Excel 2010 Nota: 0 de 5 estrelas0 notasExcel Definitivo Nota: 0 de 5 estrelas0 notasCurso Excel Nota: 0 de 5 estrelas0 notasA Fórmula Do Afiliado Profissional Nota: 0 de 5 estrelas0 notasExcel para o dia a dia: Seus primeiros passos no mundo das planilhas Nota: 0 de 5 estrelas0 notas12 Técnicas Para Dominar As Planilhas Financeiras Nota: 0 de 5 estrelas0 notas47 Dicas Para Ganhar Na Mega-sena Nota: 0 de 5 estrelas0 notasExcel Avançado 2016/365: aplicado à administração Nota: 0 de 5 estrelas0 notasExcel Básico Nota: 0 de 5 estrelas0 notasMarketing Digital, Segredo Para Aumentar Suas Vendas Nota: 0 de 5 estrelas0 notasBitcoin Para Leigos Nota: 0 de 5 estrelas0 notasExcel De Zero Para Especialista Nota: 0 de 5 estrelas0 notasBusiness Intelligence: Implementar do jeito certo e a custo zero Nota: 4 de 5 estrelas4/5Power Bi Black Belt Nota: 0 de 5 estrelas0 notasDescomplicando Passo A Passo Nota: 0 de 5 estrelas0 notasScrum: Gestão ágil para produtos de sucesso Nota: 0 de 5 estrelas0 notasAprendendo A Programar Nota: 0 de 5 estrelas0 notasProgramação Para Internet Nota: 0 de 5 estrelas0 notasComo Crescer No Instagram E Se Tornar Um Influenciador De Sucesso No Instagram Nota: 0 de 5 estrelas0 notasProgramando Em Java Com Banco De Dados Nota: 0 de 5 estrelas0 notasFunções Financeiras Com Microsoft Excel Nota: 0 de 5 estrelas0 notasHtml - Passo A Passo Nota: 0 de 5 estrelas0 notasBI e Big Data Management Nota: 0 de 5 estrelas0 notasAbap Passo A Passo Nota: 0 de 5 estrelas0 notasDo jeito certo: Gestão de produtos no mundo das startups Nota: 0 de 5 estrelas0 notasAPP para iniciantes: Faça seu primeiro aplicativo Low Code Nota: 0 de 5 estrelas0 notas
Avaliações de MongoDB
0 avaliação0 avaliação
Pré-visualização do livro
MongoDB - Fernando Boaglio
Sumário
ISBN
Agradecimentos
Quem é Fernando Boaglio
Prefácio
1. Por que criar aplicações novas com conceitos antigos?
2. JSON veio para ficar
3. MongoDB básico
4. Schema design
5. Conversando com MongoDB
6. Migrando o seu banco de dados
7. Buscas avançadas
8. Busca geoespacial
9. Aggregation framework
10. Aumentando a performance
11. MongoDB para administradores
12. MongoDB em cluster
13. Transações
14. Continue seus estudos
15. Apêndice A — Instalando MongoDB
16. Apêndice B — Robo 3T
17. Apêndice C — Perguntas e respostas
18. Apêndice D — Upgrades
ISBN
Impresso e PDF: 978-85-5519-043-8
EPUB: 978-85-5519-044-5
MOBI: 978-85-5519-045-2
Caso você deseje submeter alguma errata ou sugestão, acesse http://erratas.casadocodigo.com.br.
Agradecimentos
Agradeço a você por pensar fora da caixa e escolher uma excelente alternativa à tecnologia de 1970: os bancos relacionais!
Agradeço ao Leandro Pincini por me mostrar o MongoDB e pela ajuda nos exemplos de Mac OS X.
Agradeço também a todas as pessoas que se dedicam ao software livre, pois, sem elas, não teríamos excelentes sistemas operacionais, bancos de dados, servidores de aplicação, browsers, ferramentas e tudo mais de ótima qualidade.
Agradeço à minha esposa por sempre estar ao meu lado, aos meus pais e a Deus por tudo.
E segue o jogo!
Quem é Fernando Boaglio
Uma imagem fala mais do que mil palavras. Veja quem eu sou na figura:
Quem é Fernando Boaglio?Figura -1.1: Quem é Fernando Boaglio?
Prefácio
Por que construir aplicações novas com tecnologia antiga? É impressionante como aprendemos o que bancos de dados relacionais são e não são. E não há nada que possa ser feito sobre isso.
Sua aplicação pode usar a mais nova tecnologia existente, mas quando for persistir os dados, necessitará do banco de dados relacional, usando a mesma tecnologia dos anos setenta. Existe espaço para todos e, com certeza, em vários casos os bancos de dados NoSQL, como o MongoDB, se sobressaem em relação aos tradicionais bancos relacionais.
Público-alvo
Este livro foi feito para quem trabalha com desenvolvimento de sistemas que usam bancos de dados relacionais e procuram alternativas melhores. Também foi escrito para os interessados em aprender sobre o MongoDB, que é o mais famoso e mais usado banco de dados NoSQL, para explicar por que as grandes empresas estão investindo terabytes nessa tecnologia.
No site do MongoDB, temos uma excelente documentação que, no entanto, apenas explica como o comando funciona e não faz nenhuma comparação com o SQL, que todo desenvolvedor conhece. Aqui, caro leitor, cara leitora, você sempre encontrará um comparativo com o SQL relacional que vai facilitar muito o funcionamento e as vantagens do MongoDB.
Quickstart — a primeira parte do livro
Para rapidamente configurar o seu ambiente e disponibilizar o seu banco de dados MongoDB modelado corretamente para a sua aplicação, não será preciso ler todos os capítulos, apenas os cinco primeiros.
Melhorando seu banco de dados — a segunda parte do livro
Os capítulos restantes complementam com a parte de migração de outro banco de dados para o MongoDB, performance, administração, comandos avançados de busca e utilização de particionamento e cluster.
Apêndices — instalação, upgrade e FAQ
Foram criados dois apêndices focados em instalação: o apêndice A, para instalação do banco de dados do MongoDB; e o apêndice B, para a ferramentas cliente MongoDB Compass e Robo 3T (antigo Robomongo).
Existe também um terceiro apêndice, com as perguntas e respostas mais frequentes sobre o MongoDB, como, por exemplo, se ele suporta transações, ou quais as grandes empresas que o usam. O quarto apêndice orienta a migrar o seu banco de dados de uma versão mais antiga do MongoDB.
Código-fonte
O código-fonte deste livro está disponível no endereço https://github.com/boaglio/mongodb-casadocodigo.
Capítulo 1
Por que criar aplicações novas com conceitos antigos?
Nas últimas décadas, a criação de um sistema evoluiu apenas de um lado (o da interface com o usuário), começando com sistemas na arquitetura de cliente/servidor (como os feitos em Visual Basic ou Delphi) até sistemas em três camadas (como a maioria dos sites na Internet, feitos em PHP, Java ou ASP), e terminando nos sistemas com celular.
De um lado, a tela desktop evoluiu para a tela web e, finalmente, para a tela do celular. Mas por trás de todas elas, quase sempre estava algum banco de dados relacional.
Se sempre foi assim, é natural que, ao projetarmos um sistema, sempre assumimos que o lado dos dados, da informação, da persistência, não mudará suas regras tão cedo. Portanto, desenhamos o problema em cima das regras (ou melhor, limitações) relacionais e, a partir dele, criamos uma camada de manipulação desses dados pela nossa aplicação, seja ela desktop, web ou mobile.
1.1 O sistema na maneira tradicional
Desde os anos 90, a Universidade de Harvard oferece um prêmio dado aos autores de pesquisas, experimentos e outras atividades inusitadas, nas diversas áreas da ciência. Essa homenagem é chamada Prêmio IgNobel, que é o oposto ao Prêmio Nobel.
O nosso sistema é a lista de ganhadores do prêmio IgNobel (https://pt.wikipedia.org/wiki/Anexo:Lista_de_ganhadores_do_Prêmio_IgNobel), como o sucesso no treino de pombos para distinguirem entre pinturas de Picasso e Monet
, ou depenagem de galinhas como meio de medir a velocidade do vento de um tornado
.
Pela lista da Wikipedia, conseguimos separar quatro informações: ano, tipo, autor e descrição do prêmio. Partindo para modelagem relacional, temos o modelo da figura adiante.
Basicamente, pegamos as quatro informações e criamos uma tabela para cada uma, e como um prêmio IgNobel pode ter vários autores, criamos uma tabela auxiliar premio_autor.
Modelo relacional dos ganhadoresFigura 1.1: Modelo relacional dos ganhadores
Vamos listar algumas reflexões sobre esse modelo:
ao montarmos o modelo, pensamos em desnormalizar toda informação, isolando em quatro tabelas distintas;
como um mesmo prêmio pode ter vários autores, precisamos criar uma tabela auxiliar premio_autor;
montamos toda estrutura baseada nas limitações de um banco de dados (no mundo real não existe representação da tabela auxiliar premio_autor);
não pensamos no que a aplicação vai fazer, pensamos apenas em arrumar os dados;
em caso de lentidão, revemos os SQLs e criamos índices.
Para exibir uma página como da Wikipedia, é preciso fazer uma consulta envolvendo todas as cinco tabelas criadas:
select
p.de_premio, t.de_tipo, a.de_ano ,au.nm_autor
from premio p, tipo t, ano a, premio_autor pa, autor au where p.id_premio = pa.id_premio and p.id_tipo = t.id_tipo and p.id_ano = a.id_ano and pa.id_autor = au.id_autor
Como a página da Wikipedia tem muitos acessos, se eles tivessem feito da maneira convencional, o site com certeza não seria tão rápido. Portanto, pensando na aplicação e não nos dados, o ideal seria que tudo estivesse organizado de acordo com a necessidade do negócio, e não com formas normais do mundo relacional.
Se a página da Wikipedia exibe tudo de uma vez, o correto seria a informação estar concentrada em apenas um lugar (uma tabela). Essa prática já é conhecida no mundo do Data Warehouse, chamada de desnormalização.
No MongoDB, organizamos os dados em função da aplicação. Não temos tabelas, temos conjuntos de dados chamados collections, que, ao contrário de tabelas, não têm constraints (chave primária, chave estrangeira) nem transações. Além disso, também não têm as limitações de uma tabela relacional. Dentro de uma coluna, você pode ter um array ou uma lista de valores; algo impossível em uma tabela convencional.
Resumindo: da maneira convencional, a sua aplicação obedece às regras do seu banco de dados. No MongoDB, é o contrário: é a sua aplicação que manda, e os dados são organizados conforme a necessidade do sistema.
Nesse exemplo da Wikipedia, precisamos ter uma collection com todas as informações. Elas são organizadas dessa maneira:
{
ano
: 1992,
tipo
: Medicina
,
autores
: [
F. Kanda
,
E. Yagi
,
M. Fukuda
,
K. Nakajima
,
T. Ohta
,
O. Nakata
],
premio
: "Elucidação dos Componentes Químicos Responsáveis
pelo Chulé do Pé (Elucidation of Chemical
Compounds Responsible for Foot Malodour),
especialmente pela conclusão de que as pessoas
que pensam que têm chulé, têm, e as que pensam
que não têm, não têm."
}
Assim, em um único registro temos todas as informações de que precisamos.
Resumindo:
De quantas tabelas precisamos para exibir um prêmio? Cinco.
De quantas collections precisamos para exibir um prêmio? Uma.
1.2 Próximos passos
Certifique-se de que aprendeu a:
enumerar as principais práticas da modelagem relacional tradicional;
comparar as diferenças da modelagem relacional tradicional e do MongoDB.
Talvez existam dúvidas sobre alguns conceitos ou aplicações do MongoDB; não é preciso ler o livro inteiro para esclarecê-las. Consulte o Apêndice C — Perguntas e respostas.
No próximo capítulo, vamos aprender a linguagem usada pelo MongoDB: o JSON e todo o potencial que ele oferece.
Capítulo 2
JSON veio para ficar
Com o crescimento de serviços no começo do século, o tráfego de informações também aumentou. Foi preciso criar uma forma simples de enviar informação de um servidor para um web browser, sem a necessidade de nenhum plugin para funcionar (como Flash).
Por esse motivo, Douglas Crockford identificou uma prática usada, desde 1996, pela Netscape como a solução desse problema. Ele criou uma especificação para ela e batizou-a como Notação de Objetos JavaScript (JavaScript Object Notation), ou simplesmente JSON.
A ideia é manter a simplicidade para transferir as informações, suportando tipos de dados bem simples:
null — valor vazio;
Boolean — true ou false;
Number — número com sinal que pode ter uma notação com E exponencial;
String — uma sequência de um ou mais caracteres Unicode;
Object — um array não ordenado com itens