No-SQL & mongoDB
@liushuaikobe
What’s No-SQL?
Strozzi NoSQL

(1998)

RDBMS
operator-stream
paradigm(PIPE)

Carlo Strozzi

a set of shell
routines that access
normal fil...
No-SQL == Not Have SQL
Structured Query Language

No-SQL == Not Have 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)
Googl...
No-SQL == non-relational
My regret however isn't about
what the name says, it's about
what it doesn't.

Eric Evans
no:sql(east) conference@ Atlanta
> select fun, profit
> from real_world
> where relational=false;
No-SQL == Not Only SQL
CAP Theorem

(Eric Brewer)

Consistency

Availability

Partition Tolerance
BASE
PH

A C I D

neutral

B A S E
B asically A vailable
S oft-state
Eventually Consistent
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, ma...
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",	
  
	
...
RDBMS——ERD
Actor

Repo

1..1

1..1

1..n

1..n

Event
While in mongo…
{	
  
"_id"	
  :	
  ObjectId("5287d3e947e36f2280584179")	
  
"actor_attributes"	
  :	
  {	
  
	
  	
  	
  ...
{	
  
"_id"	
  :	
  ObjectId("5287d41647e36f2280586033"),	
  
“repository"	
  :	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  "...
Summary
No-SQL => No? No!
Why No-SQL?
CAP & BASE
MongoDB (Inc.)
Schema design
How to Choose?

Depending on your needs…
Thanks
@liushuaikobe
Q & A

http:/
/www.girlsgonestrong.com/video-qa/
Upcoming SlideShare
Loading in …5
×

NoSQL & MongoDB

1,405 views

Published on

A lecture of No-SQL & MongoDB.

Published in: Education, Technology
  • Be the first to comment

NoSQL & MongoDB

  1. 1. No-SQL & mongoDB @liushuaikobe
  2. 2. What’s No-SQL?
  3. 3. Strozzi NoSQL (1998) RDBMS operator-stream paradigm(PIPE) Carlo Strozzi a set of shell routines that access normal files of the OS
  4. 4. No-SQL == Not Have SQL
  5. 5. Structured Query Language No-SQL == Not Have SQL
  6. 6. …departs from the relational model altogether; it should therefore have been called more appropriately 'NoREL'.
  7. 7. 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”
  8. 8. No-SQL == non-relational
  9. 9. My regret however isn't about what the name says, it's about what it doesn't. Eric Evans
  10. 10. no:sql(east) conference@ Atlanta
  11. 11. > select fun, profit > from real_world > where relational=false;
  12. 12. No-SQL == Not Only SQL
  13. 13. CAP Theorem (Eric Brewer) Consistency Availability Partition Tolerance
  14. 14. BASE PH A C I D neutral B A S E
  15. 15. B asically A vailable S oft-state Eventually Consistent
  16. 16. Why No-SQL? Traditional RDBMS —— CA Do We really need Transaction? Horizontal-Scale
  17. 17. List Of NoSQL DBs Wide Column Store Document Store Key Value / Tuple Store Graph Databases …
  18. 18. mongoDB
  19. 19. 10gen established in 2007, @New York originally aimed to build a Paas architecture released MongoDB, maintaining it
  20. 20. MongoDB Inc. (2013.08) established in 2007, @New York originally aimed to build a Paas architecture released MongoDB, maintaining it
  21. 21. MongoDB document-oriented(BSON) Storage schema-free high-performance build for scale
  22. 22. Document
  23. 23. Data-Model Design References Embedded
  24. 24. Reference
  25. 25. Embedded
  26. 26. which way is better? No Define answer.
  27. 27. A Instance
  28. 28. {          "actor_attributes"  :  {                  "name"  :  "Dan  Tao",                  "company"  :  "Google",                  ...                  "email"  :  "daniel.tao@gmail.com"          },          "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          }   }
  29. 29. RDBMS——ERD Actor Repo 1..1 1..1 1..n 1..n Event
  30. 30. While in mongo… {   "_id"  :  ObjectId("5287d3e947e36f2280584179")   "actor_attributes"  :  {                  "name"  :  "Dan  Tao",                  "company"  :  "Google",                  ...                  "email"  :  "daniel@gmail.com"   {          }  "_id"  :  ObjectId("5287d3e947e36f22805844b3")   } "actor_attributes"  :  {                  "name"  :  "Dan  Tao",                  "company"  :  "Google",                  ...                  "email"  :  "daniel@gmail.com"   {          }   "_id"  :  ObjectId("5287d3e947e36f22805844c9")   } "actor_attributes"  :  {                  "name"  :  "Dan  Tao",                  "company"  :  "Google",                  ...                  "email"  :  "daniel@gmail.com"          }   } Actor
  31. 31. {   "_id"  :  ObjectId("5287d41647e36f2280586033"),   “repository"  :  {                  "fork"  :  false,                              ...                    "name"  :  "breakneck"          },   {          "actor"  :  "Sam",   "_id"  :  ObjectId("5287d41647e36f2280586035"),          …   “repository"  :  {          "payload"  :  {                  "fork"  :  false,                  "shas"  :  [                                ...                          [                      "name"  :  "breakneck"                                ...   {          },                          ]   "_id"  :  ObjectId("5287d41647e36f2280586537"),          "actor"  :  "Tom",                  ],   “repository"  :  {          …                  "ref"  :  "refs/heads/master",                  "fork"  :  false,          "payload"  :  {                  "size"  :  1                              ...                  "shas"  :  [            }                    "name"  :  "breakneck"                          [     }        },                                ...          "actor"  :  "Mike",                          ]                  ],          …          "payload"  :  {                  "ref"  :  "refs/heads/master",                  "shas"  :  [                    "size"  :  1                          [            }                                ...   }                        ]                  ],                  "ref"  :  "refs/heads/master",                  "size"  :  1          }   } Event
  32. 32. Summary No-SQL => No? No! Why No-SQL? CAP & BASE MongoDB (Inc.) Schema design
  33. 33. How to Choose? Depending on your needs…
  34. 34. Thanks @liushuaikobe
  35. 35. Q & A http:/ /www.girlsgonestrong.com/video-qa/

×