SlideShare ist ein Scribd-Unternehmen logo
1 von 92
Downloaden Sie, um offline zu lesen
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
Leif Walsh
Two Sigma Investments, LLC.
leif.walsh@gmail.com
@leifwalsh
April 16, 2015
Leif Walsh Fractal Trees April 16, 2015 1 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
Background
Leif Walsh Fractal Trees April 16, 2015 2 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
Data structures:
Leif Walsh Fractal Trees April 16, 2015 3 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
Data structures:
Leif Walsh Fractal Trees April 16, 2015 3 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
Data structures:
Provide retrieval of data.
Lookup(Key)
Pred(Key)
Succ(Key)
Leif Walsh Fractal Trees April 16, 2015 3 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
Data structures:
Provide retrieval of data.
Lookup(Key)
Pred(Key)
Succ(Key)
Dynamic data structures let you change
the data.
Insert(Key, Value)
Delete(Key)
Leif Walsh Fractal Trees April 16, 2015 3 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
DAM model
Problem size N.
Memory size M.
Leif Walsh Fractal Trees April 16, 2015 4 / 33
[Aggarwal & Vitter ’88]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
DAM model
Problem size N.
Memory size M.
Transfer data to/from memory in blocks
of size B.
Leif Walsh Fractal Trees April 16, 2015 4 / 33
[Aggarwal & Vitter ’88]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
DAM model
Problem size N.
Memory size M.
Transfer data to/from memory in blocks
of size B.
Efficiency of operations is measured as the
number of block transfers, a.k.a. IOPS.
Leif Walsh Fractal Trees April 16, 2015 4 / 33
[Aggarwal & Vitter ’88]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
A B-tree is an external memory data structure:
Leif Walsh Fractal Trees April 16, 2015 5 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
A B-tree is an external memory data structure:
Leif Walsh Fractal Trees April 16, 2015 5 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
A B-tree is an external memory data structure:
Balanced search tree.
Fanout of B
(block size / key size).
Leif Walsh Fractal Trees April 16, 2015 5 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
A B-tree is an external memory data structure:
Balanced search tree.
Fanout of B
(block size / key size).
Internal nodes < M.
Leaf nodes > M.
Leif Walsh Fractal Trees April 16, 2015 5 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
A B-tree is an external memory data structure:
Balanced search tree.
Fanout of B
(block size / key size).
Internal nodes < M.
Leaf nodes > M.
Search: O(logB N) I/Os
Insert: O(logB N) I/Os
Leif Walsh Fractal Trees April 16, 2015 5 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
Leif Walsh Fractal Trees April 16, 2015 6 / 33
[Brodal & Fagerberg ’03]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
Leif Walsh Fractal Trees April 16, 2015 7 / 33
[Brodal & Fagerberg ’03]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
OLAP
Leif Walsh Fractal Trees April 16, 2015 8 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
OLAP: Online Analytical Processing
Leif Walsh Fractal Trees April 16, 2015 9 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
OLAP: Online Analytical Processing
Key idea: Analyze data collected in the past.
Leif Walsh Fractal Trees April 16, 2015 9 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
OLAP: Online Analytical Processing
Key idea: Analyze data collected in the past.
B-tree inserts are slow, but…logging and sorting are fast.
Leif Walsh Fractal Trees April 16, 2015 9 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
OLAP: Online Analytical Processing
Key idea: Analyze data collected in the past.
B-tree inserts are slow, but…logging and sorting are fast.
Plan: Log new data unsorted, then build indexes in large batches.
Leif Walsh Fractal Trees April 16, 2015 9 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Merge sort:
Leif Walsh Fractal Trees April 16, 2015 10 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Merge sort in external memory:
Leif Walsh Fractal Trees April 16, 2015 11 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Merge sort in external memory:
Merge sort cost in DAM model is:
Cost to scan through all the data once.
Multiplied by the # of levels in the merge tree.
Leif Walsh Fractal Trees April 16, 2015 11 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Merge sort in external memory:
Merge sort cost in DAM model is:
Cost to scan through all the data once.
N/B
Multiplied by the # of levels in the merge tree.
Leif Walsh Fractal Trees April 16, 2015 11 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Merge sort in external memory:
Merge sort cost in DAM model is:
Cost to scan through all the data once.
N/B
Multiplied by the # of levels in the merge tree.
logM/B N/B
Leif Walsh Fractal Trees April 16, 2015 11 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Merge sort in external memory:
Merge sort cost in DAM model is:
Cost to scan through all the data once.
N/B
Multiplied by the # of levels in the merge tree.
logM/B N/B
O
(
N
B
logM/B
N
B
)
Leif Walsh Fractal Trees April 16, 2015 11 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Insert N elements into a B-tree:
O
(
N logB
N
M
)
Merge sort:
O
(
N
B
logM/B
N
B
)
Leif Walsh Fractal Trees April 16, 2015 12 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Insert N elements into a B-tree:
O
(
N logB
N
M
)
Merge sort:
O
(
N
B
logM/B
N
B
)
≈
2N
B
Typically, M/B is large, so only two passes are needed to sort.
Leif Walsh Fractal Trees April 16, 2015 12 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Insert N elements into a B-tree:
O
(
N logB
N
M
)
≥ N
Merge sort:
O
(
N
B
logM/B
N
B
)
≈
2N
B
Typically, M/B is large, so only two passes are needed to sort.
Intuition: Each insert into a B-tree costs ∼1 seek, while sorting is close to disk bandwidth.
Leif Walsh Fractal Trees April 16, 2015 12 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Insert N elements into a B-tree: (assuming 100-1000 byte elements)
O
(
N logB
N
M
)
≥ N ≈ 10 − 100kB/s = 100 elements/s
Merge sort:
O
(
N
B
logM/B
N
B
)
≈
2N
B
Typically, M/B is large, so only two passes are needed to sort.
Intuition: Each insert into a B-tree costs ∼1 seek, while sorting is close to disk bandwidth.
Leif Walsh Fractal Trees April 16, 2015 12 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
Insert N elements into a B-tree: (assuming 100-1000 byte elements)
O
(
N logB
N
M
)
≥ N ≈ 10 − 100kB/s = 100 elements/s
Merge sort:
O
(
N
B
logM/B
N
B
)
≈
2N
B
≈ 50MB/s = 50k − 500k elements/s
Typically, M/B is large, so only two passes are needed to sort.
Intuition: Each insert into a B-tree costs ∼1 seek, while sorting is close to disk bandwidth.
Leif Walsh Fractal Trees April 16, 2015 12 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
So, how does OLAP work?
Leif Walsh Fractal Trees April 16, 2015 13 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
So, how does OLAP work?
Log new data unindexed until you accumulate a lot of it (∼10% of the data set).
Leif Walsh Fractal Trees April 16, 2015 13 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
So, how does OLAP work?
Log new data unindexed until you accumulate a lot of it (∼10% of the data set).
Sort the new data.
Leif Walsh Fractal Trees April 16, 2015 13 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
So, how does OLAP work?
Log new data unindexed until you accumulate a lot of it (∼10% of the data set).
Sort the new data.
Use a merge pass through existing indexes to incorporate new data.
Leif Walsh Fractal Trees April 16, 2015 13 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
So, how does OLAP work?
Log new data unindexed until you accumulate a lot of it (∼10% of the data set).
Sort the new data.
Use a merge pass through existing indexes to incorporate new data.
Use indexes to do analytics.
Leif Walsh Fractal Trees April 16, 2015 13 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
So, how does OLAP work?
Log new data unindexed until you accumulate a lot of it (∼10% of the data set).
Sort the new data.
Use a merge pass through existing indexes to incorporate new data.
Use indexes to do analytics.
Moral: OLAP techniques can handle high insertion volume, but query results are delayed.
Leif Walsh Fractal Trees April 16, 2015 13 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #1: OLAP
So, how does OLAP work?
Log new data unindexed until you accumulate a lot of it (∼10% of the data set).
Sort the new data.
Use a merge pass through existing indexes to incorporate new data.
Use indexes to do analytics.
Moral: OLAP techniques can handle high insertion volume, but query results are delayed.
Leif Walsh Fractal Trees April 16, 2015 13 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
LSM-trees
Leif Walsh Fractal Trees April 16, 2015 14 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
The insight for LSM-trees starts by asking: how can we reduce the queryability delay in OLAP?
Leif Walsh Fractal Trees April 16, 2015 15 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
The insight for LSM-trees starts by asking: how can we reduce the queryability delay in OLAP?
The buffer is small, let’s index it!
Leif Walsh Fractal Trees April 16, 2015 15 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
The insight for LSM-trees starts by asking: how can we reduce the queryability delay in OLAP?
The buffer is small, let’s index it!
Inserts go into the “buffer B-tree”.
When the buffer gets full, we merge it with the “main B-tree”.
Queries have to touch both trees and merge results, but results are available immediately.
Leif Walsh Fractal Trees April 16, 2015 15 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
The insight for LSM-trees starts by asking: how can we reduce the queryability delay in OLAP?
The buffer is small, let’s index it!
Inserts go into the “buffer B-tree”.
When the buffer gets full, we merge it with the “main B-tree”.
Queries have to touch both trees and merge results, but results are available immediately.
(This specific technique (which is not yet an LSM-tree) is used in InnoDB and is called the “change buffer”.)
Leif Walsh Fractal Trees April 16, 2015 15 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
Why is this fast?
Leif Walsh Fractal Trees April 16, 2015 16 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
Why is this fast?
The buffer is in-memory, so inserts are fast.
When we merge, we put many new elements in each leaf in the main B-tree (this amortizes
the I/O cost to read the leaf).
Leif Walsh Fractal Trees April 16, 2015 16 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
Why is this fast?
The buffer is in-memory, so inserts are fast.
When we merge, we put many new elements in each leaf in the main B-tree (this amortizes
the I/O cost to read the leaf).
Eventually, we reach a problem:
Leif Walsh Fractal Trees April 16, 2015 16 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
Why is this fast?
The buffer is in-memory, so inserts are fast.
When we merge, we put many new elements in each leaf in the main B-tree (this amortizes
the I/O cost to read the leaf).
Eventually, we reach a problem:
If the buffer gets too big, inserts get slow.
If the buffer stays too small, the merge gets inefficient (back to O(N logB N)).
Leif Walsh Fractal Trees April 16, 2015 16 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How can we fix this?
Leif Walsh Fractal Trees April 16, 2015 17 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How can we fix this? More buffering!
Leif Walsh Fractal Trees April 16, 2015 17 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How can we fix this? More buffering!
Leif Walsh Fractal Trees April 16, 2015 17 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How can we fix this? More buffering!
Leif Walsh Fractal Trees April 16, 2015 17 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How can we fix this? More buffering!
Each level is twice as large as the previous level, for some value of 2.
Leif Walsh Fractal Trees April 16, 2015 17 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How can we fix this? More buffering!
Each level is twice as large as the previous level, for some value of 2. We’ll use 2.
Leif Walsh Fractal Trees April 16, 2015 17 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How do queries work?
Leif Walsh Fractal Trees April 16, 2015 18 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How do queries work?
Leif Walsh Fractal Trees April 16, 2015 18 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How do queries work?
Search cost is:
logB B + . . . + logB
N
8
+ logB
N
4
+ logB
N
2
+ logB N
Leif Walsh Fractal Trees April 16, 2015 18 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How do queries work?
Search cost is:
logB B + . . . + logB
N
8
+ logB
N
4
+ logB
N
2
+ logB N
=
1
log B
(1 + . . . + lg(N) − 3 + lg(N) − 2 + lg(N) − 1 + lg(N))
Leif Walsh Fractal Trees April 16, 2015 18 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How do queries work?
Search cost is:
logB B + . . . + logB
N
8
+ logB
N
4
+ logB
N
2
+ logB N
=
1
log B
(1 + . . . + lg(N) − 3 + lg(N) − 2 + lg(N) − 1 + lg(N))
Leif Walsh Fractal Trees April 16, 2015 18 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How do queries work?
Search cost is:
logB B + . . . + logB
N
8
+ logB
N
4
+ logB
N
2
+ logB N
=
1
log B
(1 + . . . + lg(N) − 3 + lg(N) − 2 + lg(N) − 1 + lg(N)) = O(log N · logB N)
Leif Walsh Fractal Trees April 16, 2015 18 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How much do inserts cost?
Leif Walsh Fractal Trees April 16, 2015 19 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How much do inserts cost?
Cost to flush a tree Tj of size X is O(X/B).
Leif Walsh Fractal Trees April 16, 2015 19 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How much do inserts cost?
Cost to flush a tree Tj of size X is O(X/B).
Cost per element to flush Tj is O(1/B).
Leif Walsh Fractal Trees April 16, 2015 19 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How much do inserts cost?
Cost to flush a tree Tj of size X is O(X/B).
Cost per element to flush Tj is O(1/B).
Each element moves ≤ log N times.
Leif Walsh Fractal Trees April 16, 2015 19 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #2: LSM-trees
How much do inserts cost?
Cost to flush a tree Tj of size X is O(X/B).
Cost per element to flush Tj is O(1/B).
Each element moves ≤ log N times.
Total amortized insert cost per element is O
(
log N
B
)
.
Leif Walsh Fractal Trees April 16, 2015 19 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization in external memory data structures
Fractal Trees
Leif Walsh Fractal Trees April 16, 2015 20 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
The pain in LSM-trees is doing a full O(logB N) search in each level.
Leif Walsh Fractal Trees April 16, 2015 21 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
The pain in LSM-trees is doing a full O(logB N) search in each level.
We use fractional cascading to reduce the search per level to O(1).
Leif Walsh Fractal Trees April 16, 2015 21 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
The pain in LSM-trees is doing a full O(logB N) search in each level.
We use fractional cascading to reduce the search per level to O(1).
The idea is that once we’ve searched Ti, we know where the key would be in Ti, and we can use
that information to guide our search of Ti+1.
Leif Walsh Fractal Trees April 16, 2015 21 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
The pain in LSM-trees is doing a full O(logB N) search in each level.
We use fractional cascading to reduce the search per level to O(1).
The idea is that once we’ve searched Ti, we know where the key would be in Ti, and we can use
that information to guide our search of Ti+1.
Let’s examine the leaves of two consecutive levels of the LSM-tree…
Leif Walsh Fractal Trees April 16, 2015 21 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Add forwarding pointers from leaves in Ti to leaves in Ti+1 (but remove the redundant ones that
point to the same leaf):
Leif Walsh Fractal Trees April 16, 2015 22 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Add forwarding pointers from leaves in Ti to leaves in Ti+1 (but remove the redundant ones that
point to the same leaf):
Now, from a leaf node in Ti, we can jump forward to some of the leaves in Ti+1 without
searching the whole tree at Ti+1.
Leif Walsh Fractal Trees April 16, 2015 22 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Add ghost pointers to leaves not pointed to in Ti+1 in leaves in Ti:
Leif Walsh Fractal Trees April 16, 2015 23 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Add ghost pointers to leaves not pointed to in Ti+1 in leaves in Ti:
Now every leaf in Ti+1 can be reached by a pointer in a leaf node in Ti.
Leif Walsh Fractal Trees April 16, 2015 23 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
After searching Ti for a missing element c, we look left and right for forwarding or ghost
pointers, and follow them down to look at O(1) leaves in Ti+1.
Leif Walsh Fractal Trees April 16, 2015 24 / 33
[Bender, Farach-Colton, Fineman, Fogel, Kuszmaul, & Nelson ’07]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
After searching Ti for a missing element c, we look left and right for forwarding or ghost
pointers, and follow them down to look at O(1) leaves in Ti+1.
This way, search is only O(logR N) (in our example, R = 2).
Leif Walsh Fractal Trees April 16, 2015 24 / 33
[Bender, Farach-Colton, Fineman, Fogel, Kuszmaul, & Nelson ’07]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
The internal node structure in each level is now redundant, so we can represent each level as an
array. We can forget about the B-tree structure above the leaves in each level!
This is called a Cache-Oblivious Lookahead Array.
Leif Walsh Fractal Trees April 16, 2015 25 / 33
[Bender, Farach-Colton, Fineman, Fogel, Kuszmaul, & Nelson ’07]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
The amortized analysis says our inserts are fast, but we flush a very large level to the next one,
we might see a big stall. Concurrent merge algorithms exist, but we can do better.
Leif Walsh Fractal Trees April 16, 2015 26 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
The amortized analysis says our inserts are fast, but we flush a very large level to the next one,
we might see a big stall. Concurrent merge algorithms exist, but we can do better.
We break each level’s array into chunks that can be flushed independently. Each chunk flushes
to a small region of a few chunks in the next level down, found using its forwarding pointers.
Leif Walsh Fractal Trees April 16, 2015 26 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
The amortized analysis says our inserts are fast, but we flush a very large level to the next one,
we might see a big stall. Concurrent merge algorithms exist, but we can do better.
We break each level’s array into chunks that can be flushed independently. Each chunk flushes
to a small region of a few chunks in the next level down, found using its forwarding pointers.
Now we have a tree again!
Leif Walsh Fractal Trees April 16, 2015 26 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Fractal Tree Advantages over COLA:
Leif Walsh Fractal Trees April 16, 2015 27 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Fractal Tree Advantages over COLA:
1 Easier to manage an LRU cache of blocks.
Leif Walsh Fractal Trees April 16, 2015 27 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Fractal Tree Advantages over COLA:
1 Easier to manage an LRU cache of blocks.
2 More flexible with “hotspots”, or non-uniform workload distributions.
Leif Walsh Fractal Trees April 16, 2015 27 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Fractal Tree Advantages over COLA:
1 Easier to manage an LRU cache of blocks.
2 More flexible with “hotspots”, or non-uniform workload distributions.
3 Flushes are O(1), so easier to reduce latency and increase concurrency with client work.
Leif Walsh Fractal Trees April 16, 2015 27 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Fractal Tree Advantages over COLA:
1 Easier to manage an LRU cache of blocks.
2 More flexible with “hotspots”, or non-uniform workload distributions.
3 Flushes are O(1), so easier to reduce latency and increase concurrency with client work.
4 Easier to implement a concurrent checkpoint algorithm with small flushes.
Leif Walsh Fractal Trees April 16, 2015 27 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Write-optimization technique #3: Fractal Trees
Fractal Tree Advantages over COLA:
1 Easier to manage an LRU cache of blocks.
2 More flexible with “hotspots”, or non-uniform workload distributions.
3 Flushes are O(1), so easier to reduce latency and increase concurrency with client work.
4 Easier to implement a concurrent checkpoint algorithm with small flushes.
5 Enables good tradeoffs for queries, and allows that computation to be cached without
inducing I/O (this is enough complexity for a whole other talk).
Leif Walsh Fractal Trees April 16, 2015 27 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Results
Modified B-tree-like dynamic (inserts, updates, deletes) data structure that supports point
and range queries.
Inserts are a factor B/ log B (typically 10-100x in practice) faster than a B-tree:
O
(
log N
B
)
< O
(
log N
log B
)
.
Searches are a factor log B/ log R slower than a B-tree: O
(
log N
log R
)
> O
(
log N
log B
)
.
To amortize flush costs over many elements, we want each block we write to be large
(∼4MB), much larger than typical B-tree blocks (∼16KB). These compress well.
Leif Walsh Fractal Trees April 16, 2015 28 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Applications
TokuDB for MySQL, TokuMX for MongoDB:
Faster indexed insertions.
Hot schema changes.
Compression.
Read-free replication on secondaries.
Fast (no read before write) updates with messages in buffers.
ACID transactions.
Mixed workload concurrency.
Faster sharding migrations (TokuMX).
Leif Walsh Fractal Trees April 16, 2015 29 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Benchmarks
Leif Walsh Fractal Trees April 16, 2015 30 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Benchmarks
Leif Walsh Fractal Trees April 16, 2015 31 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Benchmarks
Leif Walsh Fractal Trees April 16, 2015 32 / 33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Questions?
Leif Walsh
@leifwalsh
Downloads: www.tokutek.com/downloads
Docs: docs.tokutek.com
Slides: bit.ly/1au1uvr
Leif Walsh Fractal Trees April 16, 2015 33 / 33

Weitere ähnliche Inhalte

Andere mochten auch

Write optimization in external memory data structures
Write optimization in external memory data structuresWrite optimization in external memory data structures
Write optimization in external memory data structuresleifwalsh
 
Some empirical evaluations of a temperature forecasting module based on Art...
Some empirical evaluations of a temperature forecasting module   based on Art...Some empirical evaluations of a temperature forecasting module   based on Art...
Some empirical evaluations of a temperature forecasting module based on Art...Francisco Zamora-Martinez
 
Write-optimization in external memory data structures (Highload++ 2014)
Write-optimization in external memory data structures (Highload++ 2014)Write-optimization in external memory data structures (Highload++ 2014)
Write-optimization in external memory data structures (Highload++ 2014)leifwalsh
 
Algorithms : Introduction and Analysis
Algorithms : Introduction and AnalysisAlgorithms : Introduction and Analysis
Algorithms : Introduction and AnalysisDhrumil Patel
 
A New MongoDB Sharding Architecture for Higher Availability and Better Resour...
A New MongoDB Sharding Architecture for Higher Availability and Better Resour...A New MongoDB Sharding Architecture for Higher Availability and Better Resour...
A New MongoDB Sharding Architecture for Higher Availability and Better Resour...leifwalsh
 
Buffer Trees - Utility and Applications for External Memory Data Processing
Buffer Trees - Utility and Applications for External Memory Data ProcessingBuffer Trees - Utility and Applications for External Memory Data Processing
Buffer Trees - Utility and Applications for External Memory Data ProcessingMilind Gokhale
 
Integration of Unsupervised and Supervised Criteria for DNNs Training
Integration of Unsupervised and Supervised Criteria for DNNs TrainingIntegration of Unsupervised and Supervised Criteria for DNNs Training
Integration of Unsupervised and Supervised Criteria for DNNs TrainingFrancisco Zamora-Martinez
 
The Language of Compression
The Language of CompressionThe Language of Compression
The Language of Compressionleifwalsh
 
Mejora del reconocimiento de palabras manuscritas aisladas mediante un clasif...
Mejora del reconocimiento de palabras manuscritas aisladas mediante un clasif...Mejora del reconocimiento de palabras manuscritas aisladas mediante un clasif...
Mejora del reconocimiento de palabras manuscritas aisladas mediante un clasif...Francisco Zamora-Martinez
 
Fast evaluation of Connectionist Language Models
Fast evaluation of Connectionist Language ModelsFast evaluation of Connectionist Language Models
Fast evaluation of Connectionist Language ModelsFrancisco Zamora-Martinez
 
Introducing TokuMX: The Performance Engine for MongoDB (NYC.rb 2013-12-10)
Introducing TokuMX: The Performance Engine for MongoDB (NYC.rb 2013-12-10)Introducing TokuMX: The Performance Engine for MongoDB (NYC.rb 2013-12-10)
Introducing TokuMX: The Performance Engine for MongoDB (NYC.rb 2013-12-10)leifwalsh
 
ESAI-CEU-UCH solution for American Epilepsy Society Seizure Prediction Challenge
ESAI-CEU-UCH solution for American Epilepsy Society Seizure Prediction ChallengeESAI-CEU-UCH solution for American Epilepsy Society Seizure Prediction Challenge
ESAI-CEU-UCH solution for American Epilepsy Society Seizure Prediction ChallengeFrancisco Zamora-Martinez
 
Visualization of large FEM meshes
Visualization of large FEM meshesVisualization of large FEM meshes
Visualization of large FEM meshesTomáš Hnilica
 

Andere mochten auch (14)

Write optimization in external memory data structures
Write optimization in external memory data structuresWrite optimization in external memory data structures
Write optimization in external memory data structures
 
Some empirical evaluations of a temperature forecasting module based on Art...
Some empirical evaluations of a temperature forecasting module   based on Art...Some empirical evaluations of a temperature forecasting module   based on Art...
Some empirical evaluations of a temperature forecasting module based on Art...
 
Write-optimization in external memory data structures (Highload++ 2014)
Write-optimization in external memory data structures (Highload++ 2014)Write-optimization in external memory data structures (Highload++ 2014)
Write-optimization in external memory data structures (Highload++ 2014)
 
Algorithms : Introduction and Analysis
Algorithms : Introduction and AnalysisAlgorithms : Introduction and Analysis
Algorithms : Introduction and Analysis
 
A New MongoDB Sharding Architecture for Higher Availability and Better Resour...
A New MongoDB Sharding Architecture for Higher Availability and Better Resour...A New MongoDB Sharding Architecture for Higher Availability and Better Resour...
A New MongoDB Sharding Architecture for Higher Availability and Better Resour...
 
Buffer Trees - Utility and Applications for External Memory Data Processing
Buffer Trees - Utility and Applications for External Memory Data ProcessingBuffer Trees - Utility and Applications for External Memory Data Processing
Buffer Trees - Utility and Applications for External Memory Data Processing
 
Integration of Unsupervised and Supervised Criteria for DNNs Training
Integration of Unsupervised and Supervised Criteria for DNNs TrainingIntegration of Unsupervised and Supervised Criteria for DNNs Training
Integration of Unsupervised and Supervised Criteria for DNNs Training
 
PhD defence
PhD defencePhD defence
PhD defence
 
The Language of Compression
The Language of CompressionThe Language of Compression
The Language of Compression
 
Mejora del reconocimiento de palabras manuscritas aisladas mediante un clasif...
Mejora del reconocimiento de palabras manuscritas aisladas mediante un clasif...Mejora del reconocimiento de palabras manuscritas aisladas mediante un clasif...
Mejora del reconocimiento de palabras manuscritas aisladas mediante un clasif...
 
Fast evaluation of Connectionist Language Models
Fast evaluation of Connectionist Language ModelsFast evaluation of Connectionist Language Models
Fast evaluation of Connectionist Language Models
 
Introducing TokuMX: The Performance Engine for MongoDB (NYC.rb 2013-12-10)
Introducing TokuMX: The Performance Engine for MongoDB (NYC.rb 2013-12-10)Introducing TokuMX: The Performance Engine for MongoDB (NYC.rb 2013-12-10)
Introducing TokuMX: The Performance Engine for MongoDB (NYC.rb 2013-12-10)
 
ESAI-CEU-UCH solution for American Epilepsy Society Seizure Prediction Challenge
ESAI-CEU-UCH solution for American Epilepsy Society Seizure Prediction ChallengeESAI-CEU-UCH solution for American Epilepsy Society Seizure Prediction Challenge
ESAI-CEU-UCH solution for American Epilepsy Society Seizure Prediction Challenge
 
Visualization of large FEM meshes
Visualization of large FEM meshesVisualization of large FEM meshes
Visualization of large FEM meshes
 

Kürzlich hochgeladen

Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기Chiwon Song
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLAlluxio, Inc.
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfBrain Inventory
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024Mind IT Systems
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxPrakarsh -
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Projectwajrcs
 

Kürzlich hochgeladen (20)

Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
Program with GUTs
Program with GUTsProgram with GUTs
Program with GUTs
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdf
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptx
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
 

Write optimization in external memory data structures