Archive for the ‘Dicas’ Category
Assim como o MySql o MongoDB tem um shell para manipular dados diretamente na base, seguem os comandos (CRUD) básicos para inserir, buscar, atualizar e apagar documentos.
Para inicializar o shell:
/opt/mongo/bin/./mongo
Se tiver algum problema com este comando então faça isto:
cd /opt/mongo/bin/
./mongo
As linhas abaixo serão exibidas:
MongoDB shell version: 1.3.3-
url: test
connecting to: test
type "help" for help
>
Os comandos iniciais são:
| show dbs | Mostra todas as bases de dados |
| use dbname | Aponta a váriavel “db” para a base digite no lugar de dbname |
| show collections | Exibi as coleções da base em uso. As collections “equivalem” as tables nos bancos relacionais. |
| db.collection_name.insert(object) | Cria um documento |
| db.collection_name.find() | Exibi os documentos da coleção |
| db.collection_name.update(criteria_object_or_pair_key_value) | Atualiza um documento com o critério ou chave par/valor definido |
| db.collection_name.remove(criteria_object_or_pair_key_value) | Remove um ou mais documentos com o critério ou chave par/valor definido |
Vamos à prática para exemplificar os comandos acima. Abaixo estamos verificando as bases existentes, definindo que usaremos a base “local”, confirmando que estamos na base correta e mostrando as coleções que neste caso ainda não existem.
> show dbs admin local >use local switched to db local > db local >show collections false
Agora vamos criar uma coleção de documentos chamada “minha_colecao” e inserir alguns dados.
>db.minha_colecao.insert({ nome: "Mauricio", fone: "12345678", idade: 10 })
ObjectId("4b808e9a6eff")
Quando exibimos as coleções novamente temos “minha_colecao” e “system.indexes” sendo a última criada automaticamente.
>show collections
minha_colecao
system.indexes
Podemos verificar nossos documentos criados e inserir outros.
>db.minha_colecao.find() { "_id" : ObjectId("4b808e9a6eff"), "nome" : "Mauricio", "fone" : "5678", "idade" : 10 } >db.minha_colecao.insert({ nome: "Monet", fone: "000", idade: 100 }) ObjectId("4b912e9a6ef4") >db.minha_colecao.find() { "_id" : ObjectId("4b808e9a6eff"), "nome" : "Mauricio", "fone" : "5678", "idade" : 10 } { "_id" : ObjectId("4b912e9a6ef4"), "nome" : "Monet", "fone" : "000", "idade" : 100 }
Para atualizar os documentos podemos após o hash passar o parâmetro “true” que força uma inserção caso o critério utilizado não seja encontrado.
>db.minha_colecao.update({nome: "Mauricio"}, {nome: "Amorim", fone: "000"}, true) >db.minha_colecao.find() { "_id" : ObjectId("4b808e9a6eff"), "nome" : "Amorim", "fone" : "000", "idade" : 10 } { "_id" : ObjectId("4b912e9a6ef4"), "nome" : "Monet", "fone" : "000", "idade" : 100 } >db.minha_colecao.update({nome:"Inexistente"},{nome:"Insere novo", fone:"2355"}, true) >db.minha_colecao.find() { "_id" : ObjectId("4b808e9a6eff"), "nome" : "Amorim", "fone" : "000", "idade" : 10 } { "_id" : ObjectId("4b912e9a6ef4"), "nome" : "Monet", "fone" : "000", "idade" : 100 } { "_id" : ObjectId("4b987e9a6e10"), "nome" : "Insere novo", "fone" : "2355"}
Por último vamos remover todos os documentos seguindo um determinado critério, neste caso o “fone” igual a “000″. Cuidado! Se o parâmetro com um critério não for informado todos os documentos da coleção serão removidos.
>db.minha_colecao.remove({fone: "000"}) >db.minha_colecao.find() { "_id" : ObjectId("4b987e9a6eff"), "nome" : "Insere um novo", "fone" : "2355"}
As funções utilizadas acima também podem receber um objeto como parâmetro e seu funcionamento será idêntico.
> xyz = { nome: "Monet", fone: "111", profissao: "artista" } >db.minha_colecao.insert(xyz) ObjectId("18b12e9a6ef4") >db.minha_colecao.find() {"_id": ObjectId("18b12e9a6ef4"), "nome":"Monet", "fone" : "111", "profissao" : "artista" }
Estes são comandos básicos de manipulação de dados, mais informações podem ser encontradas nas referências abaixo. Recomendo os screencasts do Joon You que são bem práticos.
Referências:
MongoDB DBA Operations
MongoDB Advanced Queries
Screencast – Introduction MongoDB with Joon You
The interactive shell by Kyle
Desde que comecei a utilizar Linux tive a necessidade de usar um cliente Sql e a principal dificuldade era encontrar uma boa ferramenta para acessar bancos MS SQL Server. Fiz alguns testes com alguns clientes Sql, mas todos me deram muito trabalho na instalação e na utilização. Esses dias depois quebrar um pouco a cabeça cheguei a uma instalação “redonda” e rápida, acho que deve servir para a maioria das pessoas que precisam de uma ferramenta deste tipo para resolver problemas simples de consultas e pequenas atualizações em bancos de dados MS SQL Server, MySql, Oracle. A instalação abaixo depende da JVM porém tive alguns problemas fazendo a instalação a parte, então preferi fazer o download do pacote com a JVM embutida como segue nos passos para instalação abaixo.
Instalação
- Baixe o pacote rpm do DBVisualizer já com a JVM
- Instale o programa “Alien”
sudo apt-get install alien
Agora é necessário converte o pacote .rpm para .deb usando o “Alien”
sudo alien dbvis_linux_6_5_10_jre.rpm
Após isto devemos seguir com a instalação normal do pacote para debian
sudo dpkg -i dbvis_6.5.10_i386.deb
Entre no diretório onde foi feita a instalação e rode o comando ./dbvis
cd /opt/DbVisualizer-6.5.10/
./dbvis
As coisas bacanas que vi com o pouco que utilizei foram:
- Possibilidade de conectar mais de um tipo de banco ao mesmo (no meu caso MS SQL Server e MySql);
- Os drivers gratuitos já ajudam na maioria dos casos;
- Facilidade para navegar entre os atributos do BD e dos dados;
- Filtro de dados;
- entre outras.
O que é ruim:
- É um software proprietário, então muitas funcionalidades não estão disponíveis na versão livre;
- Muitos drivers de conexão também não estão disponíveis;
- Navegando simultaneamente entre tipos de BD diferentes apareceram algum erros e foi preciso reconecta-los.
Referências:
- http://blogs.merikan.com/peter/2007/11/14/installing-dbvisualizer-on-ubuntu/
- http://www.minq.se/products/dbvis/download/install.jsp
- http://www.aquafold.com/index.html
- http://www.vivaolinux.com.br/dica/Java-SquirrelSQL-Client/
- http://squirrel-sql.sourceforge.net/
Continuando a configuração de um ambiente para iniciar um projeto em Rails, vamos configurar o Ruby, o Ruby on Rails e algumas gems. Primeiramente por uma questão de compatibilidade vamos preparar a configurações para instalar o Ruby 1.8.6. Por padrão o Ubuntu 9.04 Jaunty Jackalope vem configurado para instalação da verão 1.8.7 do Ruby, para alterar precisamos alterar alguns arquivos. Verifique se já existe alguma versão instalada e remova.
ruby -v sudo apt-get remove ruby
Depois faça as seguintes alterações no arquivo sources.list
sudo gedit /etc/apt/sources.list
e cole o texto abaixo no final da página
Após crie o arquivo “preferences”
sudo gedit /etc/apt/preferences
e cole o texto abaixo
Agora as configurações estarão apontando para o repositório que carregará a versão 1.8.6 do Ruby, então podemos instalar os pacotes…
sudo apt-get update sudo aptitude install ruby rdoc irb ruby1.8-dev sudo aptitude install libyaml-ruby libzlib-ruby ri libopenssl-ruby
…e conferir a versão.
ubuntu@ubuntu:~$ ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux]
Instalando RubyGems
Execute os comandos abaixo no terminal para baixar o pacote, criar um alias para caminho e instalar a RubyGems.
cd ~ mkdir gems && cd gems wget http://rubyforge.org/frs/download.php/55066/rubygems-1.3.2.tgz tar xf rubygems-1.3.2.tgz cd rubygems-1.3.2/ sudo ruby setup.rb sudo ln -s /usr/bin/gem1.8 /usr/bin/gem sudo gem update --system
Agora podemos instalar o Rails e o MySql
sudo gem install rails sudo gem install mongrel sudo apt-get install mysql-server libmysqlclient15-dev sudo gem install mysql
Para verificar o que foi instalado e as versões, podemos utilizar os comandos abaixo.
gem environment gem list
Referências:
- http://panthersoftware.com/articles/view/6/ruby-on-rails-development-on-ubuntu-9-04-jaunty-using-ruby-1-8-6




