Sobre MongoDB...tenho um
site bacana WWW.GOOGLE.
COM.BR
Instalação...
na raiz crie o caminho /data/db
Download >> http://www.mongodb.org/downloads
Descompacte 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 dbs
use nome_db
Collections
- Tb Não precisa ser criado explicitamente
- comando:
show collections
Tipos suportados...
null
boolean
MongoBinDate
string
(UTF-8)
MongoId
(4cb4ab6d7addf98506010000)
integer
(32/64 bit)
double
MongoDate
array
associative 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 - insert
db.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 - update
db.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 - Aggregate
db.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

Mongo DB

  • 2.
    Sobre MongoDB...tenho um sitebacana WWW.GOOGLE. COM.BR
  • 3.
    Instalação... na raiz crieo caminho /data/db Download >> http://www.mongodb.org/downloads Descompacte o .zip.. Na pasta bin... - execute mongod.exe - e mongo.exe CHAPLOU!! MongoDB Instalado e Rodando!
  • 4.
    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
  • 5.
    DB - Não precisaser criado explicitamente - comandos: show dbs use nome_db Collections - Tb Não precisa ser criado explicitamente - comando: show collections
  • 6.
  • 7.
    Documents - Armazenados comoBSON (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
  • 8.
    Documents mais alguns exemplosde 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" ] }
  • 9.
    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" }
  • 10.
    Comandos - insert db.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 } )
  • 11.
    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 } )
  • 12.
    Comandos - update db.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 } )
  • 13.
  • 14.
    Comandos - Aggregate db.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 } } ] )
  • 15.
    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/
  • 16.
    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.
  • 17.
    Replica Set É umconjunto 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.
  • 18.
    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.
  • 19.
  • 20.
    substituir o propriomysql que usamos hoje os arquivos de logs (click, action, impressão), para tirar relatorios usando o aggregation EXEMPLO >>>>>
  • 21.
    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" }
  • 22.