Mongo DB

22

description

Apresentação sobre mondo DB Apresentada dia 09/05

Transcript of Mongo DB

Page 1: Mongo DB
Page 2: Mongo DB

Sobre MongoDB...tenho um site bacana WWW.GOOGLE.

COM.BR

Page 3: Mongo DB

Instalação...

na raiz crie o caminho /data/dbDownload >> http://www.mongodb.org/downloadsDescompacte o .zip..Na pasta \bin...- execute mongod.exe- e mongo.exe

CHAPLOU!!

MongoDB Instalado e Rodando!

Page 4: Mongo DB

O que é o que em MongoDB

fazendo uma analogia com que usamos atualmente...

MongoDB MySQL

DB schema

Collection tabela

Document 1 registro na base

Index Index

Page 5: Mongo DB

DB- Não precisa ser criado explicitamente- comandos:

show dbsuse nome_db

Collections- Tb Não precisa ser criado explicitamente- comando:

show collections

Page 6: Mongo DB

Tipos suportados...

null

boolean

MongoBi

nDate

string (UTF-8)

MongoId (4cb4ab6d7addf98506010000)

integer (32/64 bit)

double

MongoDate arrayassociative array ("object" for java script)

Page 7: Mongo DB

Documents

- Armazenados como BSON (Binary JSON)- Pode ter documentos embutidos- DEVE TER um unico ID (_id)

{

"_id" : "4cb4ab6d7addf98506010000",

"name" : "Rodrigo Monteiro",

"idade" : 29,

"redessocial" : [ { "rede" : "facebook",

"url" : "facebook.com/rodrigoma" },

{ "rede" : "twitter",

"url" : "twitter.com/rodrigoma" } ]

}

MongoId

Page 8: Mongo DB

Documents

mais alguns exemplos de documentos....

{ "_id" : 1, "tipo" : "circulo", "area" : 3.14, "radius" : 1 }

{ "_id" : 2, "tipo" : "quadrado", "area" : 4, "d" : 2 }

{ _id : 3, tipo : "retangulo", area : 10, length : 5, width : 2 }

{

"_id" : 4,

"name" : "Fulano",

"likes" : ["videogame", "filmes", "programacao", "tecnologia" ]

}

Page 9: Mongo DB

Index{

"v" : 1,

"key" : { "_id" : 1 },

"ns" : "test.ppt",

"name" : "_id_"

}

{

"v" : 1,

"key" : { "_id" : 1 },

"ns" : "test.posts",

"name" : "_id_"

},

{

"v" : 1,

"key" : { "author" : -1 },

"ns" : "test.posts",

"name" : "author_-1"

}

Page 10: Mongo DB

Comandos - insertdb.ppt.help()

db.ppt.count()

db.ppt.drop()

db.ppt.dropIndex()

db.ppt.ensureIndex()

db.ppt.getIndexes()

db.ppt.insert( { _id : 1, tipo : "circulo", area : 3.14, radius : 1 } )

db.ppt.insert( { _id : 2, tipo : "retangulo", area : 10, len : 5, w : 2 } )

db.ppt.insert( { _id : 3, tipo : "quadrado", area : 4, d : 2 } )

Page 11: Mongo DB

Comandos - find - findOne

operadores de comparação$all $in $nin

$gte $gt

$lt $lte

$ne

db.ppt.findOne([query])

db.ppt.find() [count(), limit(), skip(), sort(), pretty()]

db.ppt.find( { "tipo" : "quadrado" } )

db.ppt.find( { "tipo" : "quadrado" }, { tipo : 1, _id : 0 } )

Page 12: Mongo DB

Comandos - updatedb.ppt.update( { _id : 1 }, { tipo : "circulo2" } )

db.ppt.update( { _id : 1 }, { $set : { tipo : "circulo" } } )

db.ppt.update( { _id : 1 }, { $set : { cor : "amarelo" } } )

db.ppt.update( { _id : 1 }, { $unset : { cor : "amarelo" } } )

db.ppt.update( { _id : 1 }, { $push : { onde : "ventilador" } } )

db.ppt.update( { _id : 1 }, { $addToSet : { onde : "ventilador" } } )

db.ppt.update( { _id : 1 }, { $pull : { onde : "ventilador" } } )

db.ppt.update( { _id : 1 }, { $set : { 'onde.0' : "roda" } } )

db.ppt.update( { _id : 1 }, { $inc : { radius : 1 } } )

db.ppt.update( { area : { $gt : 2 } }, { $set : { cor : "azul" } }, { multi: true } )

Page 13: Mongo DB

Comandos - Aggregate$project

$match

$limit

$skip

$unwind

$group

$sort

$geoNear

NÃO ESQUECER DE RODAR O SCRIPT

Page 14: Mongo DB

Comandos - Aggregatedb.posts.aggregate( [

{ $project : { _id : 0, comments : 1 } },

{ $limit : 1 },

{ $unwind : "$comments" },

{ $project : { "comments.author" : 1 } },

{ $group : { "_id" : "$comments.author", "count" : { $sum : 1 } } },

{ $sort : { "count" : -1 } }

] )

Page 15: Mongo DB

E NO JAVA

<!-- Mongo Java Driver --><dependency>

<groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>2.10.1</version>

</dependency>

http://docs.mongodb.org/ecosystem/drivers/

Page 16: Mongo DB

Sharding - é a abordagem da MongoDB para dimensionamento.- Particiona uma collection e armazena diferentes partes em diferentes máquinas.Quando uma collection tornar-se muito grande para o armazenamento existente,é só precisa adicionar uma nova máquina.

- distribui automaticamente a collection para o novo servidor.

- equilibra automaticamente os dados e carga entre máquinas.

Page 17: Mongo DB

Replica SetÉ um conjunto de instâncias do mongod que replicam entre si contra falha. A maioria dos ReplicaSet é constituido de 2 ou mais instâncias de mongod, com no máximo um deles designado como primário e o resto como membros secundários. Escritas são feitas na primária, enquanto os membros da secundária replicam a partir da primária de forma assincrona. Com isso temos redundância, ajuda a garantir alta disponibilidade, simplifica algumas tarefas administrativas, tais como backups, e pode aumentar a capacidade de leitura. A maioria das implantações usam replicação.

Page 18: Mongo DB

MongoDB (2.2)Best used: If you need dynamic queries. If you prefer to

define indexes, not map/reduce functions. If you need good

performance on a big DB. If you wanted CouchDB, but your

data changes too much, filling up disks.

For example: For most things that you would do with

MySQL or PostgreSQL, but having predefined columns

really holds you back.

Redis (V2.4)Best used: For rapidly changing data with a foreseeable

database size (should fit mostly in memory).

For example: Stock prices. Analytics. Real-time data

collection. Real-time communication. And wherever you

used memcached before.

PARA MAIS INFORMAÇÕES: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

CouchDB (V1.2)Best used: For accumulating, occasionally changing data,

on which pre-defined queries are to be run. Places where

versioning is important.

For example: CRM, CMS systems. Master-master

replication is an especially interesting feature, allowing

easy multi-site deployments.

Cassandra (1.2)Best used: When you write more than you read (logging).

If every component of the system must be in Java. ("No

one gets fired for choosing Apache's stuff.")

For example: Banking, financial industry (though not

necessarily for financial transactions, but these industries

are much bigger than that.) Writes are faster than reads, so

one natural niche is data analysis.

Page 19: Mongo DB

Onde podemos usar ?????

Page 20: Mongo DB

substituir o proprio mysql que usamos hoje

os arquivos de logs (click, action, impressão), para tirar relatorios usando o aggregation

EXEMPLO >>>>>

Page 21: Mongo DB

LOG DE CLICK{ date : "2013-05-07 16:01:00", referrer : "http://ads.lomadee.com/as/iframeContent.html?mdsrc=23177319&dim=728_90&c=BR", requestUrl : "http://compare.buscape.com.br/tr/rd?a=a2VrFQ0oZQcwahFpOQgSMBxtLWo", cookies : "xb=Xbox+360+250GB&Huawei+E5&simpsons+temporada; idloc=1891254215420130507093908675", extralog : { mdsrc : 23177319, mddtn : 167353925, mdsit : 33385672, mdpub : 22242753, mdadv : 1, mdcountry : "BR", mdapp : 134, mdidprof : 0, mdidbehav : 0, dtn_url : "http%3A%2F%2Fwww.mobly.com.br%2Fcabideiro-cubo-5-ganchos-imbuia-3384.html", elxx : "1891254215420130507160056081", elst : 0, versionlk : 5, mdgenericadid : 1228403, mdcreationlkdate : "2013-05-07+15%3A40%3A25", mdoff : 117701143, mdidcateg : 1487, mdidofr : 117701143, mdpos : 4, pr : 322, invalidsource : 23177319 }, ip : "189.125.42.154", useragent : "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1496.0 Safari/537.36"}

Page 22: Mongo DB

perguntas ?

thanks