Tag Archive | MongoDB

Coleções para MongoDB – parte 2

Muitos meses atrás, eu fiz um post com algumas poucas dicas para conseguir bases para testar a API do MongoDB. Após esse tempo, eu adquiri novas estratégias para alimentar uma base de dados para começar a brincar com o MongoDB. Esse post é a continuação que detalha essas novas dicas.

um projeto que mantém uma base de dados com os trajetos dos taxis de New York. Esses dados estão salvos no formato CSV e eu fiz um script para baixar (~50G) e converter esses dados para MongoDB. O script depende do bash para funcionar.

Um pouco apelação, pois os dados não são muito relevantes, mas eu fiz um script em Python para transformar a base de dados dos pacotes do ArchLinux instalados em uma base do MongoDB.

Uma outra fonte de dados interessante é a base de dados que o projeto DataViva mantém e pode ser importado via csv. A base de dados contém informações interessantes sobre, entre outros (visite a página!), salários. Vale a pena, também, visitar a página principal do projeto DataViva.

E, como última dica, há também as bases de dados que o curso OpenIntro Statistics utiliza. OpenIntro Statistics é uma iniciativa nobre de oferecer material de ensino de qualidade para qualquer um com acesso a internet. O meu atual professor de probabilidade e estatística desistiu do material anteriormente adotado ao descobrir essa iniciativa.

EDIT (2016/03/04):

Achei outro projeto interessante para gerar bases de dados, o MongoDB Smasher. Essa é uma pequena ferramenta semelhante em funcionamento ao site http://www.json-generator.com/.

Maceió-MUG no SIESA 2013

Nos dias 7 e 8 de dezembro de 2013 ocorreu o I Fórum de Sistemas de Informação e Empreendedorismo Social de Alagoas em Santana do Ipanema e eu resolvi, junto ao Vilker, membro do Maceió-MUG, divulgar a tecnologia MongoDB por lá em um minicurso de 3h.

O que posso comentar é que fiquei satisfeito com o resultado e animação da galera lá presente, sabendo que pelo menos algumas pessoas aprenderam o básico e estão capacitadas para começar um novo projeto usando o MongoDB. E uma sugestão minha é que caso você visite a cidade, faça turismo gastronômico, pois a comida em muitos dos cantos da cidade é bem saborosa.

Os slides estão disponíveis numa página github do Maceió-MUG e as fotos na página Meetup do mesmo.

Maceió MongoDB User Group – segundo encontro

No dia 22 de novembro houve o segundo encontro do grupo de usuários de MongoDB de Maceió e realizamos um Coding Dojo envolvendo JavaScript, Node.js e MongoDB. O desafio foi criar uma wiki, que não chegamos a terminar, e promover uma maior interação entre os membros do grupo.

As fotos do evento estão com um destino incerto devido a falhas diversas no smartphone do “fotografo” responsável, então resolvi digitar esse log mesmo sem as fotos disponíveis. Houve também um problema com horário/acesso-a-impressa/pen-drive e a divulgação do evento foi reduzida dessa vez (e a redução do número de pessoas que compareceram foi perceptível), mas isso não tira o meu ânimo de continuar a organizar esses eventos. Na verdade vou me esforçar mais para que os próximos encontros sejam melhores.

Também perdi os slides (ou talvez eu só não tenha investido tempo suficiente ainda), mas assim que achá-los coloco o link para download aqui nesse post.

O próximo “investimento” é um minicurso que irei ministrar, junto ao Vilker, num interior do estado esse final de semana.

Maceió MongoDB User Group – primeiro encontro

Dia 18 de outubro deste ano organizei o primeiro encontro do grupo de usuários de MongoDB de Maceió. Esses eventos ocorrerão mensalmente e a página do grupo pode ser encontrada no meetup.

Esse primeiro encontro aconteceu na UFAL e, durante o mesmo, eu preparei um minicurso básico de MongoDB durante pela manhã para expandir a base de programadores de MongoDB da UFAL. Utilizei o quadro branco (sem slides) e um formato dinâmico/interativo para o minicurso. Fotos podem ser encontradas no meetup.

A programação do dia prosseguiu com outro minicurso pela tarde, que tinha como objetivo mostrar tarefas legais que podem ser feitas com o MongoDB e, dessa forma, estimular os futuros programadores. O tema do minicurso foi agregação de dados usando MongoDB e ele seguiu um formato parecido com o minicurso que aconteceu pela manhã. Fotos também podem ser encontradas no meetup.

Não pretendo organizar encontros que tenham um formato fechado e, assim, para o próximo, não pretendo incluir minicursos.

Coleções para MongoDB

Para quem está aprendendo MongoDB (ou qualquer banco de dados), uma coisa legal é ter coleções à disposição para brincar com as técnicas que for aprendendo.

https://asciinema.org/a/7835

Uma coleção muito utilizada nos cursos oferecidos pela MongoDB University é a coleção zips.json. Essa é uma coleção contendo a cidade, localização (latitude e longitude), população e estado de cada código postal (atributo _id na coleção) dos Estados Unidos. Eu não sei nada sobre a precisão desses dados e não recomendo que você baseie sua possível pesquisa nesses dados, mas é uma coleção muito interessante para brincar com o MongoDB. Você pode importar essa coleção com o comando:

Outra fonte de coleções interessantes para MongoDB é o reddit. Com a url de um subreddit, tudo que você precisa fazer para baixar o json desse subreddit é adicionar “.json” ao final da url. Por exemplo, http://www.reddit.com/r/programming/ fica http://www.reddit.com/r/programming/.json. No objeto JSON retornado, o atributo “data.children” é um array que é contém vários documentos que são bons candidatos à fazer parte de uma coleção. Para importar esses dados para o MongoDB:

  1. Salve o arquivo com a extensão “.js“.
  2. Edite o arquivo e coloque “foobar = ” logo no começo. Essa mudança fará com que o objeto seja acessível através da variável foobar.
  3. Inicie o console mongo passando o caminho do arquivo e a opção “–shell” como parâmetros. A opção “–shell” fará com que o console continue aberto após processar o arquivo.

Caso esteja disposto a criar algumas coleções semi-aleatórias, uma ferramenta legal que irá lhe ajudar é o JSON Generator.

uma pergunta no StackOverflow para a qual eu sacrifiquei 100 pontos de minha reputação com o propósito de listar mais coleções.

Como última opção, você sempre pode converter coleções de XML e outros formatos para JSON ou CSV e importar no MongoDB. E você sempre tem a opção de criar um script para fazer a conversão.

Programação 3 – parte 2

No último post da série, eu ainda não havia feito nenhuma linha de código, e estava decidido a fazer a parte principal do sistema em Python, até que eu li um artigo sobre Node.js e decidi que essa seria a tecnologia que eu utilizaria.

Você pode pensar no Node.js como um interpretador de Javascript que usa a engine V8 da google e adiciona uma API para tratar I/O de forma assíncrona, usando o paradigma de programação orientada a eventos. Essa abordagem resolve o problema c10k. Um servidor que usa a mesma abordagem para resolver o mesmo problema e é utilizado em ~7,65% de todos os domínios é o nginx.

Alguns problemas que eu enfrentei é que eu nunca tinha trabalhado com Javascript na vida, e junto com o fato de a tecnologia ser nova, tive dificuldades até para realizar a escolha dos módulos que eu iria utilizar.

Para criar os serviços, eu optei pelo uso do formato de dados JSON-RPC e pela implementação node-jsonrpc. Durante os testes com telnet, minha implementação dos serviços estava sempre falhando e explorando muito o problema (criei até uma ferramenta para me ajudar nos testes) descobri que era um bug na implementação do JSON-RPC, que ajudei a corrigir.

Para persistência, optei pelo banco de dados MongoDB, e pelo módulo mongoose, que ajudou-me inclusive na modelagem. O MongoDB é um banco de dados NoSQL escalável, de alta-performance e escrito em C++ que armazena objetos JSON.

Utilizei o módulo node-static, que inclusive faz cache, para servir os arquivos estáticos. O site que criei é simples, mas faz uso de tecnologias interessantes como HTML5 para os forms, o velho e já conhecido CSS e Javascript+dojo para fazer e tratar as requisições JSON-RPC.

Não tive tempo de criar uma aplicação gráfica completa a tempo para a entrega do trabalho, então fiz uma aplicação em Qt, que era nada mais que uma janela com um widget QWebView ao centro.

Posso afirmar que essa disciplina foi uma experiência interessante (principalmente comparada às outras disciplinas do curso de ciência da computação na UFAL). Caso queira os slides que eu criei para fazer o screencast anterior, use o link abaixo:

http://www.mediafire.com/?4ybe1njebvak0p9

%d blogueiros gostam disto: