class 14: log-structured-merge trees

113
CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis CS460: Intro to Database Systems Class 14: Log-Structured-Merge Trees Instructor: Manos Athanassoulis https://midas.bu.edu/classes/CS460/ based on slides from Niv Dayan

Upload: others

Post on 20-Nov-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

CS460: Intro to Database Systems

Class 14: Log-Structured-Merge TreesInstructor: Manos Athanassoulis

https://midas.bu.edu/classes/CS460/

based on slides from Niv Dayan

Page 2: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Useful when?

Massive dataset

Rapid updates/insertions

Fast lookups

LSM-trees are for you.

Page 3: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Time1980 1990 2000 2010

Why now?

Patrick O'NeilUMass Boston

Invented in 1996

Page 4: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Outline

1. Storage devices

2. Indexing problem & basic solutions

3. Basic LSM-trees

4. Leveled LSM-trees

5. Tiered LSM-trees

6. Bloom filters

Page 5: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Storage devices

Page 6: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Main Memory expensive, fast

Disk cheap, slowAll data

Metadata & frequently accessed data

The Memory Hierarchy

Page 7: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

≈100 ns

≈10 ms

≈5-6 order of magnitude difference

Page 8: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Why is disk slow?

Random access is slow move disk head

Sequential access is faster let disk spin

Disk head

Page 9: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

4 kilobyte chunks Coarse access granularityBlocks

64 byte chunks Fine access granularityWords

Page 10: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

4 kilobyte chunks Coarse access granularityBlocks

64 byte chunks Fine access granularityWords

Page 11: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Outline

1. Storage devices

2. Indexing problem & basic solutions

3. Basic LSM-trees

4. Leveled LSM-trees

5. Tiered LSM-trees

6. Bloom filters

Page 12: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Outline

1. Storage devices

2. Indexing problem & basic solutions

3. Basic LSM-trees

4. Leveled LSM-trees

5. Tiered LSM-trees

6. Bloom filters

Page 13: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Indexing Problem & Basic Solutions

Page 14: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Indexing Problem

names phone numbers

Structure on disk?

Lookup cost?

Insertion cost?

Page 15: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Data Structure Lookup cost Insertion cost

Sorted array

Log

B-tree

Basic LSM-tree

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue Compare and contrast data structures.What to use when?

Page 16: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Data Structure Lookup cost Insertion cost

Sorted array

Log

B-tree

Basic LSM-tree

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue Compare and contrast data structures.What to use when?

Page 17: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Modeling Performance

≈100 ns

≈10 ms Measure bottleneck:

Number of block reads/writes (I/O)

≈1 ns

4 kilobyte Blocks

64 byte Words

Page 18: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Sorted ArrayN entriesB entries fit into a disk block Array spans N/B disk blocks

Lookup method & cost?Binary search: O log% &

' I/OsInsertion cost?Push entries: O (

' )&' I/Os

Block 1 Block 2 … Block N/BAnne Bob Yulia

Arnold Corrie ZackBarbara Doug Zelda

BufferJamesSara Array size Pointer

Page 19: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion costSorted array O(log2(N/B)) O(N/B2)

LogB-tree

Basic LSM-treeLeveled LSM-treeTiered LSM-tree

Results Catalogue

Page 20: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion costSorted array O(log2(N/B)) O(N/B2)

LogB-tree

Basic LSM-treeLeveled LSM-treeTiered LSM-tree

Results Catalogue

Page 21: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Log (append-only array)

Block 1 Block 2 … Block N/BDoug Yulia Anne

Zelda Zack Bob

Arnold Barbara Corrie

BufferJames

Sara Array size Pointer

N entries

B entries fit into a disk block

Array spans N/B disk blocks

Lookup method & cost?

Scan: O "#

Insertion cost?

Append: O $#

Page 22: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion costSorted array O(log2(N/B)) O(N/B2)

Log O(N/B) O(1/B)B-tree

Basic LSM-treeLeveled LSM-treeTiered LSM-tree

Results Catalogue

Page 23: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion costSorted array O(log2(N/B)) O(N/B2)

Log O(N/B) O(1/B)B-tree

Basic LSM-treeLeveled LSM-treeTiered LSM-tree

Results Catalogue

Page 24: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

B-tree

Lookup method & cost?Tree search: O log% &

%

AnneArnold

YuliaZack

CorrieDoug

BobBarbara

Anne Bob Corrie … … Yulia

Anne … …

Depth: O(logB(N/B))

Insertion method & cost? Tree search & append: O log% &

%

Page 25: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion costSorted array O(log2(N/B)) O(N/B2)

Log O(N/B) O(1/B)B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-treeLeveled LSM-treeTiered LSM-tree

Results Catalogue

Page 26: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

B-trees

Goetz Graefe Microsoft, HP Fellow, now Google ACM Software System Award

“It could be said that the world’s information is at our fingertips because of B-trees”

Page 27: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

B-trees are no longer sufficient

Cheaper to store data

Workloads more insert-intensive

We need better insert-performance.

Page 28: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(log2(N/B)) O(N/B2)

Log O(N/B) O(1/B)

B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-tree

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue Goal to combine sub-constant insertion cost

logarithmic lookup cost

Page 29: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-trees

Page 30: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

Page 31: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

Design principle #1: optimize for insertions by buffering

Page 32: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Inserts

Design principle #1: optimize for insertions by buffering

Page 33: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

... ... …

sort & flush buffer

Inserts

Design principle #1: optimize for insertions by buffering

Page 34: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

... ... … … ... …

sort & flush buffer

Inserts

Design principle #1: optimize for insertions by buffering

Page 35: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

... ... … … ... …

sort & flush buffer

Inserts

Design principle #1: optimize for insertions by buffering

Design principle #2: optimize for lookups by sort-merging arrays

Page 36: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

... ... …

Sort-merge

… ... …

… ... ... … …

Inserts

sort & flush buffer

Design principle #1: optimize for insertions by buffering

Design principle #2: optimize for lookups by sort-merging arrays

Page 37: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

X1 ... …

Sort-merge & Eliminate duplicates

… X2 …

… ... ... … …

Inserts

sort & flush buffer

Design principle #1: optimize for insertions by buffering

Design principle #2: optimize for lookups by sort-merging arrays

Page 38: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

X1 ... …

Sort-merge & Eliminate duplicates

… X2 …

… X2 ... … …

Inserts

sort & flush buffer

Design principle #1: optimize for insertions by buffering

Design principle #2: optimize for lookups by sort-merging arrays

Page 39: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

X1 ... …

Sort-merge & Eliminate duplicates &Discard original arrays

… X2 …

Inserts

sort & flush buffer

Design principle #1: optimize for insertions by buffering

Design principle #2: optimize for lookups by sort-merging arrays

… X2 ... … …

Page 40: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

Page 41: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

4 6 9

inserts

Page 42: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

4 6 9

sort & flush buffer

inserts

Page 43: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

4 6 9

inserts

Page 44: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

3 4 8

4 6 9

inserts

Page 45: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

4 6 9

inserts

3 4 8

sort & flush buffer

Page 46: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

4 6 9

inserts

3 4 8

Page 47: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

4 6 9

inserts

3 4 8

3 4 6 8 9Sort-merge

Page 48: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

41 6 9

inserts

3 42 8

3 42 6 8 9Sort-merge & Eliminate duplicates

Page 49: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

4 6 9

inserts

3 4 8

3 4 6 8 9Sort-merge & Eliminate duplicates &Discard original arrays

Page 50: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

inserts

3 4 6 8 9

INSTITUTE FOR APPLIEDCOMPUTATIONAL SCIENCE

Page 51: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

2 7 8

inserts

3 4 6 8 9

Page 52: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

inserts

3 4 6 8 9

2 7 8

sort & flush buffer

Page 53: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Example

Level

0

1

2

3

Buffer

Sorted arrays

inserts

3 4 6 8 9

2 7 8

Page 54: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

2

4

8

... ... ... ... ... …

... ... ...

... ... ... ... ... … ... ... ... ... ... …

Levels have exponentially increasing capacities.

Page 55: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Lookup cost

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

2

4

8

... ... ... ... ... …

... ... ...

... ... ... ... ... … ... ... ... ... ... …

Lookup method? Search youngest to oldest. O log% &'

How? Binary search. O log% &'

Lookup cost? O log% &'

%

Search youngest to oldest. O log% &'

Binary search. O log% &'

O log% &'

%

Page 56: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Basic LSM-tree – Insertion cost

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

2

4

8

... ... ... ... ... …

... ... ...

... ... ... ... ... … ... ... ... ... ... …

O log%&'

O 1' ) log%

&'

O 1'

How many times is each entry copied?

What is the price of each copy?

Total insert cost?

Page 57: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(log2(N/B)) O(N/B)

Log O(N/B) O(1/B)

B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue

Page 58: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(log2(N/B)) O(N/B)

Log O(N/B) O(1/B)

B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue Better insert cost and worst lookup cost compared with B-trees

Page 59: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(log2(N/B)) O(N/B)

Log O(N/B) O(1/B)

B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue Better insert cost and worst lookup cost compared with B-treesCan we improve lookup cost?

Page 60: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Declining Main Memory Cost

Page 61: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Declining Main Memory Cost

Store a fence pointer for every block in main memory

Fence

pointers

array

1 10 15 …

Block 1 Block 2 Block 3 …1 10 15 …

3 11 16 …

6 13 18 …

Page 62: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(log2(N/B)) O(N/B)

Log O(N/B) O(1/B)

B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointers

Page 63: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(log2(N/B)) O(N/B)

Log O(N/B) O(1/B)

B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointers

Page 64: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(N/B)

Log O(N/B) O(1/B)

B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointers

Page 65: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(N/B)

Log O(N/B) O(1/B)

B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointers

Page 66: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(N/B)

Log O(N/B) O(1/B)

B-tree O(logB(N/B)) O(logB(N/B))

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointers

Page 67: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(N/B)

Log O(N/B) O(1/B)

B-tree O(1) O(1)

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointers

Page 68: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(N/B)

Log O(N/B) O(1/B)

B-tree O(1) O(1)

Basic LSM-tree O(log2(N/B)2) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointers

Page 69: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(N/B)

Log O(N/B) O(1/B)

B-tree O(1) O(1)

Basic LSM-tree O(log2(N/B)) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointers

Page 70: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(N/B)

Log O(N/B) O(1/B)

B-tree O(1) O(1)

Basic LSM-tree O(log2(N/B)) O(1/B ! log2(N/B))

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointersQuick sanity check: suppose N = 242

and B = 210

Page 71: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(232)

Log O(232) O(2-10)

B-tree O(1) O(1)

Basic LSM-tree O(5) O(2-10 ! 5)

Leveled LSM-tree

Tiered LSM-tree

Results Catalogue – with fence pointersQuick sanity check: suppose N = 242

and B = 210

Page 72: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Lookup cost Update cost

Page 73: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Lookup cost depends on number of levelsHow to reduce it?

Capacity

T0

T1

T2

T3

Increase size ratio T

Page 74: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted

arrays

… … …

Capacity

1

4

16

64

Lookup cost depends on number of levels

How to reduce it?

E.g. size ratio of 4

Increase size ratio T

Page 75: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted

arrays

… … …

Capacity

1

4

16

64

inserts

Lookup cost depends on number of levels

How to reduce it?

E.g. size ratio of 4

Increase size ratio T

Page 76: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted

arrays

… … …

Capacity

1

4

16

64

Lookup cost depends on number of levels

How to reduce it?

E.g. size ratio of 4

flush

… … …

inserts

Increase size ratio T

Page 77: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted

arrays

… … …

Capacity

1

4

16

64

Lookup cost depends on number of levels

How to reduce it?

E.g. size ratio of 4

flush & sort-merge

… … … … … …

inserts

Increase size ratio T

Page 78: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted

arrays

… … …

Capacity

1

4

16

64

Lookup cost depends on number of levels

How to reduce it?

E.g. size ratio of 4

flush & sort-merge

… … … … … … … … …

inserts

Increase size ratio T

Page 79: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted

arrays

… … …

Capacity

1

4

16

64

Lookup cost depends on number of levels

How to reduce it?

E.g. size ratio of 4

flush & sort-merge

… … … … … … … … … … … …

inserts

Increase size ratio T

Page 80: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted

arrays

… … …

Capacity

1

4

16

64

Lookup cost depends on number of levels

How to reduce it?

E.g. size ratio of 4

move… … … … … … … … … … … …

inserts

Increase size ratio T

Page 81: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted

arrays

… … …

Capacity

1

4

16

64

Lookup cost depends on number of levels

How to reduce it?

E.g. size ratio of 4

inserts

… … … … … … … … … … … …

Increase size ratio T

Page 82: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

4

16

64

… … … … … … … … … … … …

inserts

Lookup cost?

O log% &'

Insertion cost?

O %' ( log%

&'

Page 83: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Leveled LSM-tree Lookup cost?

O log% &'

What happens as we increase the size ratio T?

What happens when size ratio T is set to be N/B?

Lookup cost becomes: Insert cost becomes: O(1) O(N/B2)

The LSM-tree becomes a sorted array!

Insertion cost?

O %' ( log%

&'

Page 84: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Look

up c

ost

Insertion cost

Sorted array

Basic LSM-tree

Leveling

Page 85: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(N/B)

Log O(N/B) O(1/B)

B-tree O(1) O(1)

Basic LSM-tree O(log2(N/B)) O(1/B ! log2(N/B))

Leveled LSM-tree O(logT(N/B)) O(T/B ! logT(N/B))

Tiered LSM-tree

Results Catalogue – with fence pointers

Page 86: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Lookup cost Insertion cost

Page 87: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Level

0

1

2

3

Buffer

Sorted

arrays

… … …

Capacity

T0

T1

T2

T3

Reduce the number of levels by increasing the size ratio.

Do not merge within a level.

Page 88: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

4

16

64

Reduce the number of levels by increasing the size ratio.Do not merge within a level. E.g. size ratio of 4

Page 89: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

4

16

64

flush

… … …

inserts

Reduce the number of levels by increasing the size ratio.Do not merge within a level. E.g. size ratio of 4

Page 90: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

4

16

64

flush

… … …

inserts

… … …

Reduce the number of levels by increasing the size ratio.Do not merge within a level. E.g. size ratio of 4

Page 91: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

4

16

64

flush

inserts

… … … … … … … … …

Reduce the number of levels by increasing the size ratio.Do not merge within a level. E.g. size ratio of 4

Page 92: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

4

16

64

flush

inserts

… … … … … … … … … … … …

Reduce the number of levels by increasing the size ratio.Do not merge within a level. E.g. size ratio of 4

Page 93: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

4

16

64

inserts

… … … … … … … … … … … …

sort-merge… … … … … … … … … … … …

Reduce the number of levels by increasing the size ratio.Do not merge within a level. E.g. size ratio of 4

Page 94: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

4

16

64

inserts

… … … … … … … … … … … …

Reduce the number of levels by increasing the size ratio.Do not merge within a level. E.g. size ratio of 4

Page 95: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Tiered LSM-tree

Level

0

1

2

3

Buffer

Sorted arrays

… … …

Capacity

1

4

16

64

… … … … … … … … … … … …

inserts

Lookup cost?

O " # log' ()

Insertion cost?

O *) # log'

()

Page 96: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Insertion cost?

O "# $ log(

)#

Tiered LSM-tree Lookup cost?

O * $ log( )#

What happens as we increase the size ratio T?

What happens when size ratio T is set to be N/B?

Lookup cost becomes: Insert cost becomes: O(N/B) O(1/B)

The tiered LSM-tree becomes a log!

Page 97: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Look

up c

ost

Insertion cost

Sorted array

Basic LSM-tree

Leveling

Tiering

Log

Page 98: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Lookup cost Insertion cost

Sorted array O(1) O(N/B)

Log O(N/B) O(1/B)

B-tree O(1) O(1)

Basic LSM-tree O(log2(N/B)) O(1/B ! log2(N/B))

Leveled LSM-tree O(logT(N/B)) O(T/B ! logT(N/B))

Tiered LSM-tree O(T ! logT(N/B)) O(1/B ! logT(N/B))

Results Catalogue – with fence pointers

Page 99: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom filters

Page 100: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Declining Main Memory Cost

Page 101: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Page 102: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Lookup for X

Page 103: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Lookup for X

Page 104: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Lookup for X

Access on disk

Page 105: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Lookup for Y

Page 106: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Lookup for Y

Page 107: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Lookup for Y

Page 108: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Lookup for Z

Page 109: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Lookup for Z

Page 110: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom Filters

filters

array… … ... … … … … … X … … …

Answers set-membership queriesSmaller than array, and stored in main memoryPurpose: avoid accessing disk if entry is not in arraySubtlety: may return false positives.

Bloom filter

Lookup for Z

Access on disk

Page 111: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom FiltersThe more main memory, the fewer false positives cheaper lookups

Page 112: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Bloom FiltersLo

oku

p c

ost

Insertion cost

The more main memory, the fewer false positives cheaper lookups

Page 113: Class 14: Log-Structured-Merge Trees

CAS CS 460 [Fall 2019] - https://midas.bu.edu/classes/CS460/ - Manos Athanassoulis

Conclusions

Write-optimized

Highly tunable

Backbone of many modern systems

Trade-off between lookup and insert cost (tiering/leveling, size ratio)

Trade main memory for lookup cost (fence pointers, Bloom filters)

Thank you!