foundationdb - nosql and acid

26
NoSQL and ACID [email protected] Twitter: @foundationdb

Upload: insidehpc

Post on 15-Jan-2015

706 views

Category:

Technology


6 download

DESCRIPTION

In this slidecast, Dave Rosenthal from FoundatoinDB, the first commercially available NoSQL database that supports global ACID transactions (found only in relational systems) and multi-data models. Database technologies are undergoing rapid evolution, with new approaches being actively explored after decades of relative stability. Dave Rosenthal believes that the next generation of NoSQL will continue to employ shared-nothing, distributed architectures with fault tolerance and scalability. However, they will aggressively explore the strong-consistency permitted by the CAP theorem and will support ACID, allowing for multiple data models. Rosenthal speaks to the history of NoSQL, problems that have arisen due to a lack of data consistency in NoSQL, his views on the CAP Theorem and where it's all headed. Learn more: https://foundationdb.com Watch the presentation video: http://youtu.be/1KsZKRcgmuU

TRANSCRIPT

Page 1: FoundationDB - NoSQL and ACID

NoSQL and ACID

[email protected]: @foundationdb

Page 2: FoundationDB - NoSQL and ACID

NoSQL’s Motivation

Make it easy to build and deploy applications.

Ease of scaling and operation

Fault tolerance Many data models Good price/performanceX ACID transactions

Page 3: FoundationDB - NoSQL and ACID

The case for ACID in NoSQL

Page 4: FoundationDB - NoSQL and ACID

Bugs don’t appear under concurrency

• ACID means isolation.

• Reason locally rather than globally. – If every transaction maintains an

invariant, then multiple clients running any combination of concurrent transactions also maintain that invariant.

• The impact of each client is isolated.

Page 5: FoundationDB - NoSQL and ACID

Isolation means strong abstractions

• Example interface:– storeUser(name, SSN)

– getName(SSN)– getSSN(name)

• Invariant: N == getName(getSSN(N))– Always works with single client.

– Without ACID: Fails with concurrent clients.

– With ACID: Works with concurrent clients.

Page 6: FoundationDB - NoSQL and ACID

Abstractions

Abstractions built on a scalable, fault tolerant, transactional foundation inherit those properties.

And are easy to build…

Page 7: FoundationDB - NoSQL and ACID

Remove/decouple data models

• A NoSQL database with ACID can provide polyglot data models and APIs.– Key-value, graph, column-oriented,

document, relational, publish-subscribe, spatial, blobs, ORMs, analytics, etc…

• Without requiring separate physical databases. This is a huge ops win.

Page 8: FoundationDB - NoSQL and ACID

So why no ACID NoSQL?

Page 9: FoundationDB - NoSQL and ACID

Historical Perspective: 2008

In 2008, NoSQL doesn’t really exist yet.

2008

Page 10: FoundationDB - NoSQL and ACID

Databases in 2008

NoSQL emerges to replace scalable sharding/caching solutions that had already thrown out consistency.

• BigTable

• Dynamo

• Voldemort

• Cassandra

Page 11: FoundationDB - NoSQL and ACID

The CAP2008 theorem

“Pick 2 out of 3”

- Eric Brewer

Page 12: FoundationDB - NoSQL and ACID

The CAP2008 theorem

“Data inconsistency in large-scale reliable distributed systems has to be tolerated … [for performance and to

handle faults]”

- Werner Vogles (CTO Amazon.com)

Page 13: FoundationDB - NoSQL and ACID

The CAP2008 theorem

“The availability property means that the system is ‘online’ and the client of

the system can expect to receive a response for its request.”

- Wrong descriptions all over the web

Page 14: FoundationDB - NoSQL and ACID

CAP2008 Conclusions?

• Scaling requires distributed design

• Distributed requires high availability

• Availability requires no C

So, if we want scalability we have to give up C, a cornerstone

of ACID, right?

Page 15: FoundationDB - NoSQL and ACID

Thinking about CAP2008

CAP availability != High availability

Page 16: FoundationDB - NoSQL and ACID

Fast forward to CAP2013

“Why ’2 out of 3’ is misleading”

“CAP prohibits… perfect availability”

- Eric Brewer

Page 17: FoundationDB - NoSQL and ACID

Fast forward to CAP2013

“Achieving strict consistency can come at a cost in update or read latency, and may result in lower

throughput…”

- Werner Vogles (Amazon CTO)

Page 18: FoundationDB - NoSQL and ACID

Fast forward to CAP2013

“…it is better to have application

programmers deal with performance

problems due to overuse of transactions

as bottlenecks arise, rather than always

coding around the lack of transactions.“

- Google (Spanner)

Page 19: FoundationDB - NoSQL and ACID

ACID + NoSQL!

Page 20: FoundationDB - NoSQL and ACID

The ACID NoSQL plan

• Maintain both scalability and fault tolerance

• Leverage CAP2013 and deliver a CP system

with true global ACID transactions

• Enable abstractions and many data models

• Deliver high per-node performance

Page 21: FoundationDB - NoSQL and ACID

Decomposition approach

Decompose the processing pipeline of a traditional ACID DB

into individual stages.

Page 22: FoundationDB - NoSQL and ACID

Decomposition approach

Decompose the processing pipeline of a traditional ACID DB into individual stages.

• Stages:– Accept client transactions

– Apply concurrency control

– Write to transaction logs

– Update persistent data representation

• Upside: Performance

• Downside: “Ugly” and complex architecture needs to solve tough problems for each stage

Page 23: FoundationDB - NoSQL and ACID

The performance surprise

ACID:10% of work

NoSQL:90% of work

Page 24: FoundationDB - NoSQL and ACID

FoundationDB

Database software:

• Scalable

• Fault tolerant

• Transactional

• Ordered key-value API

• Layers

ACID Key-value API

Graph SQL Doc Event

Page 25: FoundationDB - NoSQL and ACID

A vision for NoSQL

• The next generation should maintain– Scalability and fault tolerance

– High performance

• While adding– ACID transactions

– Data model flexibility

Page 26: FoundationDB - NoSQL and ACID

Thank you

[email protected]: @foundationdb