Download - SQL vs NoSQL
Who am I?
• I’m Jon – Blog: http://dotnet.kapenilattex.com– Twitter: @lattex
• Does anybody remember…• I’m a developer, not a DBA• I’ve worked on mainframe, desktop, web, and
mobile• I’m a member of MSDEV.PH / PHISSUG /
DevCon
Why not SQL?
• Internet scale• 100s of millions of concurrent users• Massive data collections – Terabytes to
Petabytes of data• 24/7 across the globe
NoSQL doesn’t mean no data :p
• It’s not Anti SQL or absolutely no SQL• N(ot) O(nly) SQL• Non-relational Databases
Types of NoSQL Data Stores
Column SetsDocument Oriented
(JSON)
Key-Value Store
XML Graph BLOBs
Object Etc…
j = { name : "mongo" }k = { x : 3 }
db.things.insert( j )db.things.insert( k )
db.things.find()
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }
for (var i = 1; i <= 10; i++) db.things.insert( { x : 4 , j : i } )
db.things.find()
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }{ "_id" : ObjectId("4c220a42f3924d31102bd859"), "x" : 4, "j" : 4 }{ "_id" : ObjectId("4c220a42f3924d31102bd85a"), "x" : 4, "j" : 5 }{ "_id" : ObjectId("4c220a42f3924d31102bd85b"), "x" : 4, "j" : 6 }{ "_id" : ObjectId("4c220a42f3924d31102bd85c"), "x" : 4, "j" : 7 }{ "_id" : ObjectId("4c220a42f3924d31102bd85d"), "x" : 4, "j" : 8 }{ "_id" : ObjectId("4c220a42f3924d31102bd85e"), "x" : 4, "j" : 9 }{ "_id" : ObjectId("4c220a42f3924d31102bd85f"), "x" : 4, "j" : 10 }
ACID vs. BASE
• ACID:– Atomic: Every transaction should succeed else
transaction is roled back– Consistent: Every transaction leaves database in a
valid (consistent) state– Isolation: Transactions don’t interfere with each
other– Durable: Completed transactions persist, even
when servers restart
ACID vs. BASE
• BASE– Basic Availability: The data store should be up all
of the time– Soft state: The data store can be cached
somewhere else if the data store is not available– Eventual consistency: The data store can have
conflicting transactions, but should eventually reach a valid state
Conclusion
• SQL is great when you need ACID• NoSQL is great when you need BASE• Choose the right tool for the right job
Thank You!
• Internship/OJT? Email resume to: [email protected]
• Blog: http://dotnet.kapenilattex.com• Twitter: @lattex
References• John D. Cook – ACID versus BASE for database transactions
http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/
• Getting Started with MongoDB Development – http://docs.mongodb.org/manual/tutorial/getting-started/
• Michael Rys – SQL and NoSQL Are Two Sides of the Same Coin – http://www.slideshare.net/MichaelRys/sql-and-nosql-are-two-sides-of-the-same-coin-strata-2012
• Vamshi Krishna Reddy Vangapally – No sql databases -http://www.slideshare.net/vamshi4001/no-sql-databases
• Venu Anuganti – SQL, NoSQL, BigData in Data Architecture - http://www.slideshare.net/vanuganti/sql-nosql-bigdata-in-data-architecture