Archive for the ‘Dicas’ Category

dom
fev 21st

Manipulando dados pelo shell do MongoDB ...

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

ter
nov 3rd

Cliente SQL no Ubuntu 9.04 ...

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.

DBVisualizer multi bancos

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/

dom
ago 30th

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