This document provides an overview of MongoDB, including a comparison to traditional relational databases, MongoDB features and terminology, CRUD operations, indexing, replication, sharding, and aggregation. It also includes links to additional MongoDB resources for further learning.
1 of 18
Download to read offline
More Related Content
Introduction to NoSQL db and mongoDB
2. BIO
Senior SW Engineer
@RAI Radiotelevisione italiana
Rome, Italy
QUIT IT APP
@quititapp
GET IN TOUCH!
roberto.belardo@gmail.com
@robertobelardo
robertobelardo.wordpress.com
Skype:
backslash451
3. Traditional RDBMS
ACID (atomicity, Consistency, Isolation, Durability)
Great for relation data
widely adopted and well understood
TRANSACTIONS
JOINS
5. NOSQL DB
ONLY
≒
≒
≒
≒
ACID-LESS (NOT ALWAYS SWEET)
Elastic scaling
Big data
Flexible data models
KEY/VALUE STORES
memcached db
project voldemort
redis
dynamo
DOCUMENT DB
mongo db
couch base
GRAPH STORES
neo4j
orient db
allegro
virtuoso
wide column stores
big table
hbase
accumulo
cassandra
10. CRUD querying
INSERT
a
document
in
a
collec7on
> db.foo.insert({name:Sauron, type:bad-ass, address:Mordor, eyes:1})!
SELECT
all
documents
in
a
collec7on
> db.foo.find()!
SELECT
some
documents
in
a
collec7on
> db.foo.find({eyes:1})
> db.foo.find({eyes:1, type:bad-ass})!
UPDATE
a
document
in
a
collec7on
> db.foo.save({_id:10, name:Sauron, type:good boy})!
> db.foo.update({type:bad-ass},{$inc:{eyes:1}},{multi:true})!
DELETE
all
documents
in
a
collec7on
> db.foo.remove()!
DELETE
some
documents
in
a
collec7on
> db.foo.remove({eyes:1})!
12. WRITE CONCERNS
Speci鍖es
where
a
write
(insert)
opera3on
has
succeeded.
In
some
failure
cases,
write
opera3ons
issued
with
weak
write
concerns
may
not
persist.
weak concern fast writes
With
stronger
write
concerns,
clients
wait
aAer
sending
a
write
opera3on
for
MongoDB
to
con鍖rm
the
write
opera3on.
errors ignored w:-1
It
does
not
acknowledge
write
op.
and
the
client
cannot
detect
failed
write
op.
unacknowledged w:0
It
does
not
acknowledge
write
op.
but
driver
aUempt
to
handle
network
errors.
acknowledged w:1
It
con鍖rms
the
receipt
of
the
write
op.
allowing
clients
to
catch
errors.
journaled w:1,j:true
It
con鍖rms
the
receipt
of
the
write
op.
only
aWer
commiXng
the
data
to
journal.
replica acknowledged w:n (n>1)
It
con鍖rms
the
receipt
of
the
write
op.
aWer
acknowledging
primary
and
n-足1
secondaries.
DEFAULT
13. INDEXES
Without
indexes,
mongoDB
must
scan
every
document
in
a
collec3on!
index types
Default _ID
single field
compound index
multikey index
geospatial index
text indexes
hashed indexes
properties
unique indexes
sparse indexes
creating indexes
> db.foo.ensureIndex({phone-number:1}) !
!
> db.foo.ensureIndex({name:1, phone-number:1})!
!
> db.foo.ensureIndex({name:1}, {unique:true})!
> db.foo.ensureIndex({nickname:1}, {sparse:true})!
!
> db.foo.ensureIndex({a:1},{unique:true,sparse:true})!
15. SHARDING
horizontal scaling the mongoway
SHARDimmutable
KEYs
shard key is
{
range based sharding
hash based sharding
. easily divisible among shards
. high degree of randomness
. targets a single shard
. compound shard key
> db.runCommand({ shardcollection:test.users, !
!
!
!
!
!key: { email:1}})!
split--ting
triggered automatically by a mongos if a chunk goes
beyond max size (default 64mb)
Balanc
ing
triggered automatically by a mongos if there is a chunk
imbalance (8+ chunks)