Weitere ähnliche Inhalte Ähnlich wie Introduction to MongoDB (20) Mehr von Mike Dirolf (13) Kürzlich hochgeladen (20) Introduction to MongoDB2. Non-relational
Operational Stores
(“NoSQL”)
New Gen. OLAP RDBMS
(vertica,
aster,
greenplum) (Oracle,
MySQL)
3. NoSQL Really Means:
non-‐relational,
next-‐generation
operational
datastores
and
databases
4. no
joins
+ no
complex
transactions
Horizontally Scalable
Architectures
5. no
joins
+ no
complex
transactions
New Data Models
7. Data Models
Key
/
Value
memcached,
Dynamo
Tabular
BigTable
Document
Oriented
MongoDB,
CouchDB,
JSON
stores
9. JSON-style Documents
represented
as
BSON
{“hello”:
“world”}
x16x00x00x00x02hello
x00x06x00x00x00world
x00x00
http://bsonspec.org
10. Flexible “Schemas”
{“author”:
“eliot”,
{“author”:
“mike”,
“text”:
“...”,
“text”:
“...”}
“tags”:
[“mongodb”]}
14. Replication
master slave
master
master slave
slave slave slave master master
slave master
15. Auto-sharding
Shards
mongod mongod mongod
...
Config mongod mongod mongod
Servers
mongod
mongod
mongod
mongos mongos ...
client
18. Less Good At
highly
transactional
ad-‐hoc
business
intelligence
problems
that
require
SQL
19. A Quick Aside
_id special
key
present
in
all
documents
unique
across
a
Collection
any
type
you
want
22. New Post
post
=
{author:
“mike”,
date:
new
Date(),
text:
“my
blog
post...”,
tags:
[“mongodb”,
“intro”]}
db.posts.save(post)
23. Embedding a Comment
c
=
{author:
“eliot”,
date:
new
Date(),
text:
“great
post!”}
db.posts.update({_id:
post._id},
{$push:
{comments:
c}})
26. Posts Since April 1
april_1
=
new
Date(2010,
3,
1)
db.posts.find({date:
{$gt:
april_1}})
28. Posts With a Tag
db.posts.find({tags:
“mongodb”})
...and Fast
(multi-‐key
indexes)
db.posts.ensureIndex({tags:
1})
29. Indexing / Querying
on Embedded Docs
(dot
notation)
db.posts.ensureIndex({“comments.author”:
1})
db.posts.find({“comments.author”:
“eliot”})
31. Basic Paging
page
=
2
page_size
=
15
db.posts.find().limit(page_size)
.skip(page
*
page_size)
32. Migration: Adding Titles
(just
start
adding
them)
post
=
{author:
“mike”,
date:
new
Date(),
text:
“another
blog
post...”,
tags:
[“mongodb”],
title:
“MongoDB
for
Fun
and
Profit”}
post_id
=
db.posts.save(post)
33. Advanced Queries
$gt,
$lt,
$gte,
$lte,
$ne,
$all,
$in,
$nin
db.posts.find({$where:
“this.author
==
‘mike’
||
this.title
==
‘foo’”})
35. slides
will
be
up
on
http://dirolf.com
Download MongoDB
http://www.mongodb.org
and
let
us
know
what
you
think
@mdirolf
@mongodb