NoSQL & MongoDB
description
Transcript of NoSQL & MongoDB
No-SQL & mongoDB@liushuaikobe
What’s No-SQL?
Strozzi NoSQL(1998)
RDBMS
operator-stream paradigm(PIPE)
a set of shell routines that access normal files of the OS
Carlo Strozzi
No-SQL == Not Have SQL
No-SQL == Not Have
Structured Query Language
SQL
…departs from the relational model altogether; it
should therefore have been called more appropriately 'NoREL'.
A meetup@San Francisco ——"open source, distributed, non relational databases”
Organized by Johan Oskarsson(Last.fm)
Google's Bigtable & Amazon's Dynamo
Eric Evans(then in RackSpace) reintroduced “No-SQL”
No-SQL == non-relational
Eric Evans
My regret however isn't about what the name says, it's about
what it doesn't.
no:sql(east) conference@ Atlanta
> select fun, profit > from real_world > where relational=false;
No-SQL == Not Only SQL
CAP Theorem(Eric Brewer)
Consistency
Partition Tolerance
Availability
BASE
neutralA C I D
PH
SB EA
asically vailable
ventually Consistent
oft-stateS
B
E
A
Why No-SQL?
Traditional RDBMS —— CA
Do We really need Transaction?
Horizontal-Scale
List Of NoSQL DBs
Wide Column Store
Document Store
Key Value / Tuple Store
Graph Databases
…
mongoDB
10gen
established in 2007, @New York
originally aimed to build a Paas architecture
released MongoDB, maintaining it
MongoDB Inc.(2013.08)
established in 2007, @New York
originally aimed to build a Paas architecture
released MongoDB, maintaining it
MongoDB
document-oriented(BSON) Storage
schema-free
high-performance
build for scale
Document
Data-Model Design
References
Embedded
Reference
Embedded
which way is better?
No Define answer.
A Instance
{ "actor_attributes" : { "name" : "Dan Tao", "company" : "Google", ... "email" : "[email protected]" }, "repository" : { "fork" : false, "watchers" : 0, "description" : "Oh, nothing, nothing", ... "id" : 13155632, "name" : "breakneck" }, "url" : "https://github.com/dtao/breakneck/compare/dccee09561...38984e5dce", "created_at" : "2013-‐09-‐28T18:00:06-‐07:00", "actor" : "dtao", "public" : true, "type" : "PushEvent", "payload" : { "shas" : [ [ ... ] ], "head" : "38984e5dce1a21b778d4c26bde493270b4625662", "ref" : "refs/heads/master", "size" : 1 } }
RDBMS——ERD
Actor Repo
Event
1..n
1..1
1..n
1..1
While in mongo…
{ "_id" : ObjectId("5287d3e947e36f2280584179") "actor_attributes" : { "name" : "Dan Tao", "company" : "Google", ... "email" : "[email protected]" } }
{ "_id" : ObjectId("5287d3e947e36f22805844b3") "actor_attributes" : { "name" : "Dan Tao", "company" : "Google", ... "email" : "[email protected]" } }
{ "_id" : ObjectId("5287d3e947e36f22805844c9") "actor_attributes" : { "name" : "Dan Tao", "company" : "Google", ... "email" : "[email protected]" } }
Actor
{ "_id" : ObjectId("5287d41647e36f2280586033"), “repository" : { "fork" : false, ... "name" : "breakneck" }, "actor" : "Sam", … "payload" : { "shas" : [ [ ... ] ], "ref" : "refs/heads/master", "size" : 1 } }
Event
{ "_id" : ObjectId("5287d41647e36f2280586035"), “repository" : { "fork" : false, ... "name" : "breakneck" }, "actor" : "Tom", … "payload" : { "shas" : [ [ ... ] ], "ref" : "refs/heads/master", "size" : 1 } }
{ "_id" : ObjectId("5287d41647e36f2280586537"), “repository" : { "fork" : false, ... "name" : "breakneck" }, "actor" : "Mike", … "payload" : { "shas" : [ [ ... ] ], "ref" : "refs/heads/master", "size" : 1 } }
Summary
No-SQL => No? No!
Why No-SQL?
CAP & BASE
MongoDB (Inc.)
Schema design
How to Choose?
Depending on your needs…
Thanks@liushuaikobe