Manual do Hacker Especial - Volume 2 (2019-07)

(Antfer) #1
Manual do Hacker Especial | 39

bancos de dados SQL, mas não é uma tarefa simples, e
torna-se cada vez mais complexa, conforme você divide em
mais máquinas. NoSQL, por outro lado, é construído a
partir do zero, para ser escalável, e esta é a mais óbvia das
funções de agregação. Essas são consultas que não apenas
retornam dados, mas os combinam de alguma forma, tais
como soma, total, média, ou algo mais específico.

Mapear e reduzir
Desse modo, se, por exemplo, você deseja calcular a soma
dos números que acabou de criar, poderá usar a função
MapReduce (). Como o nome sugere, ela contém duas
partes, chamadas map e reduce. Ambas são funções. A
função map é executada em cada um dos registros na
coleção, e emite valores para a função reduce – que
sempre emite (que é um pouco como uma função normal
de retorno) uma chave e um valor. A chave é a categoria
onde você vai reduzir os valores. Tem de ser exatamente
um valor, mas isso pode ser um documento JSON como
qualquer item no banco de dados. A função reduce, em
seguida, emite todos esses valores emitidos e os comprime
em um único valor. Para calcular a média dos números
pares e ímpares em nossa coleção, a nossa função map só
precisa emitir o seguinte:
var mapFunction = function() {
var out = “odd”;
if (this.number % 2 == 0) { out = “even”;}
emit (out, this.number);
}
Isso exibirá um registro para cada documento na lista. A
chave vai ser par ou ímpar, e o valor será o número nesse
documento. Nossa função reduce:
var reduceFunction = function(ids,number){
return Array.avg(number);};
Este calcula a média dos valores para cada chave.
Execute o mapReduce com:
db.test.mapReduce(
mapFunction,
reduceFunction,
{ out: “mr_out” }
)

Os nomes das funções mapFunction e reduceFunction
podem ser quais você quiser, contanto que combinem com os
valores colocados no mapReduce. Este comando irá executar
o map reduce e trará uma nova coleção chamada mr_out.
Podemos ver isso com:
db.mr_out.find()
Aqui, há algumas coisas que você pode notar.
Primeiro, mapReduce parece desnecessariamente
complicado para coisas assim. De certa forma, isso é
verdade. Ele se dá melhor com agregados complicados,
onde o poder superior do script vem a ser útil. Segundo,
você pode estar se perguntando quais são os benefícios.
Isso tudo tem a ver com a estrutura. Uma vez que cada
execução da função map (uma para cada documento) é
independente de todas as outras, elas podem ser
distribuídas entre os diferentes servidores de banco de
dados. Para nosso exemplo simples, não faz muita
diferença, mas se você tem uma função map peso-
pesado, e uma grande quantidade de dados, a economia
pode ser significativa. Na verdade, mapReduce funciona
bem em grandes volume de dados paralelos – de modo
a dividir o trabalho em um conjunto de tarefas
independentes –, e é encontrado em uma série de big
datas, como o Hadoop.
Claro, tudo isso não significa que é hora de jogar fora
todos os seus bancos de dados relacionais. No entanto,
pode ser hora de olhar para o NoSQL se você está tendo
problemas de dimensionamento de um cluster SQL, ou se
estiver sofrendo de mau desempenho por causa de
consultas que juntam um grande número de tabelas. Por
outro lado, se você estiver procurando um novo emprego,
NoSQL é uma ótima maneira de reforçar o seu CV.
MongoDB é a segunda tendência de trabalho em TI
que mais cresce no http://www.indeed.com, e como existe há
apenas alguns anos, é pouco provável que seja um
problema se você não tiver muita experiência. Este foi um
breve tutorial sobre o MongoDB, e há mais detalhes me
http://docs.mongodb.org/manual.

Se você não quiser instalar o MongoDB, há uma webshell disponível
em http://mongodb.org que você pode usar para experimentá-lo

Robomongo (http://robomongo.org) é um front-end
gráfico para MongoDB


GridFS


Bancos de dados são grandes e eficientes
mecanismos de armazenamento de dados.
Então por que não usá-los como sistemas
de arquivos? Com MongoDB, você pode
usar um sistema chamado GridFS. O banco
de dados pode ser usado para armazenar e

recuperar arquivos arbitrários como um
sistema de arquivos normal. Por enquanto,
ainda não há quaisquer drivers que
permitam a você montar tal sistema no
Linux, então você tem que usar os
aplicativos mongofiles que vem com

MongoDB. Então, a questão... por que se
preocupar? Bem, para um sistema desktop
normal, há pouco a questionar. A grande
vantagem é que se você dividir o banco de
dados em diferentes servidores, pode ter
um sistema rápido, altamente disponível.

Grupo Unico PDF Passe@diante

Free download pdf