Arquivo do mês: março 2014

Map Reduce no CouchDB

Table x Document

O CouchDB trabalha com documentos. Os documentos são expressos em JSON. Cada linha de uma tabela num banco relacional corresponderia a um documento.   table vs document Uma maior flexibilidade é possível em relação ao esquema relacional. Um documento pode possuir uma propriedade com um valor enquanto que outro documento “similar” nem a menciona. table vs document - null   Um campo multi-valorado exige duas tabelas no banco relacional mas os documentos flexivelmente acomodam os valores num array. table vs document - join

Views

No CouchDB uma view é usada para implementar queries e relatórios. As views são as principais ferramentas para estruturar e extrair informações do banco de dados. Para construir uma view definimos duas funções em Javascript, uma para mapping e outra para reduce. temporary-view As views criam árvores B quando o CouchDB percorre todos os documentos do banco de dados aplicando as funções da view a cada documento. As funções associadas à view executam uma única e primeira vez para criar a árvore B.

É análogo a criar um índice num banco de dados relacional. Nas próximas vezes em que a view for usada numa query os resultados são obtidos da árvore previamente construída. Soam como uma memoization sofisticada.

Quando um documento é criado, destruido ou alterado no banco de dados as funções da view são aplicadas individualmente ao documento e o resultado inserido na árvore ou, no caso de um documento removido, o resultado é removido da árvore. A árvore mantém uma referência aos documentos usados para criar os seus nós.

Na Map Function a chamada da função emit no seu corpo cria uma entrada na árvore B que representa a view. O primeiro parâmetro de emit é a chave (key) e o segundo o valor (value). As funções de mapping e de reduce em conjunto criam os resultados que são inseridos na árvore. A função de reduce às vezes é omitida. Quando incluida faz uma agregação dos dados.

RESTFul Interface

 

 

client-rest-couchdb-seq

O diagrama acima resume a interface RESTFul do CouchDB. Mais adiante usaremos o comando cURL no terminal como HTTP Client para o CouchDB.

Map Reduce

Vamos implementar no CouchDB, de forma muito simplificada, uma versão do exemplo clássico da técnica map reduce: contar as palavras repetidas em um texto. O texto usado é o seguinte:

CouchDB is a database that completely embraces the web. Store your data with JSON documents. Access your documents and query your indexes with your web browser, via HTTP. Index, combine, and transform your documents with JavaScript. CouchDB works well with modern web and mobile apps. You can even serve web apps directly out of CouchDB. And you can distribute your data, or your apps, efficiently using CouchDB’s incremental replication. CouchDB supports master-master setups with automatic conflict detection.

Colocamos o texto em um arquivo words.json com o seguinte conteúdo:

{"words" : "CouchDB is a database that completely embraces the web. Store your data with JSON documents. Access your documents and query your indexes with your web browser, via HTTP. Index, combine, and transform your documents with JavaScript. CouchDB works well with modern web and mobile apps. You can even serve web apps directly out of CouchDB. And you can distribute your data, or your apps, efficiently using CouchDB’s incremental replication. CouchDB supports master-master setups with automatic conflict detection."}

Criamos o banco de dados wordcount com o curl:

curl -X PUT http://127.0.0.1:5984/wordcount

Alternativamente podemos criar o banco de dados diretamente na interface Futon. Criamos o documento com:

curl -H "Content-Type:application/json" -X POST http://127.0.0.1:5984/wordcount -d @words.json

Alternativamente podemos criar o documentos diretamente na interface Futon colando os dados.

A partir deste ponto usaremos somente a interface Futon para desenvolver uma view. Vamos testar o seguinte código como uma temporary view:

function(doc) {
  var words = doc.words;
  var array = words.split(" ");
  for (var k = 0; k < array.length; k++) {
    var word = array[k];
    emit(word, 1);
  }
}

O script acima gera uma lista key/value para cada palavra: wordcount-map   Vamos incluir a função reduce:


function(keys, values) {
  return sum(values);
}

wordcount-reduce-function   Para ver melhor o que está acontecendo vamos alterar a reduce function para:

function(keys, values) {
  return values;
}

couchdb-reduce-function-2

Fica como exercício para o leitor incluir outro documento com a propriedade “words” e um outro texto como valor no banco de dados e executar a view novamente.

Links relacionados:

Vídeo

How To Build & Use “The Easy Climb” – A Mast Climbing Aid

Vídeo

Girl Raised As A Bushman Walking With Lions & Toys With Group Of Cheetahs!

Veja mais em

http://www.etienneverhaegen.com/

Imagem

Sincero…

piada-de-rh

Vídeo

Mast Walk

Izabel e o Don

izabel-e-o-don-chegada-no-rio-8-3-2014

Sábado chuvoso. Dia da Mulheres. Quando soube que Izabel Pimentel e o Don iam chegar no Rio pelas 12:00 na Marina da Glória me planejei para ir ver. Coloquei um casaco impermeável na mochila e fui de bicicleta até o Iate Clube do Rio para devolver uma peça que encontrei na geladeira do Smurf (um Trindade que aluguei antes do carnaval) e que havia por engano levado para casa. Fui pela Lagoa subindo o Corte do Cantagalo para sair em Copacabana. Depois do Iate dirigi-me à Marina.

Cheguei lá pouco depois do meio-dia. Lá fiz umas sondagens mas ninguém parecia saber da chegada. A Marinha estava lá aplicando as provas e Arrais Amador e Mestre aproveitando alguns eventos que lá aconteciam (uma regata entre outras coisas). Fui na administração perguntar. Já pensava em ir embora. Mas lá informaram que ela já estava na boca da barra. Resolvi esperar.

Pelas 13:00 o veleiro chegou na Marina. Antes um pouco eu tinha reconhecido o pai dela (sem muita certeza pois só vi uma imagem na Internet). Parece que somente pessoas mais próximas dela estavam lá para recebê-la. Não sei se foi descaso da imprensa para a façanha dela de dar a volta ao mundo num veleiro de 34 pés ou porque ela mesma não procurava muita publicidade. Como ela é patrocinada é claro que não deve ser isto. Vendo ela se movimentar e falar fiquei com a impressão que em alguns momentos ela parecia querer zarpar e voltar ao seu elemento. Uma velejadora solitária deve retirar muito prazer da sua atividade mesmo com os possíveis percalços. Alguém a chamou para ficar no cais enquanto ela se evadia para perto do barco alegando que queria estar com a sua gata. Veja algumas notícias e posts na Internet que enfatizam a “aventura da gata Ellen”:

Se quiser saber mais visite o facebook dela que lá tem links para vários sites sobre a viagem que ela está quase a terminar.

O livro que virou clássico, que virou filme, que virou livro

Stephen Crane , um dos 14 filhos de um casal de Newark, Nova Jersey, tinha 24 anos quando escreveu o romance O Emblema Vermelho da Coragem (Penguim Companhia), considerado um dos primeiros clássicos da literatura norte-americana. Conquistou a fama e entrou para a história ao narrar a vida de um jovem soldado da Guerra Civil.

Descreve conflitos pessoais e batalhas com tantas minúcias que dá a impressão de ter participado das batalhas entre Sul e Norte – mas nunca esteve lá. Tudo saiu de sua imaginação.

John Huston já era um diretor de cinema famoso quando decidiu levar o romance de Crane para o cinema, em 1950, dois anos depois de ter conquistado dois Oscar pelo filme O Tesouro de Sierra Madre. Huston estava então 44 anos, era encarado como um dos maiores nomes do cinema, tinha uma independência que por vezes incomodava.

Ele se apaixonou pela história e…

Ver o post original 674 mais palavras