Aplicativos da Web usando o MongoDB - O MongoDB é uma das melhores ferramentas para desenvolvedores da Web sérios, e este artigo sobre o MongoDB analisará tudo o que você precisa saber para criar aplicativos da Web com o MongoDB. Mas antes de começarmos, vamos dar uma olhada na ferramenta popular.
O que é o MongoDB?
Em termos mais simples, o MongoDB é um banco de dados NoSQL orientado a documentos de plataforma cruzada que usa documentos semelhantes a JSON usando esquemas dinâmicos, chamados documentos BSON, em vez de seguir a estrutura convencional de banco de dados relacional (RDB).
São muitos termos com os quais você talvez não esteja familiarizado, então vamos descrevê-los primeiro.
Agora, um banco de dados orientado a documentos funciona com base no conceito básico de que um documento de dados contém 'metadados', valores usados para identificar o tipo de dados e facilitar o armazenamento e a recuperação, quando necessário. Por exemplo, vejamos as duas linhas de dados a seguir:
- John Hancock
- Arquiteto
Uma olhada nessas duas linhas deve fornecer uma idéia do que esses dados se referem: nome e ocupação de uma pessoa. Uma máquina, no entanto, não consegue distinguir essa distinção. Precisa ser informado sobre o tipo de dados.
Em um RDB, esse tipo pode ser armazenado em um armazenamento de valores-chave separado do próprio documento. No entanto, com um banco de dados orientado a documentos, você determina o tipo de dados à medida que digita o código. Então você acaba escrevendo um pouco assim:
- John Hancock
- Arquiteto
E lá vai você; agora o tipo de dados foi definido dentro do documento. Isso fornece uma flexibilidade que não está presente nos RDBs, e é por isso que os bancos de dados orientados a documentos são tão populares para aplicativos da Web.
Afinal, os aplicativos da web estão sujeitos a alterações e atualizações regulares. Obviamente, os RDBs também têm suas vantagens, e os bancos de dados orientados a documentos não são perfeitos para todas as situações, mas não vamos discordar.
Vamos para JSON, BSON e esquemas. JSON refere-se à Notação de Objeto JavaScript, mas na verdade é um formato de dados padrão aberto que pode funcionar com idiomas diferentes do JavaScript.
Um esquema é a estrutura do banco de dados, definida como tabelas no caso de RDBs. Como os bancos de dados orientados a documentos não usam essas tabelas, eles são essencialmente sem estrutura ou sem esquema.
Quanto ao BSON, bem, isso significa apenas JSON binário, e é o formato de armazenamento de dados para o banco de dados MongoDB. É tudo o que você precisa saber sobre isso nesta fase.
Agora, com o básico, vamos ver por que o MongoDB é uma boa opção para criar aplicativos da Web:
Por que escolher o MongoDB?
Existem várias razões para a popularidade do MongoDB na criação de aplicativos da web. O MongoDB não é uma ferramenta perfeita; longe disso, de fato. O MongoDB tem vários desafios e não é adequado para todos os aplicativos da web. Mas o MongoDB funciona bem quando se trata de aplicativos da Web pelos seguintes motivos:
-
MongoDB é sem esquema
O banco de dados MongoDB pode conter coleções de documentos, cada um com seu próprio tamanho, conteúdo e número de campos. Você pode voltar e alterar os valores-chave ou adicioná-los e excluí-los conforme desejar.
Isso também torna a estrutura de um único objeto clara e direta, e o MongoDB também é fácil de expandir quando necessário.
-
O MongoDB é de uso geral
O banco de dados pode ser usado para vários aplicativos da web, incluindo gerenciamento de dados do cliente, gerenciamento de conteúdo, hubs de dados, aplicativos móveis, Internet das Coisas, Big Data, catálogos de produtos e ativos e banco de dados como serviço.
-
O MongoDB suporta compartilhamento automático
Os bancos de dados relacionais geralmente são dimensionados verticalmente, nos quais um único servidor hospeda o banco de dados completo. Isso pode limitar a escala de operação, com a solução de adicionar horizontalmente e adicionar servidores, em vez de concentrar a capacidade em um único servidor.
O compartilhamento de um banco de dados é feito para evitar isso e fazer com que o hardware atue como um único servidor. Os desenvolvedores precisam implantar vários bancos de dados relacionais entre as máquinas e desenvolver o código do aplicativo para distribuir os dados, consultas e agregar os resultados.
O MongoDB e outros bancos de dados NoSQL oferecem suporte ao compartilhamento automático, o que significa que eles distribuem dados automaticamente por vários servidores sem que o aplicativo tenha conhecimento da composição.
O MongoDB é especialmente útil na computação em nuvem. Como desenvolvedor, você não precisa criar plataformas caras e complexas para suportar aplicativos da Web, mas pode se concentrar em escrever o código real do aplicativo.
Mais alguns termos para aprender sobre o MongoDB
Tudo bem, agora abordamos o básico e os benefícios do MongoDB. Antes de sujar a mão, vejamos mais alguns termos com os quais você deve estar familiarizado:
- Banco de dados: um banco de dados contém coleções e cada banco de dados possui seus próprios arquivos no sistema de arquivos. Um servidor típico do MongoDB terá vários bancos de dados.
- Coleção: um grupo de documentos do MongoDB é chamado de coleção e isso é equivalente a uma tabela nos RDBs. Um único banco de dados terá uma coleção e cada documento terá campos diferentes. Ao contrário dos tablets, as coleções não têm um esquema.
- Documento: um documento é um conjunto de pares de valores-chave e possui um esquema dinâmico, o que significa que documentos diferentes na mesma coleção podem ter estruturas e conjuntos de campos diferentes.
Cursos recomendados
- Cursos de depuração em Ruby
- Treinamento em programação MySQL PHP
- Treinamento de programação on-line do VB.NET
- Curso de Treinamento da ITIL Foundation
Construindo aplicativos da Web
Os aplicativos da Web que estão sendo criados para este guia específico do MongoDB são um agregador de RSS como o Google Reader. Os aplicativos da web terão dois componentes principais: uma API REST e um grabber de feed.
Para entender o que é uma API REST, você precisa primeiro conhecer um pouco sobre a pilha MEAN. O código para um grabber de feed pode ser encontrado até no diretório github.
Entendendo a pilha MEAN:
A pilha MEAN representa o seguinte:
- MongoDB, que é o banco de dados a ser usado para o aplicativo da web
- js, que é uma estrutura de aplicativos da web leve
- js, que é uma estrutura para criar aplicativos da Web avançados em JavaScript e HTML5
- js, que é um interpretador JavaScript do lado do servidor
Para os aplicativos da web discutidos aqui, uma API REST será criada em vez de uma interface com o usuário HTML. A API Representational State Transfer (REST) é uma alternativa mais leve às APIs baseadas em XML e pode servir como base para qualquer tipo de interface, apesar de não ter uma interface de usuário.
O REST funciona em um modelo cliente-servidor, com o cliente enviando comandos HTTP para o servidor HTTP, juntamente com parâmetros variáveis codificados na URL que descreve o objeto de destino da ação. O servidor então responde com o JSON e o código do resultado.
Agora, o MongDB e o JavaScript reagem bem ao JSON, tornando a pilha MEAN especialmente adequada para os aplicativos da web.
CRUD
O acrônimo CRUD significa criar, ler, atualizar e excluir. Essas são operações comuns de banco de dados que se traduzem em HTTP como postagem, obtenção, colocação e exclusão.
Construindo uma API REST
Vamos começar criando uma API REST, desenvolvendo a base para a construção de aplicativos da web. O aplicativo pode ser baseado na Web ou projetado para Android, iOS ou outras plataformas específicas. Para começar, vamos listar as coisas que o aplicativo poderá fazer:
- Permitir que os usuários criem uma conta
- Permita que eles se inscrevam ou cancelem a inscrição em feeds
- Ofereça a eles a capacidade de ler e marcar entradas de feed como lidas ou não lidas
- Acompanhe feeds RSS para monitoramento
- Armazenar informações do usuário em suas respectivas contas
- Rastrear assinaturas de feed do usuário
- Rastrear uma entrada de feed já lida por um usuário
Modelagem de dados
Com base nos requisitos, os aplicativos da web precisarão de quatro coleções para gerenciar as informações:
- Coleção de usuários
- Coleta de feeds
- Coleção de Mapeamento de Entrada do Feed do Usuário
- Coleta de entrada de feed
Aqui está um olhar mais atento a cada um:
-
Coleção de feeds:
O seguinte JSON é um bom exemplo para modelar uma coleção de feeds:
( "_id, ObjectId("523b1153a2aa6a3233a91412")
"requiresAuthentication": false,
"permanentlyRemoved": false,
"feedURL": "http://feeds.reuters.com/reuters/topNews",
"title": "Reuters",
"bozoBitSet": false,
"enabled": true,
"etag": "4bL78iLSZud2iXd/vd10mYC32BE",
"link": "http://www.reuters.com/ ",
"permanentRedirectURL": null,
"description": "Reuters news feed” )
O documento JSON acima é um feed RSS da Reuters, rastreando informações sobre as últimas notícias publicadas no site. Existem muitos campos que você vê aqui, mas os mais importantes para o funcionamento dos aplicativos Web são o URL do feed e a descrição do feed.
O URL é importante para buscar o conteúdo da fonte correta e a descrição é importante porque fornece um resumo para o feed.
Enquanto isso, o restante dos campos é para uso interno. Você pode adicionar mais ou remover alguns dos que quiser. Logo na parte superior do documento está o campo _id. Todo documento precisa ter esse campo e o ID deve ser exclusivo.
No exemplo acima, um ID foi criado manualmente para o campo. Se você perder isso, o MongoDB fará automaticamente um.
-
Rastreando e coletando entradas de feed
Se você deseja acompanhar mais feeds de notícias, pode adicioná-los usando o mesmo formato acima. Depois de adicionar os feeds, é hora de acompanhar e coletá-los. Dado a seguir, há um documento para coleta de entrada de feed:
( "_id": ObjectId("523b1153a2aa6a3233a91412"),
"description": "Martin Shkreli, the poster boy for prescription drug price increases who was arrested for securities fraud this week, has stepped down from his post as chief executive officer of Turing Pharmaceuticals Inc, the company said on Friday”,
"title": "Turing Pharma names chairman to replace Shkreli as CEO",
"summary": "Turing Pharma names chairman to replace Shkreli as CEO”,
"content": (( "base": "http://www.reuters.com/",
"type": "text/html",
"value": ”LOTS OF HTML HERE",
"language": "en" )), "published Date": ISODate("2015-12-18T18:13:58+0000"),
"link": " http://www.reuters.com/article/us-usa-crime-shkreli-ceo-idUSKBN0U122R20151218",
"feedID": ObjectId("523b1153a2aa6a3233a913f8") )
Mais uma vez, você pode ver o campo _id preenchido, juntamente com outros campos, como descrição, resumo e título. O campo de conteúdo usa uma matriz e o MongoDB permite que matrizes armazenem documentos. Esse arranjo de sub-documentos pode ser particularmente útil em situações em que todas as informações devem ser mantidas juntas.
Anote o feedID; ele tem o mesmo tipo de ObjectId e o valor do _id que o documento de entrada do feed anterior para o feed da Reuters. Isso oferece um modelo de referência, para que você possa consultar a coleção de feeds com o mesmo valor de ID para retornar o documento Reuters.
-
Rastreando o usuário
Aqui está um documento de exemplo para acompanhar os usuários:
( "_id" : ObjectId("54ad6c3ae764de42070b27b1"),
"active" : true,
"email" : " ",
"firstName" : "John",
"lastName" : "Hancock",
"sp_api_key_id" : "6YQB0A8VXM0X8RVDPPLRHBI7J",
"sp_api_key_secret" : "veBw/YFx56Dl0bbiVEpvbjF”,
"lastLogin" : ISODate("2015-01-07T17:26:18.996Z"),
"created" : ISODate("2015-01-07T17:26:18.995Z"),
"subs" : ( ObjectId("523b1153a2aa6a3233a913f8"),
ObjectId("54b563c3a50a190b50f4d63b") ), )
Aqui, o usuário possui três atributos principais: nome, sobrenome e endereço de email. Também existem dois elementos que podem ser usados com a API de gerenciamento de usuários Stormpath: sp_api_key_secret e sp_api_key_id.
O campo final, subs, é a matriz de assinaturas e informa ao feed que o usuário está inscrito.
-
Mapeamento de entrada de feed
A coleção final dela permite o mapeamento de usuários para feeds e o rastreamento dos feeds que foram lidos:
( "_id" : ObjectId("523b2fcc054b1b8c579bdb82"),
"read" : true,
"user_id" : ObjectId("54ad6c3ae764de42070b27b1"),
"feed_entry_id" : ObjectId("523b1153a2aa6a3233a91412"),
"feed_id" : ObjectId("523b1153a2aa6a3233a913f8") )
Como você pode ver, um booleano verdadeiro / falso básico é usado para marcar se o feed foi lido ou não. Agora, o usuário deve poder executar as seguintes funções:
- Criando uma conta
- Inscrever-se ou cancelar a inscrição em feeds
- Lendo entradas do feed
- Marcando feeds ou entradas como lidas ou não lidas
- Redefinir a senha
Aqui está uma lista de como mapear essas operações para rotas e comandos HTTP.
Rota | Comando | Descrição | Variáveis |
/ usuário / inscrição | POSTAR | Registrar um novo usuário | primeiro nome último nome o email senha |
/ user / resetPassword | COLOCAR | Redefinição de senha | o email |
/ feeds | OBTER | Obter assinaturas de feed para cada usuário com descrição e contagem não lida | |
/ feeds / inscreva-se | COLOCAR | Inscrever-se em um novo feed | URL de alimentação |
/ feeds / entradas | OBTER | Obter todas as entradas dos feeds nos quais o usuário está inscrito | |
/ feeds // entradas | OBTER | Obter todas as entradas para um feed específico | |
/ feeds / | COLOCAR | Marque todas as entradas de um feed específico como lidas ou não lidas | read = |
/ feeds // entradas / | COLOCAR | Marque uma entrada específica como lida ou não lida | read = |
/ feeds / | EXCLUIR | Cancelar a inscrição neste feed específico |
HTTP seguro é a abordagem padrão usada para enviar detalhes confidenciais como senhas em um ambiente de produção
Próximas etapas: autenticação do mundo real
A autenticação do usuário é importante para gerenciar com segurança usuários, senhas e redefinições. Existem várias maneiras de autenticar contas de usuário.
Por exemplo, você pode usar um plug-in do Passport com Node.js, que é útil para autenticar no Facebook, Twitter e contas de mídia social.
O exemplo acima depende do uso do Stormpath, uma API REST que suporta autorização e autenticação via chaves de API e oferece gerenciamento de usuário como serviço.
Artigos recomendados
Aqui estão alguns artigos que ajudarão você a obter mais detalhes sobre os aplicativos da Web usando o MongoDB. Basta acessar o link.
- HTML5 vs Flash animado para saber a diferença?
- Java vs Nó JS - 8 diferenças que você deve saber
- Aplicativo de teste na Web, um guia útil e abrangente
- Como usar HTML de modelos da Web. Aplicação | Celular | Melhor
- Desenvolvimento de Software vs Desenvolvimento Web
- Como preparar as ferramentas de análise da Web para trabalhar para você (Guia)
- MongoDB vs PostgreSQL: Quais são as diferenças
- Guia útil sobre MongoDB vs Hadoop
- Melhor guia sobre MongoDB vs Cassandra