70
PFCongres 2012 Jeroen van Dijk To SQL OR No T SQL? ( )

To SQL or No(t)SQL - PFCongres 2012

Embed Size (px)

Citation preview

Page 1: To SQL or No(t)SQL - PFCongres 2012

PFCongres 2012 Jeroen van Dijk

To SQL

OR

No T SQL?( )

Page 2: To SQL or No(t)SQL - PFCongres 2012

JEROEN VAN DIJK

∂Nerd chief @ ENRISE

∂PHPBenelux board member∂Zend Certified Engineer∂Web technology freak∂Open source addict

[email protected] @NEOREY

Page 3: To SQL or No(t)SQL - PFCongres 2012

∂ You engineers are our top chefs!

THE ENRISE RESTAURANT

∂ We want to prepare the best dishes∂ With the best ingredients∂ To create a magical client experience!

Page 4: To SQL or No(t)SQL - PFCongres 2012
Page 5: To SQL or No(t)SQL - PFCongres 2012

WHAT IS

ACID?

Page 6: To SQL or No(t)SQL - PFCongres 2012
Page 7: To SQL or No(t)SQL - PFCongres 2012

EVER HEARD OF

THEOREM?CAP

Page 8: To SQL or No(t)SQL - PFCongres 2012

KNOW

ABC?∂ Courtesy of Tim Anglade

Page 9: To SQL or No(t)SQL - PFCongres 2012

Always

∂ Courtesy of Tim Anglade

Page 10: To SQL or No(t)SQL - PFCongres 2012

AlwaysBe

∂ Courtesy of Tim Anglade

Page 11: To SQL or No(t)SQL - PFCongres 2012

AlwaysBeCaching

∂ Courtesy of Tim Anglade

Page 12: To SQL or No(t)SQL - PFCongres 2012

AlwaysBeCaching

∂ Courtesy of Tim Anglade

Page 13: To SQL or No(t)SQL - PFCongres 2012

JOIN THE HYPE?

WANT!==HAVE

13

Page 14: To SQL or No(t)SQL - PFCongres 2012

HAVE TO USE NOSQL?

SCALABILITY&

PERFORMANCE

14

Page 15: To SQL or No(t)SQL - PFCongres 2012

HAVE TO USE NOSQL?

SCALABILITY&

PERFORMANCE

15

Page 16: To SQL or No(t)SQL - PFCongres 2012

RECAP RDBMS GREATNESS

∂ Standard Query Language∂ ACID: Atomicity, Consistency, Isolation, Durability∂ Supported by everyone and everything∂ Tuning options∂ Battle tested!∂ Open source?!

16

NOT ENOUGH?

Page 17: To SQL or No(t)SQL - PFCongres 2012

MAKING LOADS OF MONEY?

17

Page 18: To SQL or No(t)SQL - PFCongres 2012

BUY A BIGGER BOX

18

Page 19: To SQL or No(t)SQL - PFCongres 2012

∂ Vertical scalability

19

NOT SO GREAT RDBMS FEATURES

Page 20: To SQL or No(t)SQL - PFCongres 2012

NOT SO GREAT RDBMS FEATURES

∂ Vertical scalability

∂ Horizontal scalability

20

Page 21: To SQL or No(t)SQL - PFCongres 2012

∂ Vertical scalability

∂ Horizontal scalability

∂ Schema changes!

21

NOT SO GREAT RDBMS FEATURES

Page 22: To SQL or No(t)SQL - PFCongres 2012

SINCE 2004

DATA++++++

22

Page 23: To SQL or No(t)SQL - PFCongres 2012

WHO NEEDS

ACID!?

Page 24: To SQL or No(t)SQL - PFCongres 2012

CAP THEOREM

PC

A

CONSISTENCY PARTITION TOLERANCE

AVAILABILITY

Page 25: To SQL or No(t)SQL - PFCongres 2012

CAP THEOREM

P

CA AP

CP

C

AAVAILABILITY

PICKTWO

CONSISTENCY PARTITION TOLERANCE

Page 26: To SQL or No(t)SQL - PFCongres 2012

CAP THEOREM

P

CA AP

CP

C

A

PARTITION TOLERANCE

PICKTWO

CONSISTENCY

MySQL (InnoDB, not MyISAM)

PostgreSQL SQL Server

Dynamo Voldemort

Cassandra

SimpleDB

CouchDB

Riak

BigTable

Hypertable Hbase

MongoDB Terrastore

Couchbase MemcacheDB Redis

AVAILABILITY

Oracle RAC Neo4J

Page 27: To SQL or No(t)SQL - PFCongres 2012

NOSQL TYPES4

Page 28: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

4 NOSQL TYPES

Page 29: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

4 NOSQL TYPES

Page 30: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

4 NOSQL TYPES

Page 31: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

4 NOSQL TYPES

Page 32: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

∂ 122 known NoSQL databases

4 NOSQL TYPES

Page 33: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

∂ Focus from Redis, Riak, Neo4J, MongoDB

4 NOSQL TYPES

Page 34: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

KEY - VALUE

∂ Schema-less design∂ Just strings of data∂ Hard to query∂ Mostly in memory

Page 35: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

KEY - VALUE

[“key1” => “value1”,“key2” => “value2”,“key3” => “value3”,

]

Page 36: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

REDIS

∂ Blazing fast key-value implementation∂ Master - slave replication∂ Lots of methods to query data∂ Notable options∂ Data types : Strings, hashes, lists, sets∂ Data expiration∂ Pub/Sub for messaging

∂ Reconsider when using Memcached

Page 37: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

∂ BigTable or Dynamo style∂ Consistent hashing∂ Vector clocks∂ Hinted hand off

Page 38: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

∂ Data stored in a ring

Page 39: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

A

B

C

D

∂ Consistent hashing with 4 nodes

Page 40: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

∂ Partitioning as done by Riak

Page 41: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

∂ Read / Write....

Page 42: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

∂ Anywhere in the ring

Page 43: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

∂ First node joins the cluster, claims all partitions

Page 44: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

A

B

C

∂ Reading / writing is done to 3 nodes

N = 3

Page 45: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

A

B

C

N = 3W = 2

R = 2

∂ Reading / writing succeeds with 2 valid responses

Page 46: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

A

B

C

D

N = 3W = 2

R = 2[ Ov1 ]

[ Ov1,v2 ]

∂ Node C down, while new write action

[ Ov1,v2 ]

Page 47: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

COLUMN

A

B

C

D

[ Ov1,v2 ]

N = 3

∂ Node D hands the new version off

N = 3W = 2

R = 2

[ Ov1,v2 ]

[ Ov1,v2 ]

Page 48: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

RIAK

∂ Dynamo implementation∂ MapReduce query style∂ Multiple storage backends∂ Notable options

§ Link walking (like Graph solutions)§ Solr-like search interface§ Secondary indexes

Page 49: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

∂ Relations more important then entities∂ From RDBMS perspective : SELF JOINS

GRAPH

Page 50: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

∂ Facebook style

GRAPH

Page 51: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

GRAPH

∂ Betweenness centrality

Page 52: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

GRAPH

∂ Degree centrality

Page 53: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

GRAPH

∂ Closeness centrality

Page 54: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

GRAPH

∂ Twitter style

Page 55: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

GRAPH

∂ TomTom style

2

1

1

33

92

31

2

2

Page 56: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

GRAPH

2

1

1

33

92

31

2

2

∂ TomTom style

Page 57: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

GRAPH

2

1

1

33

92

31

2

2

∂ TomTom style

Page 58: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

NEO4J

∂ ACID compliant∂ Enterprise product for HA ($$$)∂ Custom query language∂ Notable options

§ Self contained web admin

Page 59: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

DOCUMENT

∂ Largest resemblance with RDBMS∂ MapReduce∂ Software architect more important

Page 60: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

MONGODB

∂ MySQL of it’s generation?!∂ Master - slave structure∂ MapReduce∂ Notable options

§ Geo indexes

SMALLEST LEARNING CURVE!

Page 61: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

∂ Rapid changing data which fits in memory∂ Analytics, logging, real-time data collection

USE CASES

Page 62: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

∂ Rapid changing data which fits in memory∂ Analytics, logging, real-time data collection

∂ Very good availability & fault tolerance ∂ Applications where seconds of downtime hurt

USE CASES

Page 63: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

∂ Rapid changing data which fits in memory∂ Analytics, logging, real-time data collection

∂ Very good availability & fault tolerance ∂ Applications where seconds of downtime hurt

∂ For rich interconnected data∂ Social relational data, geo & maps data

USE CASES

Page 64: To SQL or No(t)SQL - PFCongres 2012

KEY-VALUE

COLUMN

GRAPH

DOCUMENT

∂ Rapid changing data which fits in memory∂ Analytics, logging, real-time data collection

∂ Very good availability & fault tolerance ∂ Applications where seconds of downtime hurt

∂ For rich interconnected data∂ Social relational data, geo & maps data

∂ MySQL like usage with indexes∂ Any type of data you’d fit in MySQL

USE CASES

Page 65: To SQL or No(t)SQL - PFCongres 2012

65

ONE USEFUL INGREDIENT

Page 66: To SQL or No(t)SQL - PFCongres 2012

66

MORE GREAT TASTES

Page 67: To SQL or No(t)SQL - PFCongres 2012

∂ KLIK VOOR FOOTER

67

Page 68: To SQL or No(t)SQL - PFCongres 2012

∂ KLIK VOOR FOOTER

68

Polyglot persistence?

Page 69: To SQL or No(t)SQL - PFCongres 2012

∂ THANK YOU! FEEDBACK? JOIND.IN/7084

Page 70: To SQL or No(t)SQL - PFCongres 2012

∂ MORE DETAILS? SCAN THIS CODE.