Top Banner
1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. MySQL & NoSQL: The Best of Both Worlds Ted Wennmark Principal Sales Consultant MySQL [email protected]
54

NoSQL and MySQL

May 09, 2015

Download

Technology

Ted Wennmark

My MySQL and NoSQL presentation from the NoSQL Search event in Copenhagen: http://nosqlroadshow.com/nosql-cph-2013/speaker/Ted+Wennmark

MySQL offers solutions to implement NoSQL concepts like auto-sharding, key-value access or asynchronous operations. This adds all known solutions from the SQL world to the NoSQL space.
The combined approach of SQL and NoSQL gives developers the choice to select whatever features from both worlds they need.

In this talk we take a deeper look at key-value access to MySQL and MySQL Cluster, auto-sharding and scalability of MySQL Cluster, mapping of schemaless key value access to a relational data model and the performance of NoSQL access to MySQL.
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: NoSQL and MySQL

1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

MySQL & NoSQL: The Best of Both Worlds

Ted Wennmark

Principal Sales Consultant MySQL

[email protected]

Page 2: NoSQL and MySQL

2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Safe Harbour Statement

The following is intended to outline our general product

direction. It is intended for information purposes only, and

may not be incorporated into any contract. It is not a

commitment to deliver any material, code, or functionality,

and should not be relied upon in making purchasing

decisions. The development, release, and timing of any

features or functionality described for Oracle’s products

remains at the sole discretion of Oracle.

Page 3: NoSQL and MySQL

3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

History of MySQL I

2001 MySQL 3.23 GA – our first GA release ever!

2005 Oracle Corporation acquired Innobase OY

2008 Sun acquired MySQL AB for $1 billion

2010 Oracle acquired Sun on 27 January

2010 MySQL 5.5 first Oracle release, great feedback from community!

2012 MySQL 5.6 “Best release ever“

Page 4: NoSQL and MySQL

4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

History of MySQL II

World’s Most Popular Open Source Database

Over 12 million product installations

65,000 downloads/day

The ”M” of the widely deployed LAMP stack

MySQL Commercial Editions Available

Page 5: NoSQL and MySQL

5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Session Agenda

• NoSQL – What are people looking for?

• RDBMS – What advantages do they still have?

• How MySQL Delivers the Best of Both Worlds

– MySQL Cluster

• NoSQL attributes: Scale-out, performance, ease-of-use, schema

flexibility, on-line operations

• NoSQL APIs

– Key-Value store access to InnoDB (Memcached)

• What is coming with future releases

Page 6: NoSQL and MySQL

6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

What NoSQL must deliver

• Massive scalability

– No application-level sharding

• Performance

• High Availability/Fault Tolerance

• Ease of use

– Simple operations/administration

– Simple APIs

– Quickly evolve application & schema

Scalability

Performance

HA

Ease of use

Page 7: NoSQL and MySQL

7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Still a role for the RDBMS?

NoSQL

Simple access patterns

Compromise on consistency for performance

Ad-hoc data format

Simple operation

RDBMS

Complex queries with joins

ACID transactions

Well defined schemas

Rich set of tools

• No best single solution fits all

• Mix and match

Scalability

Performance

HA

Ease of use

SQL/Joins

ACID Transactions

Page 8: NoSQL and MySQL

8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

MySQL Cluster introduction

Page 9: NoSQL and MySQL

9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

MySQL Cluster Architecture

Data

Nodes

Node Group 1

F1

F3

F3

F1

No

de

1

No

de

2

Node Group 2

F2

F4

F4

F2 N

od

e 3

N

od

e 4

Application Nodes

Cluster

Mgr

Cluster

Mgr

REST Scalability

Performance

HA

Ease of use

SQL/Joins a

ACID Transactions a

Page 10: NoSQL and MySQL

10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

MySQL Cluster: Extensive Choice of NoSQL APIs

Mix

&

Match

Page 11: NoSQL and MySQL

11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

C++ example

NdbOperation *op = trx->getNdbOperation(myTable);

op->insertTuple();

op->equal("key", i);

op->setValue("value", &value);

trx->execute( NdbTransaction::Commit );

Page 12: NoSQL and MySQL

12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

• NoSQL C++ API, flexaSynch benchmark

• 30 x Intel E5-2600 Intel Servers, 2 socket, 64GB

• ACID Transactions, with Synchronous Replication

0

5

10

15

20

25

2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

Millio

ns

of U

PD

AT

Es p

er

Se

co

nd

MySQL Cluster Data Nodes

1.2 Billion UPDATEs per Minute

Page 13: NoSQL and MySQL

13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

MySQL Cluster Architecture

Data

Nodes

Node Group 1

F1

F3

F3

F1

No

de

1

No

de

2

Node Group 2

F2

F4

F4

F2 N

od

e 3

N

od

e 4

Application Nodes

Cluster

Mgr

Cluster

Mgr

REST Scalability

Performance

HA a

Ease of use

SQL/Joins a

ACID Transactions a

http://clusterdb.com/u/demo

Page 14: NoSQL and MySQL

14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Data Node 1

Data Node 2

Data Node 3

Data Node 4

Table T1

P2

P3

P4

P1

Scale-Out: Auto-Partitioning

Page 15: NoSQL and MySQL

15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Data Node 1

Data Node 2

F1

Data Node 3

Data Node 4

Table T1

P2

P3

P4

P1

Scale-Out: Auto-Partitioning

Page 16: NoSQL and MySQL

16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Data Node 1

Data Node 2

F1

F1

Data Node 3

Data Node 4

Table T1

P2

P3

P4

P1

Scale-Out: Auto-Partitioning

Page 17: NoSQL and MySQL

17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Data Node 1

Data Node 2

F1

F3 F1

Data Node 3

Data Node 4

Table T1

P2

P3

P4

P1

Scale-Out: Auto-Partitioning

Page 18: NoSQL and MySQL

18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Data Node 1

Data Node 2

F1 F3

F3 F1

Data Node 3

Data Node 4

Table T1

P2

P3

P4

P1

Scale-Out: Auto-Partitioning

Page 19: NoSQL and MySQL

19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Data Node 1

Data Node 2

F1 F3

F3 F1

Data Node 3

Data Node 4

F2 F4

F4 F2

Node Group 1

Node Group 2

Table T1

P2

P3

P4

P1

Scale-Out: Auto-Partitioning

Page 20: NoSQL and MySQL

20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Data Node 1

Data Node 2

F1 F3

F3 F1

Data Node 3

Data Node 4

F2 F4

F4 F2

Node Group 1

Node Group 2

Table T1

P2

P3

P4

P1

Scale-Out: Auto-Partitioning

Page 21: NoSQL and MySQL

21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Table T1

P2

P3

P4

P1

Scale-Out: Auto-Partitioning

Scalability a

Performance

HA a

Ease of use

SQL/Joins a

ACID Transactions a

Page 22: NoSQL and MySQL

22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Scale-Out Reads & Writes on Commodity Hardware

• 8 x Commodity Intel Servers

– 2 x 6-core processors 2.93GHz

– x5670 processors (24 threads)

– 48GB RAM

• Infiniband networking

• flexAsynch benchmark (NDB API)

0

200

400

600

800

1 000

1 200

2 4 8

Millio

ns

Number of Data Nodes

SELECT Queries per Minute

0

20

40

60

80

100

120

4 8

Millio

ns

Number of Data Nodes

UPDATE Queries per Minute

Page 23: NoSQL and MySQL

23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

On-line Schema changes

• Scale the cluster (add & remove nodes on-line)

• Repartition tables

• Upgrade / patch servers & OS

• Upgrade / patch MySQL Cluster

• Back-Up

• Evolve the schema on-line, in real-time

On-Line Operations

Page 24: NoSQL and MySQL

24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Scalability a

Performance a

HA a

Ease of use a

SQL/Joins a

ACID Transactions a

Page 25: NoSQL and MySQL

25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

NoSQL Access to MySQL Cluster data

Mix & Match!

Same data accessed

simultaneously through

SQL & NoSQL interfaces

Page 26: NoSQL and MySQL

26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

MySQL Cluster 7.1: ClusterJ/JPA

• New Domain Object Model Persistence API (ClusterJ) :

– Java API

– High performance, low latency

– Feature rich

• JPA interface built upon this new Java layer:

– Java Persistence API compliant

• Implemented as an OpenJPA plugin

– Uses ClusterJ where possible, reverts to JDBC for some

operations

– Higher performance than JDBC

– More natural for most Java designers

– Easier Cluster adoption for web applications

Page 27: NoSQL and MySQL

27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Java Access Performance

http://www.mysql.com/why-mysql/white-papers/mysql_wp_cluster_connector_for_java.php

Page 28: NoSQL and MySQL

28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

NoSQL with Memcached (MySQL Cluster 7.2)

• Memcached is a distributed memory based hash-

key/value store with no persistence to disk

• NoSQL, simple API, popular with developers

• MySQL Cluster already provides scalable, in-memory

performance with NoSQL (hashed) access as well as

persistence

– Provide the Memcached API but map to NDB API calls

• Writes-in-place, so no need to invalidate cache

• Simplifies architecture as caching & database integrated

into 1 tier

• Access data from existing relational tables

Page 29: NoSQL and MySQL

29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Traditional Memcached Architecture Two levels of hashing

Memcache

httpd memcached

memcached

memcached memcache key

PHP/Perl

friends:12389

hash key

to find data

Page 30: NoSQL and MySQL

30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Cache hit

Memcache

httpd

memcached PHP/Perl

friends:12389

hash key

to find data

VALUE friends:12389 0 31\r\n

101, 11009, 11150, 55881, 77798 \r\n

Page 31: NoSQL and MySQL

31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Cache miss (1): fetch from DB

Memcache

httpd

memcache PHP/Perl hash key

to find data

mysql

MySQL

Slave

memcached

Page 32: NoSQL and MySQL

32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Cache miss (2): manage cache

Memcache

httpd

PHP/Perl hash key

to find data memcached

Page 33: NoSQL and MySQL

33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Data change (1): Write to DB

mysql

httpd

PHP/Perl

MySQL

Master

DELETE FROM user_friends

VALUES (12389, 999101);

Page 34: NoSQL and MySQL

34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Data change (2): manage cache

mysql

httpd

PHP/Perl

MySQL

Master

memcached

Page 35: NoSQL and MySQL

35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

NoSQL with Memcached

• Flexible:

– Deployment options

– Multiple Clusters

– Simultaneous SQL Access

– Can still cache in Memcached server

– Flat key-value store or map to multiple

tables/columns

set maidenhead 0 0 3

SL6

STORED

get maidenhead

VALUE maidenhead 0 3

SL6

END

Page 36: NoSQL and MySQL

36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Cluster & Memcached – Schema-Free

<town:maidenhead,SL6>

key value

<town:maidenhead,SL6>

key value

Key Value

town:maidenhead SL6

generic table

Application view

SQL view

Page 37: NoSQL and MySQL

37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Cluster & Memcached - Configured Schema

<town:maidenhead,SL6>

prefix key value

<town:maidenhead,SL6>

key value

Prefix Table Key-col Val-col policy

town: map.zip town code cluster

pop: map.zip town popul cluster

Config tables

town ... code popul

maidenhead ... SL6 ...

map.zip

Application view

SQL view

Page 38: NoSQL and MySQL

38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Memcached with MySQL Cluster

http://clusterdb.com/u/memcached

Try it out

Page 39: NoSQL and MySQL

39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Memcached NoSQL Access with InnoDB

• Memcached as a plugin of MySQL Server;

same process space, with very low latency access to data

• Memcapable: supports both memcached ascii protocol and binary protocol

• Support multiple columns: users can map multiple columns into “value”

• Optional local caching: “innodb-only”, “cache-only”, and “caching”

• Batch operations for performance

• Available from in MySQL 5.6

InnoDB Storage Engine

Handler API

MySQL Server

InnoDB API

memcached plugin

Application

SQL Memcached protocol

mysqld

innodb_memcache local cache (optional)

Page 40: NoSQL and MySQL

40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Performance

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

Up to 9x Higher “SET / INSERT” Throughput

0

10000

20000

30000

40000

50000

60000

70000

80000

8 32 128 512

TP

S

Client Connections

MySQL 5.6: NoSQL Benchmarking

Memcached API

SQL

16 GB, Intel Xeon 2.0 GHz CPU

X86_64 2 CPUs- 4 Core Each, 2 RAID DISKS

Page 41: NoSQL and MySQL

41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

InnoDB & Memcached - Configured Schema

<town:maidenhead,SL6:12000>

prefix key value

<@@town:maidenhead,SL6:12000>

key value

name schema table keycol valcols flags

town map city town code,popul

country world state code name,capital

Config tables

town ... code popul

maidenhead ... SL6 12000

map.city

Application view

SQL view

Page 42: NoSQL and MySQL

42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Which API to use?

Page 43: NoSQL and MySQL

43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Scalability a

Performance a

HA a

Ease of use a

SQL/Joins a

ACID Transactions a

Page 44: NoSQL and MySQL

44 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

MySQL Cluster 7.3 DMR: Node.js NoSQL API • Native JavaScript access to MySQL Cluster

– End-to-End JavaScript: browser to the app and database

– Storing and retrieving JavaScript objects directly in MySQL Cluster

– Eliminate SQL transformation

• Implemented as a module for node.js

– Integrates full Cluster API library within the web

app

• Couple high performance, distributed apps, with

high performance distributed database

V8 JavaScript Engine

MySQL Cluster Node.js Module

MySQL Cluster Data Nodes

Clients

Page 45: NoSQL and MySQL

45 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

What does an asynchronous API mean?

do_stuff1(data,

callback1)

callback1(results) do_stuff2(data,

callback2)

callback2(results)

Get on with other stuff Get on with other stuff

Page 46: NoSQL and MySQL

46 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

MySQL Cluster NoSQL API for Node.js

• Modular connector with

various back-end adapters:

• ndb: low-level native

access to MySQL Cluster

• mysql: access to any

MySQL server (translates

operations to SQL statements)

var nosql = require('mysql-js');

var annotations = new

nosql.Annotations();

annotations.mapClass(lib.Tweet,

{'table' : 'tweet'});

var dbProperties =

nosql.ConnectionProperties('ndb');

nosql.openSession(dbProperties,

annotations, onSession);

Page 47: NoSQL and MySQL

47 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

MySQL Cluster NoSQL API for Node.js

var onSession = function(err,

session) {

if (err) {…} else {

var data = new

lib.Tweet(user_args[0],

user_args[1]);

session.persist(data,

onInsert, data);

}

};

Page 48: NoSQL and MySQL

48 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

var onInsert = function(err,

object) {

console.log('onInsert.');

if (err) {…} else {

console.log('Inserted: ' +

JSON.stringify(object));

}

};

MySQL Cluster NoSQL API for Node.js

Page 49: NoSQL and MySQL

49 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Try Node.js example for yourself https://github.com/mysql/mysql-js/tree/master/samples

Page 51: NoSQL and MySQL

51 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Summary

Today’s web workloads demand more from

databases

Performance, scale-out, simples access

patterns & APIs

MySQL meets these needs while still

delivering benefits of an ACID RDBMS

Page 52: NoSQL and MySQL

52 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Next Steps

• Guide to MySQL and NoSQL - Delivering the Best of

Both Worlds

– http://mysql.com/why-mysql/white-papers/mysql-wp-guide-to-

nosql.php

• Evaluate MySQL Cluster 7.2

– http://www.mysql.com/downloads/cluster/

• Bootstrap a Cluster

– https://edelivery.oracle.com/

• Try Memcached API for InnoDB in 5.6

• http://www.mysql.com/downloads/

Page 53: NoSQL and MySQL

53 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Graphic Section Divider

Keynotes

Conferences Sessions

Birds-of-a-feather sessions

Tutorials

Hands-on Labs

Exhibition Hall

Demo Pods

Receptions

San Francisco, September 21-23 Additional Day of Tutorials Oracle.com/mysqlconnect

Page 54: NoSQL and MySQL

54 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Thank you!

Copyright 2012, Oracle and/or its affiliates. All rights reserved.