Top Banner
41

No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Mar 29, 2015

Download

Documents

Cheyanne Rhymes
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.
Page 2: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

No SQL is not about SQL

Page 3: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

No SQL is a Zoo.. Key-Value Stores

BigTableSimpleDB

Azure Table

Wide Column Stores

Document Stores Graph Databases

Page 4: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Why not Traditional RDBMs?

Offer incredibly useful guarantees and have been battleworn and tested.

Page 5: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Referential Integrity

Page 6: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

ACID Transactions

Page 7: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

And SQL..

SQL is a powerful expressive DSL (Domain Specific Language) that many, many people understand.

Page 8: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

So Why No SQL?

Page 9: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Web Scale

Page 10: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Web scale can be done in SQL

Page 11: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

How?

• Vertical Part / Logical Sharding (Instagram)

• Caching (28 terabytes Facebook, 2008)

• SQL + No SQL• Think about your Architect

Want to learn more? Spend time on http://highscalability.com/

Page 12: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

But a reasonable question is..

How much time should we be devoting to managing scaling problems versus adding business value to these systems?

Page 13: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

So what are we giving up?

Page 14: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Availability

Consistency

Partitiontolerant

MongoDB

MySQLSQL Server

Oracle

RDBMs

HBase (Hadoop)

Google BigTable

DynamoCouch Cassandra

Voldemort

Redis

SimpleDB

CAP

Page 15: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

FriendsWhoCook.com

A social network of friends who enjoy cooking great food.

- Add my Recipes - Add my friends- Show my friends- Like / Comment on my Friend’s Recipes- Search recipes of my friends, their

friends, and so on by.

Page 16: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.
Page 17: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.
Page 18: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.
Page 19: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Problem 1: Store Recipes

Page 20: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Fairly Simple Object

class Recipe { Image PhotoList<Comments> CommentsList<Ingredients> IngredientsList<ProfileId> LikesCategory RecipeCategory}

Page 21: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Becomes a complex RDBM’ess

Page 22: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Object-Relational Impedance Mismatch

Page 23: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

No SQL: Document Store

• Data element is a document• Documents grouped into collections• Often store in JSON• Works great with Domain Driven

Design• Schema-less

Page 24: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Document Store Examples

• MongoDB (PC)• CouchDB (PA)• RavenDB (PA)

Page 25: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

DEMO: MongoDB

Page 26: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Demo: CouchDB

Page 27: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Problem 2: Model the Social Graph

Page 28: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Friends in RDBMS

For a more sophisticated view of modeling graphs in an RDBMs:http://www.slideshare.net/quipo/rdbms-in-the-social-networks-age

Page 29: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Get my Friends

Declare @ProfileID int

SELECT FirstDegreeProfile.ID, FirstDegreeProfile.FirstName, FirstDegreeProfile.LastName

FROM Profile AS FirstDegreeProfileJOIN Friendship ON FirstDegreeProfile.ID = Friendship.FriendIDWHERE Friendship.ProfileID = @ProfileID

Page 30: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Friends and their friends

Declare @ProfileID int Set @ProfileID = 1

Select FirstDegreeFriendship.FriendId as MyFriendId, SecondDegreeProfile.ID as

SecondDegreeId, SecondDegreeProfile.FirstName as SecondDegreeFirstName, SecondDegreeProfile.LastName as SecondDegreeLastName

from Profile as SecondDegreeProfileJoin Friendship as SecondDegreeFriendship ON SecondDegreeProfile.ID = SecondDegreeFriendship.FriendIDjoin Friendship as FirstDegreeFriendship ON SecondDegreeFriendship.ProfileID = FirstDegreeFriendship.FriendIDWhere FirstDegreeFriendship.ProfileId = @ProfileId

/* Note: A much better solution would use a recursive CTE to compute transitive closure */

Page 31: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Graph Databases

• Optimized for graphs data• Check out Neo4J

Page 32: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Problem 3: Schemaless / Big Data

Facebook's Network: Credit Traud & Frost, UNC-Chapel Hill

Page 33: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

How do we ask these questions?

• After we changed the “like” button icon for half of our users, did we get more or less likes from that sample?

• Of users who click on our ads, what pages did they spend the most time on?

• Which hidden patterns might make us competitive that we aren’t even aware of?Want to get far ahead of the pack? Read “The Lean Startup” by Eric Ries

Page 34: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Is this Actionable?

Page 35: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

How about this?

Page 36: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Wide Column

“A Bigtable is a sparse, distributed, persistent multidimensional sorted map”

Source: http://jimbojw.com/wiki/index.php?title=Understanding_Hbase_and_BigTable

Page 37: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

MapReduce

Map(k,v) [(k1, v1), (k2, v2), (k1, v3), (k3, v4)]Map(k, v) (list of intermediate key / value pairs)

Internal Step: Takes list of intermediate key value pairs and converts to a key / list of values.

Reduce(k, [v1, v2, v3…]) (k, n1), (k, n2)

Page 38: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

One Down Side…

• We have to have smart people write MapReduce programs and the problems need to be expressible as Map Reduce..

• General solutions are BIG money.

Page 39: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Final thought: Big Data is BIG

= ?

Page 40: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Things to Read

• Bigtable: A Distributed Storage System for Structured Data

• Dynamo: Amazon’s Highly Available Key-value Store• MapReduce: Simplified Data Processing on Large

Clusters• The Google File System• Towards Robust Distributed Systems • http://jimbojw.com/wiki/index.php?

title=Understanding_Hbase_and_BigTable

Page 41: No SQL is not about SQL No SQL is a Zoo.. Key-Value Stores Wide Column Stores Document Stores Graph Databases.

Creative Commons Acknowledgments and Thanks!

Bobwitloxrosipaw