MongoDB

Vou usar o SGBD da moda, o MongoDB, nos projetos em que tenho estado a trabalhar com o Python.

O Slackware não traz um pacote de instalação do MongoDB, por isso tive que o criar a partir do código fonte. É claro que não o criei de raiz, usei como guia/base os scripts do SlackBuilds.

O script para criar o pacote do MongoDB precisa de um outro pacote que o Slackware também não tem, o SCons, que é um conjunto de ferramentas com funcionalidades semelhantes ao MAKE.

Slackbuilds MongoDB
Slackbuilds SCons

Editei os ficheiros do Slackbuild para colocar os números das versões mais recentes do SCons e do MongoDB.

O pacote do SCons foi criado e instalado sem problemas.

Antes de criar o pacote do MongoDB, tive que consultar a página Build Mongodb From Source que diz que é necessário correr a linha seguinte, a partir do pacote descomprimido do MongoDB:

pip install -r buildscripts/requirements.txt

Sem a atualização anterior, o script do Slackbuild produz um erro. Durante a compilação, recebi o aviso seguinte:

Run ‘pip2 install --user regex‘ to speed up error code checking

Assim fiz. Corri pip2 install --user regex.

O pacote de Mongo DB demorou cerca de duas horas a compilar num i5 com 8GB de RAM, sem processos pesados a correr, e produziu um pacote com 1GB de tamanho (1.089.913.083 bytes).

Quando lancei o mongo, através do script do Slackware, obtive o erro seguinte:

Error parsing command line: unrecognised option '--nohttpinterface'

No manual do mongo, a partir da versão 3.6, essa opção obsoleta foi removida. Assim, removi-a também do script do Slackware, /etc/rc.d/rc.mongodb e já pude correr o script de lançamento /etc/rc.d/rc.mongodb start.

Um exemplo simples de utilização:

> db.users.insertOne({name:'maria',age:32})
{
        "acknowledged" : true,
        "insertedId" : ObjectId("5ab1ce17d199c47e39de4a59")
}
> db.users.find()
{ "_id" : ObjectId("5ab1ce17d199c47e39de4a59"), "name" : "maria", "age" : 32 }
> db.users.updateOne({name: 'maria'}, {$set: {age: 45}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.users.find()
{ "_id" : ObjectId("5ab1ce17d199c47e39de4a59"), "name" : "maria", "age" : 45 }
>
> db.users.deleteOne({name: 'maria'})
{ "acknowledged" : true, "deletedCount" : 1 }
> db.users.find()
>

Mais informação sobre operações de manipulação de dados: https://docs.mongodb.com/manual/crud/
Manual em geral: https://docs.mongodb.com/manual/

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *