41

No SQL is not about SQL

  • Upload
    helen

  • View
    55

  • Download
    0

Embed Size (px)

DESCRIPTION

No SQL is not about SQL. No SQL is a Zoo.. . Key-Value Stores. Wide Column Stores. SimpleDB. BigTable. Azure Table. Document Stores. Graph Databases. Why not Traditional RDBMs?. Offer incredibly useful guarantees and have been battleworn and tested. Referential Integrity. - PowerPoint PPT Presentation

Citation preview

Page 1: No SQL is not  about  SQL
Page 2: No SQL is not  about  SQL

No SQL is not about SQL

Page 3: No SQL is not  about  SQL

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

Why not Traditional RDBMs?Offer incredibly useful guarantees and have been battleworn and tested.

Page 5: No SQL is not  about  SQL

Referential Integrity

Page 6: No SQL is not  about  SQL

ACID Transactions

Page 7: No SQL is not  about  SQL

And SQL..

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

Page 8: No SQL is not  about  SQL

So Why No SQL?

Page 9: No SQL is not  about  SQL

Web Scale

Page 10: No SQL is not  about  SQL

Web scale can be done in SQL

Page 11: No SQL is not  about  SQL

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

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

So what are we giving up?

Page 14: No SQL is not  about  SQL

Availability

Consistency

Partitiontolerant

MongoDB

MySQLSQL Server

Oracle

RDBMsHBase (Hadoop)

Google BigTable

DynamoCouch Cassandra

Voldemort

Redis

SimpleDB

CAP

Page 15: No SQL is not  about  SQL

FriendsWhoCook.comA 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
Page 17: No SQL is not  about  SQL
Page 18: No SQL is not  about  SQL
Page 19: No SQL is not  about  SQL

Problem 1: Store Recipes

Page 20: No SQL is not  about  SQL

Fairly Simple Objectclass Recipe {

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

Page 21: No SQL is not  about  SQL

Becomes a complex RDBM’ess

Page 22: No SQL is not  about  SQL

Object-Relational Impedance Mismatch

Page 23: No SQL is not  about  SQL

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

Document Store Examples• MongoDB (PC)• CouchDB (PA)• RavenDB (PA)

Page 25: No SQL is not  about  SQL

DEMO: MongoDB

Page 26: No SQL is not  about  SQL

Demo: CouchDB

Page 27: No SQL is not  about  SQL

Problem 2: Model the Social Graph

Page 28: No SQL is not  about  SQL

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

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

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

Graph Databases• Optimized for graphs data• Check out Neo4J

Page 32: No SQL is not  about  SQL

Problem 3: Schemaless / Big Data

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

Page 33: No SQL is not  about  SQL

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

Is this Actionable?

Page 35: No SQL is not  about  SQL

How about this?

Page 36: No SQL is not  about  SQL

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

MapReduceMap(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

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

Final thought: Big Data is BIG

= ?

Page 40: No SQL is not  about  SQL

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

Creative Commons Acknowledgments and Thanks!

Bobwitloxrosipaw