Mongo DB

Post on 16-May-2015

469 views 1 download

description

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

Transcript of Mongo DB

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

COM.BR

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!

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

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

show dbsuse nome_db

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

show collections

Tipos suportados...

null

boolean

MongoBi

nDate

string (UTF-8)

MongoId (4cb4ab6d7addf98506010000)

integer (32/64 bit)

double

MongoDate arrayassociative array ("object" for java script)

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

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" ]

}

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"

}

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 } )

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 } )

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 } )

Comandos - Aggregate$project

$match

$limit

$skip

$unwind

$group

$sort

$geoNear

NÃO ESQUECER DE RODAR O SCRIPT

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 } }

] )

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/

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.

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.

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.

Onde podemos usar ?????

substituir o proprio mysql que usamos hoje

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

EXEMPLO >>>>>

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"}

perguntas ?

thanks