FoundationDB - NoSQL and ACID

insideHPC 2,411 views 26 slides Oct 05, 2013
Slide 1
Slide 1 of 26
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26

About This Presentation

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 aft...


Slide Content

NoSQL and ACID [email protected] Twitter: @foundationdb

NoSQL’s Motivation Make it easy to build and deploy applications. Ease of scaling and operation Fault tolerance Many data models Good price/performance ACID transactions

The case for ACID in NoSQL

Bugs don’t appear under concurrency ACID means i solation . 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.

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.

Abstractions Abstractions built on a scalable, fault tolerant, transactional foundation inherit those properties . And are easy to build…

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.

So why no ACID NoSQL?

Historical Perspective: 2008 In 2008 , NoSQL doesn’t really exist yet. 2008

Databases in 2008 NoSQL emerges to replace scalable sharding/caching solutions that had already thrown out consistency. BigTable Dynamo Voldemort Cassandra

The CAP 2008 theorem “Pick 2 out of 3 ” - Eric Brewer

The CAP 2008 theorem “ Data inconsistency in large-scale reliable distributed systems has to be tolerated … [for performance and to handle faults] ” - Werner Vogles (CTO Amazon.com )

The CAP 2008 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

CAP 2008 Conclusions? Scaling requires distributed design D istributed requires high availability Availability requires no C So, if we want scalability we have to give up C, a cornerstone of ACID, right?

Thinking about CAP 2008 CAP a vailability != High availability

Fast forward to CAP 2013 “Why ’2 out of 3’ is misleading ” “CAP prohibits… perfect availability ” - Eric Brewer

Fast forward to CAP 2013 “ Achieving strict consistency can come at a cost in update or read latency , and may result in lower throughput … ” - Werner Vogles (Amazon CTO)

Fast forward to CAP 2013 “…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)

ACID + NoSQL!

The ACID NoSQL plan Maintain both scalability and fault tolerance Leverage CAP 2013 and d eliver a CP system with true global ACID transactions Enable abstractions and many data models D eliver high per-node performance

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

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

The performance surprise ACID: 10% of work NoSQL: 90% of work

FoundationDB Database software: Scalable Fault tolerant Transactional Ordered key-value API Layers ACID Key-value API

A vision for NoSQL The next generation should maintain Scalability and fault tolerance High performance While adding ACID transactions Data model flexibility

Thank you [email protected] Twitter: @foundationdb