quinta-feira, 18 de julho de 2013

     Trabalhar com bancos de dados e desenvolvimento de software é, ao mesmo tempo, uma arte e uma habilidade. Como toda habilidade, pode ser treinada para chegarmos àquela sensação de recompensa quando as coisas funcionam. Assim, nada melhor do que utilizar as ferramentas certas - de acordo com cada necessidade - para facilitar nosso trabalho. Quando o assunto é NoSQL, um conjunto de ferramentas que funcionam muito bem juntas são Python e MongoDB.


Por que MongoDB?

     O MongoDB é um banco de dados de alta performance orientado a documentos e é open source. Por ser orientado a documentos (JSON) não possui transações nem joins. Resultado? Fazer consultas é algo muito simples - são mais fáceis de escrever e mais fáceis de ajustar. Outras características que o torna tão interessante:
  • Auto - Sharding - o conceito de sharding é simples: quanto você trabalha com uma grande quantidade de dados e está no limite de disco e/ou a falta de espaço, a solução para este problema é ter os seus dados divididos entre várias máquinas.
  • Indexes - fáceis de criar e excelentes otimizadores de consultas - falaremos no futuro sobre como criar e gerenciar seus indexes.
  • Caso seja necessária a inserção de novos atributos, é possível inseri-los apenas nos documentos necessários sem precisar criar uma nova coluna e atribuir um valor a todos os documentos (registros no sql) na tabela relacionada.

Mas por que Python?

     Para quem ainda não conhece, Python é uma linguagem orientada a objetos, open-source, desenvolvida no início dos anos 90. O que a torna tão especial é sua sintaxe extremamente simples aliada às suas poderosas funções e bibliotecas. Nos últimos anos, tem surgido como a linguagem utilizada para ensino de Machine Learning pois, com poucas linhas de código, é possível implementar inúmeros algoritmos.
     Utilizando-se desta poderosa estrutura, vamos conectar o Python ao MongoDB utilizando a biblioteca pymongo, disponível na versão 2.5.1  em


Primeiros Passos

     Vamos demonstrar abaixo o básico para se trabalhar em conjunto com estas duas ferramentas.

import pymongo

# Para conectar com o banco de dados
myConnection = pymongo.Connection("mongodb://localhost", safe=True)
## é uma boa prática usar safe=True, para garantir que o MongoDB verifique a existência de erros

# Para selecionar uma base de dados
myDB = myConnection['NFL']

# Para selecionar uma collection (análogo as tabelas nos bancos relacionais)
myCollection = myDB['NYGiants']

# Para fazer uma consulta de um único documento
myQuery = myCollection.find_one({'posicao':'qb'})

print myQuery

## Se o resultado da consulta for mais de um documento, para exibí-los use o código
         #for cada_doc in myQuery:
                 #print cada_doc

# Para inserir um novo documento
inserir = myCollection.insert({
                               'nome':'Leandro',
                               'posicao':'defender',
                               'ultimaPartida' : True
                               }
                               )
## a variável 'inserir' armazenará o _id do novo documento

# Para contar o número de documentos
conta = myCollection.count()
print str(conta) + ' documentos'

# Por fim, para atualizar um documento
myCollection.update(
                    {'_id': inserir
                               #Equivalente à cláusula where do SQL
                    },
                    {'ultimaPartida' : False}
                    )

# Para apagar um documento
myCollection.remove({
                               'nome':'Leandro'
                                         },safe = True)

     Nos próximos posts veremos mais detalhes destas ferramentas, com mais exemplos ilustrando a simplicidade em trabalhar com Python e MongoDB

     Até o próximo post!

0 comentários:

Postar um comentário