Mongo DB
-
Upload
distbp -
Category
Technology
-
view
469 -
download
1
description
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