sábado, 24 de novembro de 2012

Instalando MongoDB no windows

É um fato que os "bancos de dados" chamados NoSQL(Not only Sql) estão ganhando cada vez mais destaque, pela sua versatilidade e performance. São implementações para armazenar tipos de dados específicos como: key-value (redis, riak), document(CouchDB, MongoDB), column family(Cassandra, H-Base), graph(Neo4j).

Eu optei por experimentar o MongoDB, pois além de ser um dos mais populares, o mesmo possui opção de download para windows 32-bit e 64bit, e também existem driver's disponíveis para Delphi, são eles: TMongoWire, pebongo e também um driver de minha autoria mongo-delphi-driver. Hoje vou me ater apenas a instalação e acesso ao MongoDB pelo shell, mais num próximo artigo vou abordar o consumo do serviço pelo Delphi.

Confira aqui os demais drivers existentes e tutoriais específico de cada driver.

Você pode baixar a instalador compatível com o seu SO aqui. E reforçando o aviso do site, a versão de 32-bit suporta algo em torno de 2GB de dados, portanto, deve ser utilizada apenas para testes. Se você for utilizar Windows Server 2008 R2 x64, Windows 7 x64, ou Windows 8 x64, há um build específico otimizado para estas versões.

Depois de fazer o download do MongoDB, descompacte o arquivo em um local de sua preferência. Na pasta bin, vem um conjunto de componentes e utilitários, conforme segue:

COMPONENTS
  bin/mongod - The database process.
  bin/mongos - Sharding controller.
  bin/mongo  - The database shell (uses interactive javascript).

UTILITIES
  bin/mongodump         - MongoDB dump tool - for backups, snapshots, etc..
  bin/mongorestore      - MongoDB restore a dump
  bin/mongoexport       - Export a single collection to test (JSON, CSV)
  bin/mongoimport       - Import from JSON or CSV
  bin/mongofiles        - Utility for putting and getting files from MongoDB GridFS
  bin/mongostat         - Show performance statistics


Aqui vamos usar apenas o mongod e mongo. Por padrão, o mongodb armazena os dados na pasta "\data\db", e você precisa criar esse diretório manualmente, ele não cria de forma automática. Eu particularmente, prefiro deixar dentro da pasta onde estão instalado o mongo, ficando assim:


Para que ele reconheça o diretório, é preciso passar o parâmetro "--dbpath [dir]" na inicialização do banco de dados. Também é possível modificar a porta que ele deve usar. Para consultar as demais configurações, utilize "mongod --help". O comando abaixo inicia o serviço:

$ mongod --dbpath C:\mongodb\data\db --port 27017 --verbose

Feito isso, você deve visualizar uma saída como essa, indicando que o servidor foi iniciado e está aguardando conexões:
C:\mongodb\bin>mongod --dbpath c:\mongodb\data\db --port 27017
(...)
(...)
(...)
[initandlisten] waiting for connections on port 27017

Agora podemos brincar com o shell interativo. Execute o aplicativo mongo.exe e será aberto um shell conectado ao database "test", que é o default. Então digite os comandos abaixo para ver o resultado.

C:\> cd \mongodb\bin
C:\mongodb\bin> mongo
MongoDB shell version: 2.0.2
> db //mostra o database atual
test
> db.foo.insert( { a : 1 } ) //Cria a collection "foo" e  insere um documento com a chave/valor a=1
> db.foo.find() //Lista todos os objetos inserido na collection
{ _id : ..., a : 1 }
> db.foo.insert( { b : 2 } ) //Insere um segundo objeto
> db.foo.find()
{ _id : ..., a : 1 }
{ _id : ..., b : 2 }
> show dbs //lista os databases existentes
local   (empty)
test    0.03125GB
> show collections //lista as collections existentes
foo
system.indexes
> help //Mostra os demais comandos disponíveis 

Por isso era isso, em breve trago exemplos de como efetuar esse acesso pelo Delphi.

4 comentários:

  1. Fabricio perfeito seu trabalho com o TMongoWire!

    Esta a um tempão procurando um exemplo para usar o Mongo com o Delphi e consegui achar o seu.

    Parabéns pelo trabalho!

    ResponderExcluir
  2. Olá Adriano, obrigado mais creio que houve um equívoco, talvez tenha ficado confuso no texto, mais na verdade, o projeto TMongoWire é de autoria de Stijn Sanders, e pode ser conferido aqui: https://github.com/stijnsanders/TMongoWire

    O meu projeto é https://github.com/fabriciocolombo/mongo-delphi-driver.

    De qualquer modo obrigado pelo feedback.

    ResponderExcluir
  3. Fabricio, você publicou o tutorial para conexão do MongoDB com o Delpho? não achei...

    ResponderExcluir
  4. onde vc achou o aviso que o mongodb 32bis so suporta 2gb? eu estou procurando isso no site e não encontro nada.

    ResponderExcluir