Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort...

73
USES CASES 1

Transcript of Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort...

Page 1: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

USES CASES

1

Page 2: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

OR

2

Page 3: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

DON’T USEMY DATABASE

PRESENTATION FOR NOSQL ROADSHOW

Page 4: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Director, Technical Operationsl, EMEABasho Technologies

IAN PLOSKER

@dstroyallmodels

Page 5: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

WHO IS BASHO?

basho

Page 6: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL
Page 7: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

CAN WE PLEASE NOT TALK ABOUT

BIG DATA?

Page 8: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

LET’S TALK ABOUT

CRITICAL DATA

Page 9: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Is your data really that

critical, dude?

Page 10: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

ON OFFER

• what… is NoSQL? … Riak?

• who … uses Riak?

• why … should I NOT use Riak? (Or other NoSQL for that matter?)

Page 11: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Enter the NoSQL Jungle

YOU ARE HERE

TRUTH

Page 12: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

what are you prepared to trade?

Page 13: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Your current, familiar consistency model

for

a somewhat alien, but perfectly safe, consistency model and

better availability?

Would you trade….

Page 14: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Storage space

for

low latency?

Would you trade….

Page 15: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

late night heroics

for

high availability?

Would you trade….

Page 16: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

35 years of RDBMS success

technology used by a few companies of which you may have heard?

Would you trade….

for

Page 17: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Two million developers worldwide

Would you trade….

for

Page 18: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

BEFORE YOU ANSWER, CONSIDER….

Page 19: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Can anyone call RDBMS a failure?

Page 20: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

IF ANYONE MAKES THESE TRADE-OFFS SEEM EASY…..

Page 21: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

THEY ARE

LYING!!!

Page 22: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Lie # 1:

Any new app must use this newfangled NoSQL.

Page 23: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Lie # 2:

Non-distributed databases provide these properties.

Page 24: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

MongoDB

CouchDB

Neo4J

Cassandra

Riak

Voldemort

Lie # 3:

Words like “distributed” have “relative” meaning.

Page 25: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

I say I want: 1. safety

2. scale out 3. speed

When really I want:

1. speed2. speed3. speed

Lie # 4: The Big One

The lie developers tell themselves.

Page 26: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

REMEMBER

At small scale everything works.

Page 27: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

REMEMBER

At large scale

things start to break

At small scale everything works.

Page 28: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

There is no such thing as NoSql

Page 29: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

There's Just Databases

Page 30: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Making Different Tradeoffs

Page 31: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Persistence Strategy

In-Memory PersistentPersistent

Periodic Immediate

Memcache MongoDB Riak

Redis Redis Cassandra

Hana

Page 32: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

(Primary) Query Model

Rich Query Key-Value Key-Value Key-Value

Pure Document Tablet

Relational Riak MongoDB Cassandra

Vertica BerkleyDB Couch HBase

Datomic Voldemort Redis Big Table

Page 33: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Replication

Master-Slave Masterless

Oracle DB Riak

MySQL Cassandra

PostgreSQL Voldemort

Redis

MongoDB

Page 34: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Distribution

BYO Sharded Ring

Oracle DB MongoDB Cassandra

MySQL MySQL Cluster Riak

PostgreSQL Voldemort

Redis

Page 35: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Data Model

Relational Object Column-Family

Oracle DB Riak Cassandra

MySQL MongoDB HBase

PostgreSQL Couch BigTable

Redis HyperTable

Datomic

Page 36: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL
Page 37: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

IS A(N) ...

Page 38: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

DATABASE

Page 39: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

SOURCE

Page 40: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

APACHE 2 LICENSE

Page 41: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

DISTRIBUTED

Page 42: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

MASTERLESS

Page 43: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

FAULT TOLERANT

Page 44: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

HIGHLY AVAILABLE/LOW LATENCY

Page 45: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

SCALABLE

Page 46: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

KEY-VALUE

Page 47: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

IS ...

Page 48: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

... INSPIRED BY AMAZON’S DYNAMO

Page 49: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

... BUILT FOR THE WEB

Page 50: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

RIAK HAS ...

Page 51: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

HTTP API

Page 52: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

PROTOCOL BUFFERS API

Page 53: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

CLIENT API WRITTEN IN ...

Page 54: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL
Page 55: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL
Page 56: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL
Page 57: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL
Page 58: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL
Page 59: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

ALTERNATIVE QUERYING MECHANISMS

Page 60: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

DISTRIBUTE

Replicate client data to your Riak clusters

anywhere in the world

Clients run Riak clusters in

Your data centers

Page 61: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Low Latency: All reads = hash lookup + 1 seek

BITCASK AND THE LATENCY TRADEOFF

TRADEOFF: All keys must fit in memory

Page 62: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Who cares about latency?

SOA

Page 63: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Who cares about latency?

Sometimes high latency looks like an outage to the end user.

Page 64: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Who cares about latency?

I do

I do

I do

I do

I do I do

I do

I do

I do

I do

I do

Page 65: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

1. Cloud Storage (S3)2. Low-latency interactive apps3. Smartphone apps4. CDN5. Medical6. Session Store7. Gaming8. Mobile Infrastructure

“We would not have been able to build this application without node.js and Riak Search.”Clipboard

USE CASES

Page 66: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Advantages: fast, reliable, scalable. Distribute to a global audience.

“REAL-TIME” APPS

Real-time SearchUS Retailer Online Inventory

Mochi – casual interactive gaming

Social Media Networks

STUFF CO.

Page 67: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Advantages: Doctors manage prescriptions from highly-available servers and, soon, smartphones, 95% cheaper than Oracle, easier to run

DANISH HEALTH SERVICES

Page 68: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Advantages: build competitive services to Amazon, reliable storage, easy to operate

MULTI-TENANT OBJECT STORAGE

Telco distributes content to 10 data centers

Page 69: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

Advantages: better quality of service for write-intensive smartphone users; reduce infrastructure costs

SMARTPHONE APPS

Write to RiakNext…sync with each other

Page 70: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

A QUICK LITMUS TEST: ARE THE TRADEOFFS WORTH IT?

Page 71: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

USE RIAK IF YOU NEED…

Predictable latencyPredictable scaling profilePredictable operations

and if data unavailability costs thousands of $$$’s/minute or is even more important.

Page 72: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

DON’T USE RIAK IF YOU NEED…

Familiar query patternsFamiliar hiring patternsFamiliar operational problems

and if you don’t have a problem right now.

Page 73: Partners for success · Oracle DB MongoDB Cassandra MySQL MySQL Cluster Riak PostgreSQL Voldemort Redis. Data Model Relational Object Column-Family Oracle DB Riak Cassandra MySQL

THANK YOU

CREDIT: TONY FALCO

email:[email protected]: @dstroyallmodels