Your SlideShare is downloading. ×
No sql solutions - 공개용
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

No sql solutions - 공개용

535
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
535
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. NoSQL Solutions Byeongweon Moon tasyblue@gmail.com 2012.01.26
  • 2. Redis, Couchbase, MongoDB, Membase
  • 3. Memory Base Cache vs. Database
  • 4. NoSQL• Collections (versus tables)• Documents (versus rows)• Loosely defined fields (versus columns)• Scale out (versus scale up)• Denormalization (versus normalization)
  • 5. Data Model• Relational• Key-value• Column-oriented• Document-oriented
  • 6. Relational
  • 7. Key-value
  • 8. Column-oriented
  • 9. Document-oriented FirstName="Jonathan", Address="15 Wanamassa Point Road",K Children=[E {Name:"Michael",Age:10},Y {Name:"Jennifer", Age:8}, {Name:"Samantha", Age:5}, {Name:"Elena", Age:2} ]
  • 10. Memory Base Cache• Weak Persistence• Weak Consistency• Strong Performance• Low Latency
  • 11. Membase• Based on Memcached• Written by C++(Memcached), Erlang(Membase)• Distributed, in-memory key-value database management system• Optimized for storing data behind web applications
  • 12. Membase (cont’)• Persistence – Asynchronously writes data to disk after acknowledging write to client – Guarantees data consistency• Replication and failover (server failures recoverable in under 100ms)• Scalability and performance – Distributed object store – Dynamic cluster resizing and rebalancing – Guaranteed data consistency – High sustained throughput – Low, predictable latency
  • 13. Redis• In-memory, key-value data store• Written by ANSI C, support various client
  • 14. Redis (cont’)• Various Data Models – List, Set, Sorted Set, Hash – Support atomic operation about data types• Persistence – Data is held in memory but written to disk asynchronously• Replication – Master-Slave replication• Performance – Non-blocking I/O. Single threaded• Publish/Subscribe
  • 15. Membase vs. Redis Membase RedisString Set, List, Sorted List, Hash..Master-Master Master-SlaveStoring, inc/dec API Various operations includes pop, push, extract …Web management UI Console management tool
  • 16. How to use…• Normally use …$key = md5(SELECT * FROM rest_of_sql_statement_goes_here);if ($memcache->get($key)) { return $memcache->get($key);}else { $result = $query_results_mangled_into_most_likely_an_array $memcache->set($key, $result, TRUE, 86400); return $result;}
  • 17. How to use … (cont’)• Structured Data (array, struct…) – Serialize KEY VALUE user:$user_id name:문병원|call:하겐다즈|… – Normalization KEY VALUE user:$user_id:name 문병원 user:$user_id:call 하겐다즈
  • 18. Application Design using Membase• Cache result other than SQL data!• Use a cache hierarchy• Update membase as your data updates• Race conditions and stale data• Pre warm your cache• Storing lists with keys• Batch your requests with get_multi From memcached FAQ
  • 19. Database• Persistence• Reliable• Scalable• Distributed• Clustered
  • 20. MongoDB• Document-oriented Storage• High Write Performance• Full index support• Master/Slave Replication• Support Map/Reduce• Auto-Sharding• Querying• GridFS• Written in C++
  • 21. CouchDB• Document-oriented Storage• High Read Performance• ACID Semantics• Map/Reduce View and Indexes• Distributed Architecture with Replication• REST API• Eventual Consistency• Written in Erlang
  • 22. CASE STUDY
  • 23. Twitter
  • 24. Facebook Timeline
  • 25. APPENDIX
  • 26. CouchDB MongoDB MySQL Document-Oriented (JS Document-OrientedData Model Relational ON) (BSON) string, int, doubl string, number, boole e, boolean, date, Various Types LData Types an, array, object byte array, object ink , array, othersLarge Object Yes (attachments) Yes (GridFS) BlobZs (Files)Horizontal partitioning CouchDB Lounge Auto-sharding Partitioningscheme Master-slave, m Master-master (with d Master-slave and r ulti-master, anReplication eveloper supplied con eplica sets d circular repl flict resolution) icationObject(row) One large repository Collection-based Table-basedStorage
  • 27. Map/reduce of ja vascript functio Dynamic; object-Query Method ns to lazily bui based query lang Dynamic; SQL ld an index per uage querySecondary Indexes Yes Yes YesAtomicity Single document Single document Yes - advanced Native drivers ;Interface REST Native drivers REST add-on Map/Reduce, servServer-side batch d Map/Reduce er-side javascri Yes (SQL)ata manipulation ptWritten in Erlang C++ C++ Eventually consi Strong consisten Strong consiste stent (master-ma cy. Eventually ncy. EventuallDistributed Consist ster replication consistent reads y consistent reency Model with versioning from secondaries ads from second and version reco are available. aries are avail nciliation) able.
  • 28. References• NoSQL solutions: Membase, Redis, CouchDB and MongoDB : http://blog.fedecarg.com/2011/01/25/nosql-solutions-membase-redis- couchdb-and-mongodb/• Visual Guide to NoSQL Systems : http://blog.nahurst.com/visual-guide-to- nosql-systems• MongoDB, CouchDB, MySQL Compare Grid : http://www.mongodb.org/display/DOCS/MongoDB,+CouchDB,+MySQL+Compare+Grid• SQL to Mongo Mapping Chart : http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart• Memcached FAQ : http://code.google.com/p/memcached/wiki/FAQ#Simple_query_result_caching• Couchbase 2.0 Manual : http://docs.couchbase.org/couchbase-manual-2.0.pdf• Building Timeline : Facebook http://www.facebook.com/notes/facebook- engineering/building-timeline-scaling-up-to-hold-your-life- story/10150468255628920