No sql solutions - 공개용
Upcoming SlideShare
Loading in...5

No sql solutions - 공개용






Total Views
Slideshare-icon Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    No sql solutions - 공개용 No sql solutions - 공개용 Presentation Transcript

    • NoSQL Solutions Byeongweon Moon 2012.01.26
    • Redis, Couchbase, MongoDB, Membase
    • Memory Base Cache vs. Database
    • NoSQL• Collections (versus tables)• Documents (versus rows)• Loosely defined fields (versus columns)• Scale out (versus scale up)• Denormalization (versus normalization)
    • Data Model• Relational• Key-value• Column-oriented• Document-oriented
    • Relational
    • Key-value
    • Column-oriented
    • 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} ]
    • Memory Base Cache• Weak Persistence• Weak Consistency• Strong Performance• Low Latency
    • 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
    • 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
    • Redis• In-memory, key-value data store• Written by ANSI C, support various client
    • 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
    • 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
    • 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;}
    • 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 하겐다즈
    • 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
    • Database• Persistence• Reliable• Scalable• Distributed• Clustered
    • MongoDB• Document-oriented Storage• High Write Performance• Full index support• Master/Slave Replication• Support Map/Reduce• Auto-Sharding• Querying• GridFS• Written in C++
    • 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
    • Twitter
    • Facebook Timeline
    • 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
    • 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.
    • References• NoSQL solutions: Membase, Redis, CouchDB and MongoDB : couchdb-and-mongodb/• Visual Guide to NoSQL Systems : nosql-systems• MongoDB, CouchDB, MySQL Compare Grid :,+CouchDB,+MySQL+Compare+Grid• SQL to Mongo Mapping Chart :• Memcached FAQ :• Couchbase 2.0 Manual :• Building Timeline : Facebook engineering/building-timeline-scaling-up-to-hold-your-life- story/10150468255628920