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/