Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

32
Elefant unter Strom von OldSql über NoSQL zu NewSQL?

Transcript of Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Page 1: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Elefant unter Stromvon OldSql über NoSQL zu NewSQL?

Page 2: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Moores Law is Brokenprocessing can't scale-up rather out

Data is Growing

MotivationMotivation

Page 3: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Relationale Datenbanken sind groß, alt, schwer und langsam wie ein Elefant.

Richtig gut können die eigentlich gar nichts.

Michael Stonebreaker

Page 4: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Relationale Datenbanken

FeaturesACID

SQL

Scale-up

Fixed Schema

Page 5: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Relationale Datenbanken

PerformanceUseful Work

Concurrency Control

Recovery

Input Output

Page 6: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

NoSQL to the rescue?

Page 7: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

NoSQL Datenbanken

FeaturesBASE

low-level Query Language

Scale-out

Flexible Schema

Page 8: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

BasicallyAvailable

Soft state

Eventually consistent

BA

S

E

Page 9: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Why ACID?

It's better to have programmers deal with performance problems of transactions, than coding around the lack of transactions.

Google Spanner

Page 10: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Why SQL?

no SQL no Standard

high-level Language

Page 11: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

NoSQL over OldSQL ?

Page 12: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Database World Stonebreaker

Datawarehouse OLTP

others

Page 13: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Introducing NewSQL

SQL

ACID

Scale-out

Fixed Schema

Page 14: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

NewSQL = new Architecture

Single Thread, MVCCMain MemoryRedundance

LockingDiskRecovery

over

Page 15: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

NewSql Players

Page 16: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Introducing VoltDB

Page 17: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

VoltDB Architecture

Main Memory

Shared Nothing

ACID

HA and Recovery

Page 18: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Getting Started

Create Database$ voltdb create ­d deployment.xml

Load Database Definition$ sqlcmd1> load classes procedures.jar;2> file schema.sql

SQL and Stored Procedures

Page 19: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Schema Changes

Unique Index orr Remove Column

Live Schema Update

Save and Restore

DDL Statements

Page 20: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

SQL Stored Procedure

CREATE PROCEDURE lastX ASSELECT TOP ? * FROM ACTIVITYORDER BY end ASC

Page 21: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Java Stored Procedure

LastXActivities extends VoltProcedure {

  VoltTable[] run(int x) {    voltQueueSQL(      "SELECT TOP ? * FROM ACTIVITY

                     ORDER BY act_end ASC",    x  );

    return voltExecuteSQL();  }

}

Page 22: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Async Stored Procedure

client.callProcedure(  new Callback() { … },  "AddActivity",  "Franz",  "Ferkel",  "uuid­3")

Page 23: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Transaktionen

ein SQL Statement

eine Stored Procedure

Page 24: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Partitionen

replicated vs. partitioned TablesPARTITION TABLE activity ON COLUMN project_id

partitioned Stored ProceduresPARTITION PROCEDURE lastX 

  ON TABLE activity COLUMN project_id

Page 25: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Durability and Recovery

Snapshots

K-Safety

Replication

Command Logging

Page 26: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

VoltDB Demo

Page 27: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?
Page 28: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Row 1 Row 2 Row 3 Row 40

2

4

6

8

10

12

Column 1

Column 2

Column 3

Page 29: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?
Page 30: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?
Page 31: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Wrap Up

NewSQL als dritter Weg

ACID and SQL can be fast

Choose your DB carefully

Page 32: Jugs HH: Elefant unter Strom - von OldSQL über NoSQL zu NewSQL?

Jan Stamergithub.com/[email protected]