• Like
  • Save
MongoDB
Upcoming SlideShare
Loading in...5
×
 

MongoDB

on

  • 778 views

Uma rápida explicação sobre MongoDB, demonstrando a diferença deste banco de dados orientado a documentos para o banco de dados relacional MySQL.

Uma rápida explicação sobre MongoDB, demonstrando a diferença deste banco de dados orientado a documentos para o banco de dados relacional MySQL.

Statistics

Views

Total Views
778
Views on SlideShare
775
Embed Views
3

Actions

Likes
1
Downloads
6
Comments
0

2 Embeds 3

http://paper.li 2
https://si0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    MongoDB MongoDB Presentation Transcript

    • Wagner BonfiglioNavegg Dez / 2011
    •  Maior empresa brasileira de segmentação de audiência online Fundada em 2009, comprada pelo Buscapé em fev/201 Analisa mais de 4 bilhões de visitas por mês Mais de 80 milhões de internautas analisados Linguagens C, Python e PH Bancos de dados MySQL, Redis e MongoDB Ambiente Linux
    • Agenda Diferença para SQL Documentos Querying Updating Sharding Alta Performance
    • MySQL MongoDB Tabelas Collection Linhas Documentos Colunas Atributos Estrutura definida Joins Estrutura flexível Documentos completos
    • Todo documento tem a PK “_id”BSON - Binary JSON{ "Dat" : ISODate("2011-12-01T00:21:41.366Z"), "Profile" : { "1" : NumberLong(1), "3" : NumberLong(8), "2" : NumberLong(4), "5" : [ 20, 11 ] }, "_id" : 10812274}
    • Queries dinâmicas - SELECT * FROM TABLEdb.Collection.find({}) - SELECT * FROM TABLE WHERE ID=1db.Collection.find({_id: 1}) - SELECT * FROM TABLE WHERE Cond1 = 1 AND Cond2 = "A"db.Collection.find({Cond1: 1, Cond2: "A"}) - SELECT * FROM TABLE WHERE Cond1 > 1db.Collection.find({Cond1: {$gt: 1}}) - SELECT * FROM TABLE LIMIT 100,10db.Collection.find().skip(100).limit(10) - SELECT count(1) FROM TABLEdb.Collection.count() - SELET * FROM TABLE WHERE Cond1 IS NOT NULLdb.Collection.find({Cond1: {$exists: true}})
    • FindAndModify> job = db.jobs.findAndModify({ query: {inprogress: false, task: "calculateProfile"}, sort: { priority: -1 }, update: { $set: {inprogress: true, started: new Date() } } new: true});
    • Map / Reduce{ interest: [1], _id: 1 }{ interest: [1,2,5,8], _id: 2 }{ _id: 3 }> m = function() { if(this.interest) this.interest.forEach(function(z){ emit(z,{ count: 1}); }); else return;}> r = function(key, values) { var total = 0; for ( var i=0; i < values.length; i++ ) total += values[i].count; return { count : total };}> db.ProfileDem.mapReduce(m, r, { out : "myoutput" } );
    • Modificadores$set Seta o documento com os valores passados$unset Limpa o campo$addToSet Adiciona o valor para um array, evitando duplicidade$push Adiciona o valor para um array, podendo duplicar o valor$inc Incrementa um valor inteiro para um campo
    • db.Collection.update({_id: 1}, {$set: {Name: "Wagner"}}, Upsert=true)db.Collection.update({_id: 1}, {$unset: { Jobs: 1}})db.Collection.update({_id: 1}, {$addToSet:{Events: {Name: "Workshop", Date: ISODate("2011-12-07"), Local: "BuscaPé"}}) db.Collection.update({_id: 1}, {$inc: {FestasFimDeAno: 1}})
    •  Divide documentos entre máquinas Critério de divisão definido pelo administrador Usado com ReplicaSet para garantir integridade  Cada shard é replicado Necessário 1 ou 3 config servers Usuário se conecta em um servidor que busca o dado no shard correto
    •  Ausência de Joins e documentos completos tornam a leitura e escrita mais rápidos Índices que indexam qualquer atributo, inclusive arrays
    • Obrigado! Wagner Bonfigliobonfiglio@navegg.com