Fault Tolerance LOL
maio 6th, 2010 | by suissa | escalabilidade, lol, nosql
mai
06
maio 6th, 2010 | by suissa | escalabilidade, lol, nosql
mai
06
maio 6th, 2010 | by alex | escalabilidade, mongodb, nosql, wamp
mai
06
Postei recentemente no nosso grupo de nosql no google groups, sobre como instalar o MongoDB e PHP no Windows. Achei a instalação extremamente fácil e vou ensinar pra vocês agora.
Baixe o mongodb essa é a versão 32 bits se o teu pc for 64, baixa esse a versão 64 bits aqui. Enquanto baixa, vai lá no C: e cria duas pastas:
mongodb
data
Dentro da pasta data cria uma pasta chamada db
Vai ficar extamente assim:
c:/mongodb
c:/data/db
Assim que acabar o download do mongodb, extraia todos os arquivos para a pasta mongodb, todos aqueles bin, includes e etc…
Pronto, agora vamos em Iniciar > Executar > e digite: CMD
Agora no prompt de comando digite “cd..” sem aspas, até chegar no c:\
Dai entre na pasta bin do mongodb com o comando:
cd mongodb\bin
e digite mongod
mongod mesmo, com o d no final
Pronto o teu servidor está rodando.
Se quiser pode acessar a página do mongodb em http://localhost:27017 se entrar esta tudo ok.
Agora vamos juntar o MongoDB e PHP instalando as dll’s do driver php usando o wamp, mas o processo é bem semelhante se você quiser instalar o MongDB e PHP sem usar o WAMP.
O WAMP usa o php 5.3 vc6 ts. Vamos baixar esse drive:
http://github.com/downloads/mongodb/mongo-php-driver/mongo-1.0.6-r1-php5.3vc6ts.zip
No site do MongoDB tem um monte de drivers pra outros projetos e outras versões do PHP:
http://www.mongodb.org/display/DOCS/Downloads
Extraia a dll do MongoDB para a pasta do PHP, no WAMP você coloca em:
C:\wamp\bin\php\php5.3.1\ext
obs.: esse caminho é do meu wamp, veja onde tu instalou ele.
Agora vai lá no iconezinho do WAMP fecha ele e abre denovo, quando aberto clica uma vez nele vai em PHP > php extensions e procura por php_mongo.dll a hailita ele.
Fecha e abre o WAMP novamente.
Pronto, já é pra tudo funcionar. Entrem em http://www.phpmoadmin.com/
Baixa ele e coloca na tua pasta do apache, a que tu usa para rodar as páginas.
Aqui esta um exemplo de uma página:
[php]
<?php
$conexao = new Mongo();
$db = $conexao->testebd;
$collection = $db->usuarios;
function getTime(){
static $tempo;
if( $tempo == NULL ){
$tempo = microtime(true);
}else{
echo ‘Tempo (segundos): ‘.(microtime(true)-$tempo).”;
}
}
getTime();
for($i=0;$i<1000000;$i++){ //1 milhão de registros.
$obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );
$collection->insert($obj);
}
$filter = array(
"title" => "Calvin and Hobbes"
);
$cursor = $collection->find($filter);
$cursor->sort(array("title" => 1))->limit(4)->skip(0);
var_dump($cursor->count(true));
var_dump($cursor->count());
getTime();
echo "<br/><br/><br/>";
foreach ($cursor as $obj) {
echo $obj["title"]. " – " . $obj["_id"] . "<br/>\n";
}
$conexao->close();
?>
[/php]
Isso mesmo, ele vai inserir 1 milhão de registros e vai retornar o tempo, já botem o resultado aqui para agente comparar.
Abraços
maio 5th, 2010 | by suissa | escalabilidade, memcached, nosql, sql, wamp
mai
05
[php]
<?php
// Exemplo extraído do site www.php.net
$memcache = new Memcache;
$memcache->connect("localhost",11211);echo "Server's version: " . $memcache->getVersion() . "n";
$tmp_object = new stdClass;
$tmp_object->str_attr = "test";
$tmp_object->int_attr = 123;
$memcache->set("key",$tmp_object,false,10);
echo "Store data in the cache (data will expire in 10 seconds)n";
echo "Data from the cache:n";
var_dump($memcache->get("key"));
?>
[/php]
maio 5th, 2010 | by suissa | bigtable, couchdb, escalabilidade, nosql
mai
05
O CouchDB é um dos mais famosos no time dos key-value stores. Ele usadocumentos para definir uma estrutura no banco, armazenando uma chave associada ao um documento. Um documento é apresentado como JSON. Por exemplo:
{
"Subject": "Bancos não relacionais" "Author": "Nico Stepat" "PostedDate": "10/15/2009" "Tags": ["database", "nosql", "rest"] }
Repare a estrutura dos dados é definido através da aplicação, o CouchDB não exige nada, apenas um documento JSON.
Talvez o CouchDB ficou famoso por causa da simples API REST e do uso do JSON, ou da interface grafica bonita ou por causa dos views interessantes usando Map-Reduce ou da replicação Multi-Master ou por que foi escrito em Erlang (como esse eesse também). Seja que for, a promessa principal do NoSQL – sendo escalável – o CouchDB não compriu ainda. Ele não é distribuído sozinho, e precisa de ajudaexterna para tal.
Outra forma de dar alguma estrutura aos dados ficou famosa por causa do Google Bigtable. A idéia é não salvar os dados em linhas como estamos acustomados pelos bancos relacionais. Os dados serão salvos através de colunas. Veja a diferença:
Row-Oriented (3 rows presentes – Nome, Salário, Data):
João,1432.00,15/10/2009 Maria,1511.00,13/10/2009 Pedro,1721.00,01/10/2009
Column-Oriented (mesmo exemplo):
João,Maria,Pedro 1432.00,1511.00,1721.00 15/10/2009,13/10/2009,01/10/2009
No column-oriented vem primeiro TODOS os dados da primeira coluna Nome, depois a segunda coluna Salario e por último a coluna Data.
O artigo completo se encontra em: http://blog.caelum.com.br/2009/10/30/bancos-de-dados-nao-relacionais-e-o-movimento-nosql/
maio 5th, 2010 | by suissa | escalabilidade, mongodb, nosql
mai
05
Ótimo tutorial no PHP Classes sobre como desenvolver aplicações escaláveis com MongoDB
http://www.phpclasses.org/blog/post/118-Developing-scalable-PHP-applications-using-MongoDB.html