Grupo do NoSQL Brasil no facebook

dezembro 28th, 2011 | by suissa | notícias

dez
28

Pessoal como o facebook anda movimentando bastante os grupos de desenvolvedores resolvi criar o grupo para discutirmos sobre NOSQL la e quem sabe agregar mais colaboradores para o portal, lembrando que quem quiser escrever algum artigo é só me avisar que eu adiciono como autor.

Como o grupo foi criado hoje ainda não possui uma url amigável mas quando tivermos um número suficiente terá. Conto com vocês!!!

link grupo: http://www.facebook.com/groups/207239866029581/

1 Comment »

Como instalar MongoDB no Linux

novembro 23rd, 2011 | by suissa | mongodb

nov
23

Vou demonstrar como instalar o MongoDB no Linux (Ubuntu):

Abra o terminal e vamos instalar o MongoDB via apt-get:

sudo apt-get install mongodb

 

Agora precisamos criar 2 pastas:

sudo mkdir /data
cd /data
sudo mkdir db
sudo chown seu_usuario_linux db

PRONTO! Agora podemos rodar nosso MongoDB com o comando mongod para iniciar o serviço e com mongo nós abrimos o cliente no terminal.

Qualquer problema na instalação posta aqui nos comentários para que possamos ajudar.
ps: quase sempre é problema de permissão nas pastas.

3 Comments »

Como instalar Redis no Linux

outubro 28th, 2011 | by suissa | redis

out
28

Quem não conhece o redis ele é um banco de dados NOSQL do tipo chave:valor persistente e distribuído, ou seja, ótimo para cache.

Para instalarmos ele é bem simples siga esses comandos:

$ wget http://redis.googlecode.com/files/redis-2.2.8.tar.gz
$ tar xzf redis-2.2.8.tar.gz
$ cd redis-2.2.8
$ make
Para rodar o servidor é 'so ir na pasta src e mandar rodar o redis-server:

 

$ cd src && ./redis-server

Para testá-lo com o cliente do redis é só seguir:


$ cd src && ./redis-cli
redis> set nome Suissa
OK
redis> get nome
"Suissa"

Simples e fácil como é o próprio banco.


 

 

2 Comments »

Santo Large Hadron Collider, Batman!

junho 6th, 2010 | by suissa | mongodb, python

jun
06

LHCValentin Kuznetsov acaba de apresentar um trabalho na Conferência Internacional sobre Ciência Computacional sobre a utilização do CERN MongoDB para os dados do Large Hadron Collider. O papel, o CMS de agregação de dados do sistema, está disponível como um PDF no ScienceDirect.

Um resumo

“CMS” significa Compact Muon Solenoid, um detector de partículas da física construída sobre o Large Hadron Collider. O projeto CMS publicado possui alguns quadrinhos que proporcionam uma agradável e simples explicação do que o CMS / LHC faz.
O LHC gera enormes quantidades de dados de todas as variedades, que é distribuído através de uma rede mundial. Ele envia mensagens de status para alguns dos computadores, informações do trabalho de monitoramento para outros computadores, informações contábeis ainda em outro lugar, e assim por diante.
Isto significa que cada local tem consultas especializadas que pode fazer sobre os dados que possui, mas até agora tem sido muito difícil para consultar através de toda a rede.

Como funciona

O sistema de totalização MongoDB usa como cache. Ele verifica se Mongo tem a agregação que o usuário está pedindo e retorna-o, caso contrário, o sistema faz a agregação e salva-o Mongo.
Eles consultam o sistema usando uma SQL, linguagem simples, como a que eles transformam em uma consulta MongoDB. Então, algo como file = “abc”, execute> 10 torna-se “file:” abc “,” executar: (“$ (gt”: 10)). (Não é o mesmo que o SQL, mas o código para isso poderia ser interessante para pessoas que querem usar consultas SQL com MongoDB).
Se o cache não contém a consulta solicitada, o sistema itera sobre todos os lugares do mundo que poderia ter essa informação e consulta-los, recolhendo os seus resultados. Em seguida, ele mescla todos os resultados, fazendo uma espécie de “GROUP BY” operação baseada em pré-identificação dos grupos e insere as informações agregadas no cache.
Ele foi construído usando o driver Python.

Objetivos

Eles estão ansiosos para testá-lo em campo e escalar horizontalmente o sistema com sharding. Como se trata de uma grid aggregation/querying tool, eles também estão interessados na sua aplicação a problemas fora do LHC e o CERN.

1 Comment »

Sistema de prioridades em PHP e MongoDB

maio 29th, 2010 | by suissa | mongodb, nosql

mai
29

Eu queria começar a aprender sobre NoSQL especificamente sobre o MongoDB e nada melhor como fazer algo na pratica. Passei por alguns momentos de dificuldade especialmente no update, já que era a primeira vez.

Eu fiz ele  todo orientado a objetos, primeiro comecei com a conexão com o banco de dados

[php]
class conexao{
function __construct(){
$nome_banco = ‘prioridades’;
$nome_collection = ‘tarefas’;

$this->conexao = new Mongo();
$this->db = $this->conexao->$nome_banco;
$this->collection = $this->db->$nome_collection;

header (‘Content-type: text/html; charset=utf-8′);
}
}
[/php]

Sem muitos problemas aqui, a unica coisa, foi o utf8, pois tive alguns problemas de codificação na hora de inserir os dados, se você rodar esse código, ele já vai criar o banco e a collection automaticamente caso ela não exista.

O metodo de mostrar um registro especifico tem um segredinho, que é a criação de um MongoID, sem ele não consegui encontrar o registro. O findOne, só retorna 1 documento.

[php]
function mostrar($_id){
$mongo_id = new MongoID($_id);
return $this->collection->findOne(array(‘_id’ => $mongo_id));
}
[/php]

O metodo que usei para listar é bem simples

[php]
function listar($filter){
return $this->collection->find($filter);
}
[/php]

A parte de inserir um documento no banco de dados, foi bem fácil também. Para inserir, você coloca em um array todas as informações, o campo e o valor dele.

[php]
function inserir(){
$this->query = array(
‘UsuarioID’ => $this->UsuarioID,
‘Usuario’ => $this->Usuario,
‘Tarefa’ => $this->Tarefa,
‘Tipo’ => $this->Tipo,//Obrigatório, idéia, outro
‘Prioridade’ => $this->Prioridade
);
$this->collection->insert($this->query);
}
[/php]

O método de exclusão também não tem segredos, é só criar o MongoID que esta tudo certo

[php]
function excluir(){
$this->mongo_id = new MongoID($this->_id);
$this->collection->remove(array(‘_id’ => $this->mongo_id));
}
[/php]

Agora vamos lá, a parte que eu tive mais dificuldade que foi o update. No update, é preciso usar o $set para alterar um campo especifico da collection, sem ele, ele vai alterar o documento todo, vai remover todo o resto e vai manter apenas o campo que você passar ali. Uma dificuldade que eu tive, foi que o $set só funciona com aspas simples, com aspas duplas ele definitivamente não funcionou.

[php]
function mudar_tarefa(){
$this->mongo_id = new MongoID($this->_id);
$this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$set’ => array(‘Tarefa’ => $this->Tarefa)), false);
}

function mudar_prioridade(){
$this->mongo_id = new MongoID($this->_id);

if($this->modo==’up’){
$this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$inc’ => array(‘Prioridade’ => 1)), false);
}elseif($this->modo==’down’){
$this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$inc’ => array(‘Prioridade’ => -1)), false);
}
}
[/php]

O $inc, serve para incrementar um valor em mais 1 ou menos 1, isso ai você pode especificar da maneira que você quiser. Lembrando que você tem que criar o MongoID para poder alterar o documento.

Essa ai é a classe que usei para fazer o sisteminha. As minhas dificuldades foram bobas, mas só vendo isso agora, pois não consegui encontrar em nenhum lugar sobre isso, principalmente sobre as aspas simples.

Ta aqui o download para quem quiser baixar.

http://www.megaupload.com/?d=5I0VX4I4

No Comments »

VoltDB: Escalabilidade de NoSQL em SQL

maio 29th, 2010 | by suissa | nosql, sql, voltdb

mai
29

A empresa VoltDB (uma empresa fundada pelo Mike Stonebraker, o mesmo que criou  o PostgreSQL) anunciou ontem o release oficial do VoltDB: um banco de dados relacional com suporte à ACID e, segundo a empresa, facilmente escalável como alguns bancos de dados NoSQL.

VoltDB

A premissa principal do VoltDB é simples: ele é diferente da maioria dos bancos de dados relacionais de hoje, que se baseiam em designs antigos e que foram concebidos bem antes dos bancos de dados com workloads “web-scale”. Os bancos de dados tradicionais podem “desperdiçar” mais de 90% do seu tempo com tarefas burocráticas, como logging, lagging e gerenciamento de buffer.  O VoltDB utiliza processamento in-memory e elimina vários destes overheads que ocorrem em bancos de dados relacionais e ainda consegue manter a consistencia transacional (ACID). Com isso, o VoltDB consegue ser 50x mais rápido do que RDBMS tradicionais.

Em alguns testes, o VoltDB conseguiu se sair tão bem ou melhor se comparado com bancos de dados NoSQL que utilizam armazenamento key-value. Os mesmos testes demonstram que o VoltDB pode escalar quase linearmente: em uma determinada máquina, ele conseguiu processar 56.000 TPS e em um cluster com 12 máquinas, ele conseguiu processar 560.000 TPS.

Ao que parece, o VoltDB é uma grande promessa, pois possibilita uma escalabilidade fácil e eficiente sem abandonar o modelo relacional, no qual a maioria dos desenvolvedores hoje está acostumada e no qual boa parte dos sistemas é baseado.

artigo retirado de: http://escalabilidade.com/2010/05/26/voltdb-escalabilidade-de-nosql-em-sql/

Acho válido fazer alguns testes com ele pois ele possui 2 licensas a free e a paga(que por sinal é meio carinha)

Open-Source Community Project Commercial Subscription
Recommended for developers and proof of concept deployments. This edition is unsupported and most likely to be used in non-mission critical applications. Recommended for production environments that demand scale and availability. Professional support, maintenance and commercial licensing terms make the Enterpise Edition the right choice for critical deployments.
Base System
High-performance, ACID-compliant DBMS Yes Yes
Scale-out capability Yes Yes
High availability, node failover (K-safety) Yes Yes
Disk snap-shot persistence Yes Yes
Data connector to file system (spooling) Yes Yes
Support SLA
Community forums Yes Yes
Email, Phone Yes
Operating system certification Yes
Support hours 8AM – 5PM
Response time 8 hours
License
License GPL Commercial
Commercial embedding rights Within GPL products only Yes
Annual Subscription Price Community Edition Commercial Edition
Base-system – 4-node cluster (“node” = a server of any type, with any number of CPU cores, RAM, etc.) Free $15,000 USD/year
Additional nodes (“node” = a server of any type, with any number of CPU cores, RAM, etc.)
Price per node for nodes 5 through 12 Free $3,200/node/year
Price per node for nodes 13 and above Free $2,800/node/year
Three-year subscription discount 25%

Additional Support Offerings

Enhanced Premium Support

Extends the standard support SLA to include 24 x 7 support hours and 2-hour response time. Price is in addition to annual subscription above.

$18,000
Quick Start Service

Five day professional services engagement to build initial proof of concept (POC), install it into the environment and run benchmarks. Includes full training on using and building VoltDB applications. Additional T&E charges may apply.

$25,000
Onsite Group Training (2 day)

Onsite two-day training class on using and building VoltDB applications. Additional T&E charges may apply.

$7,500
Live Instructor-Led Online Training Classes

VoltDB instructor-led online training in various aspects of VoltDB from installation and operation to building VoltDB client libraries and VoltDB applications. Each 3-hour course will include training materials, interactive training and question and answer.

$500

2 Comments »