237
HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING ALEX D. BRESLOW, DONG PING ZHANG, JOSEPH L. GREATHOUSE, NUWAN JAYASENA, AND DEAN M. TULLSEN 6/23/2016

HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

  • Upload
    others

  • View
    25

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING

ALEX D. BRESLOW, DONG PING ZHANG, JOSEPH L. GREATHOUSE, NUWAN JAYASENA, AND DEAN M. TULLSEN

6/23/2016

Page 2: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 20162

THE ROLE OF HASH TABLESIN IN-MEMORY DATA-INTENSIVE COMPUTING

Page 3: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 20163

THE ROLE OF HASH TABLES

Data stores and caches

‒ Key-value stores (e.g., Memcached, Redis, and MongoDB)

‒ Relational databases (e.g., MonetDB, HyPer, IBM DB2 with BLU)

IN IN-MEMORY DATA-INTENSIVE COMPUTING

Page 4: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 20164

THE ROLE OF HASH TABLES

Data stores and caches

‒ Key-value stores (e.g., Memcached, Redis, and MongoDB)

‒ Relational databases (e.g., MonetDB, HyPer, IBM DB2 with BLU)

Graphics

‒ Accelerate computations by computing on hash tables that store sparse images, textures, or surfaces

IN IN-MEMORY DATA-INTENSIVE COMPUTING

Page 5: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 20165

THE ROLE OF HASH TABLES

Data stores and caches

‒ Key-value stores (e.g., Memcached, Redis, and MongoDB)

‒ Relational databases (e.g., MonetDB, HyPer, IBM DB2 with BLU)

Graphics

‒ Accelerate computations by computing on hash tables that store sparse images, textures, or surfaces

General data compression schemes used in common compression utilities

IN IN-MEMORY DATA-INTENSIVE COMPUTING

Page 6: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 20166

THE ROLE OF HASH TABLES

Data stores and caches

‒ Key-value stores (e.g., Memcached, Redis, and MongoDB)

‒ Relational databases (e.g., MonetDB, HyPer, IBM DB2 with BLU)

Graphics

‒ Accelerate computations by computing on hash tables that store sparse images, textures, or surfaces

General data compression schemes used in common compression utilities

In each of these fields, having a fast hash table is important.

IN IN-MEMORY DATA-INTENSIVE COMPUTING

Page 7: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 20167

FOCUS OF THIS TALKOPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

Page 8: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 20168

FOCUS OF THIS TALKOPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

COMPUTE ELEMENTS

Page 9: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 20169

FOCUS OF THIS TALKOPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

PRIVATE CACHES

COMPUTE ELEMENTS

Page 10: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201610

FOCUS OF THIS TALKOPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Page 11: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201611

FOCUS OF THIS TALKOPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

MAIN

MEMORY

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Page 12: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201612

FOCUS OF THIS TALK

Hash tables have poor temporal and spatial locality.

OPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

MAIN

MEMORY

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Page 13: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201613

FOCUS OF THIS TALK

Hash tables have poor temporal and spatial locality.

In-memory hash tables often have hot working sets that are bigger than LLCs.

OPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

MAIN

MEMORY

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Page 14: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201614

FOCUS OF THIS TALK

Hash tables have poor temporal and spatial locality.

In-memory hash tables often have hot working sets that are bigger than LLCs.

OPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

MAIN

MEMORY

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Page 15: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201615

FOCUS OF THIS TALK

Hash tables have poor temporal and spatial locality.

In-memory hash tables often have hot working sets that are bigger than LLCs.

OPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

MAIN

MEMORY

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Page 16: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201616

FOCUS OF THIS TALK

Hash tables have poor temporal and spatial locality.

In-memory hash tables often have hot working sets that are bigger than LLCs.

OPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

MAIN

MEMORY

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Page 17: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201617

FOCUS OF THIS TALK

Hash tables have poor temporal and spatial locality.

In-memory hash tables often have hot working sets that are bigger than LLCs.

OPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

MAIN

MEMORY

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Page 18: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201618

FOCUS OF THIS TALK

Hash tables have poor temporal and spatial locality.

In-memory hash tables often have hot working sets that are bigger than LLCs.

OPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

MAIN

MEMORY

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Comparatively low bandwidth and high latency per memory transaction leads to

memory-boundedness.

Page 19: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201619

FOCUS OF THIS TALK

Hash tables have poor temporal and spatial locality.

In-memory hash tables often have hot working sets that are bigger than LLCs.

OPTIMIZING MEMORY ACCESSES IN FAST IN-MEMORY HASH TABLES

MAIN

MEMORY

SHARED

LLCs

PRIVATE CACHES

COMPUTE ELEMENTS

Comparatively low bandwidth and high latency per memory transaction leads to

memory-boundedness.

We need to aggressively

optimize hash tables to be

cognizant of this limitation.

Page 20: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201620

BUCKETIZED CUCKOO HASH TABLES

Page 21: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201621

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

Page 22: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201622

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

Page 23: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201623

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

H1

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

Page 24: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201624

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

H1

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

Load balancingInsert KV1 into the least full candidate bucket

Page 25: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201625

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

Load balancingInsert KV1 into the least full candidate bucket

Page 26: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201626

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

KV1

Load balancingInsert KV1 into the least full candidate bucket

Page 27: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201627

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

Load balancingInsert KV1 into the least full candidate bucket

Page 28: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201628

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

H1

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

Load balancingInsert KV1 into the least full candidate bucket

Page 29: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201629

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

H1

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

Page 30: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201630

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

H1

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

First-fitEvaluate the hash functions in numerical order and insert KV1 into the firstcandidate bucket with a free slot

Page 31: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201631

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H1

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

First-fitEvaluate the hash functions in numerical order and insert KV1 into the firstcandidate bucket with a free slot

Page 32: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201632

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H1

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0 KV1

First-fitEvaluate the hash functions in numerical order and insert KV1 into the firstcandidate bucket with a free slot

Page 33: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201633

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

3

4

5

6

2

1

0 KV1

Page 34: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201634

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H2

H1

3

4

5

6

2

1

0 KV1

Page 35: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201635

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H2

H1

3

4

5

6

2

1

0

Discover cuckoo chain with breadth-first search

KV1

Page 36: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201636

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H2

H1

3

4

5

6

2

1

0

Discover cuckoo chain with breadth-first search

KV1

Page 37: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201637

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H2

H1

3

4

5

6

2

1

0

Discover cuckoo chain with breadth-first search

KV1

Page 38: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201638

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H2

H1

3

4

5

6

2

1

0

Discover cuckoo chain with breadth-first search

KV1

Page 39: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201639

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H1

3

4

5

6

2

1

0

Discover cuckoo chain with breadth-first search

KV1

Page 40: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201640

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H1

3

4

5

6

2

1

0

Discover cuckoo chain with breadth-first searchRemap in sequence with alternate hash function

KV1

Page 41: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201641

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H1

3

4

5

6

2

1

0

e

Discover cuckoo chain with breadth-first searchRemap in sequence with alternate hash function

KV1

Page 42: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201642

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H1

3

4

5

6

2

1

0

e

m

Discover cuckoo chain with breadth-first searchRemap in sequence with alternate hash function

KV1

Page 43: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201643

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H1

3

4

5

6

2

1

0

e

m

u

Discover cuckoo chain with breadth-first searchRemap in sequence with alternate hash function

KV1

Page 44: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201644

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H1

3

4

5

6

2

1

0

e

m

u

KV2

Discover cuckoo chain with breadth-first searchRemap in sequence with alternate hash function

KV1

Page 45: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201645

BUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

INSERT KV2

H1

3

4

5

6

2

1

0

e

m

u

KV2

Discover cuckoo chain with breadth-first searchRemap in sequence with alternate hash function

KV1

Each bucket is typically sized to one hardware cache line or less.

Overwhelmingly, accesses to the bucket’s cache line hit in the hardware caches during accesses to consecutive cells.

Page 46: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201646

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

H1

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0

KV1

LOOKUPS AND LOAD BALANCING HEURISTICBUCKETIZED CUCKOO HASH TABLES

Expected Positive Lookup Cost Per Item in Buckets: (Fraction of Items Hashed by H1) + 2 * (Fraction of Items Hashed by H2)

Expected Negative Lookup Cost per Item in Buckets: 2 (also worst-case)

Expected Positive Lookup Cost Per Item in Buckets: 1.5 = (0.5 Hashed by H1) + 2 * (0.5 Hashed by H2)

Expected Negative Lookup Cost per Item in Buckets: 2 (also worst-case)

Load balancingInsert KV1 into the least full candidate bucket

Page 47: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201647

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

H2

H1

INSERT KV1

KEY VALUE

3

4

5

6

2

1

0 KV1

LOOKUPS AND FIRST-FIT INSERTION HEURISTICBUCKETIZED CUCKOO HASH TABLES

First-fitInsert KV1 into the firstcandidate with a free slot

Expected Positive Lookup Cost Per Item in Buckets: 1 to 1.3ish depending on the table load factor and the slots per bucket

Expected Negative Lookup Cost per Item in Buckets: 2 (also worst-case)

Page 48: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201648

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1

Page 49: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201649

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1

LOOKUP KV1

Page 50: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201650

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

Page 51: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201651

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?

Page 52: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201652

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?

Page 53: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201653

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?b

Page 54: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201654

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?b

Page 55: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201655

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?bc

Page 56: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201656

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?bc

Page 57: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201657

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H23

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?bcKV1

Page 58: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201658

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

LOOKUP KV2

H2

H1

3

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?bcKV1

Page 59: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201659

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

LOOKUP KV2

H2

H1

3

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?bcKV1

Positive Lookups:

‒ First-fit gets us most of the way to 1.0 on positive lookups because most elements are hashed with H1

Page 60: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201660

BENEFITS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

LOOKUP KV2

H2

H1

3

4

5

6

2

1

0

e

m

u

KV2

KV1 H1

LOOKUP KV1

a.key == KV1.key?bcKV1

Positive Lookups:

‒ First-fit gets us most of the way to 1.0 on positive lookups because most elements are hashed with H1

But…

Page 61: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201661

LIMITATIONS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H2

3

4

5

6

2

1

0

e

m

u

KV2

KV1

Page 62: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201662

LIMITATIONS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H2

3

4

5

6

2

1

0

e

m

u

KV2

KV1

Expected Negative Lookup Cost per Item in Buckets:

‒ First-fit doesn’t address the comparatively expensive negative lookup cost. We still need to check all candidate buckets.

Page 63: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201663

LIMITATIONS OF FIRST-FITBUCKETIZED CUCKOO HASH TABLES

a b c EMPTY

d e f g

h EMPTY EMPTY EMPTY

i j k l

m n o p

q r s EMPTY

t u v w

KEY VALUE

H2

3

4

5

6

2

1

0

e

m

u

KV2

KV1

H1

H2

LOOKUP KV3

Expected Negative Lookup Cost per Item in Buckets:

‒ First-fit doesn’t address the comparatively expensive negative lookup cost. We still need to check all candidate buckets.

Page 64: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201664

HORTON TABLESDESIGN GOALS

Page 65: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201665

HORTON TABLES

Positive lookups that typically require accessing only 1 bucket per query

‒ If buckets are at most a cache line in size, then only 1 cache line is accessed as well.

DESIGN GOALS

Page 66: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201666

HORTON TABLES

Positive lookups that typically require accessing only 1 bucket per query

‒ If buckets are at most a cache line in size, then only 1 cache line is accessed as well.

Negative lookups that typically require accessing only 1 bucket per query

‒ If buckets are at most a cache line in size, then only 1 cache line is accessed as well.

DESIGN GOALS

Page 67: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201667

HORTON TABLES

Positive lookups that typically require accessing only 1 bucket per query

‒ If buckets are at most a cache line in size, then only 1 cache line is accessed as well.

Negative lookups that typically require accessing only 1 bucket per query

‒ If buckets are at most a cache line in size, then only 1 cache line is accessed as well.

Retain a worst-case lookup cost of 2 buckets (i.e., often 2 hardware cache lines)

DESIGN GOALS

Page 68: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201668

HORTON TABLES

Positive lookups that typically require accessing only 1 bucket per query

‒ If buckets are at most a cache line in size, then only 1 cache line is accessed as well.

Negative lookups that typically require accessing only 1 bucket per query

‒ If buckets are at most a cache line in size, then only 1 cache line is accessed as well.

Retain a worst-case lookup cost of 2 buckets (i.e., often 2 hardware cache lines)

Achieve a load factor exceeding 0.95 (akin to a bucketized cuckoo hash table that uses 2 hash functions and 4-cell buckets)

DESIGN GOALS

Page 69: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201669

HORTON TABLESPRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

3

4

5

2

1

0

Page 70: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201670

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

3

4

5

2

1

0

Page 71: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201671

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

3

4

5

2

1

0

Page 72: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201672

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

Most positive lookups therefore only require accessing a single cache line

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

3

4

5

2

1

0

Page 73: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201673

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

Most positive lookups therefore only require accessing a single cache line

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

INSERT 13Hprimary

3

4

5

2

1

0

Page 74: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201674

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

Most positive lookups therefore only require accessing a single cache line

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13 INSERT 13Hprimary

3

4

5

2

1

0

Page 75: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201675

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

Most positive lookups therefore only require accessing a single cache line

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

3

4

5

2

1

0

Page 76: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201676

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

Most positive lookups therefore only require accessing a single cache line

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

INSERT 16Hprimary

13

3

4

5

2

1

0

Page 77: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201677

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

Most positive lookups therefore only require accessing a single cache line

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

INSERT 16Hprimary16

13

3

4

5

2

1

0

Page 78: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201678

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

Most positive lookups therefore only require accessing a single cache line

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

16

13

3

4

5

2

1

0

Page 79: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201679

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

Most positive lookups therefore only require accessing a single cache line

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

16

13 Hprimary LOOKUP 13

3

4

5

2

1

0

Page 80: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201680

HORTON TABLES

Horton tables start off as standard bucketized cuckoo hash tables

Like first-fit, they strongly bias inserts by using a primary hash function called Hprimary

Most positive lookups therefore only require accessing a single cache line

PRIMARY INSERTIONS AND LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 EMPTY

EMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

Hprimary16

13 Hprimary LOOKUP 13

LOOKUP 16

3

4

5

2

1

0

Page 81: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201681

HORTON TABLESINSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

16

13

3

4

5

2

1

0

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

Page 82: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201682

HORTON TABLESINSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

INSERT 23Hprimary16

13

3

4

5

2

1

0

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

Page 83: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201683

HORTON TABLESINSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

INSERT 23Hprimary16

13

Evict 163

4

5

2

1

0

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

Page 84: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201684

HORTON TABLESINSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

INSERT 23Hprimary

13

Evict 163

4

5

2

1

0

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

Page 85: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201685

HORTON TABLESINSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

INSERT 23Hprimary

13

Evict 16

16

3

4

5

2

1

0

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

Page 86: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201686

HORTON TABLESINSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

INSERT 23Hprimary

13

16

3

4

5

2

1

0

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

Page 87: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201687

HORTON TABLESINSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

INSERT 23

13

16

3

4

5

2

1

0

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

Page 88: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201688

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

3

4

5

2

1

0

Page 89: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201689

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

0 20

3

4

5

2

1

0

Page 90: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201690

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13 R1 INSERT 23

16

0 20

3

4

5

2

1

0

Page 91: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201691

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13 R1 INSERT 23

16R2

0 20

3

4

5

2

1

0

Page 92: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201692

INSERT 23

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13 R1 INSERT 23

16R3

R2

0 20

3

4

5

2

1

0

Page 93: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201693

INSERT 23

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13 R1 INSERT 23

16R3

R2

0 20

Use R2 for inserting 23 because it maps 23 to least full secondary bucket candidate.

3

4

5

2

1

0

Page 94: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201694

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16R2

0 20

Use R2 for inserting 23 because it maps 23 to least full secondary bucket candidate.

3

4

5

2

1

0

Page 95: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201695

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16R223

0 20

Use R2 for inserting 23 because it maps 23 to least full secondary bucket candidate.

3

4

5

2

1

0

Page 96: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201696

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16R223

0 20

Use R2 for inserting 23 because it maps 23 to least full secondary bucket candidate.

3

4

5

2

1

0

Compute index into remap entry array using Htag with key as input

Page 97: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201697

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16R223

Htag(23) = 17 0 20

Use R2 for inserting 23 because it maps 23 to least full secondary bucket candidate.

3

4

5

2

1

0

Compute index into remap entry array using Htag with key as input

Page 98: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201698

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16R223

Htag(23) = 17 0 20

Use R2 for inserting 23 because it maps 23 to least full secondary bucket candidate.

3

4

5

2

1

0

Compute index into remap entry array using Htag with key as inputStore 2 at index Htag(23)=17 to indicate that R2 was used to remap 23

Page 99: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 201699

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16R223

Htag(23) = 17 0 20

Use R2 for inserting 23 because it maps 23 to least full secondary bucket candidate.

3

4

5

2

1

0

Compute index into remap entry array using Htag with key as inputStore 2 at index Htag(23)=17 to indicate that R2 was used to remap 23

Page 100: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016100

INSERT 23

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16R223

Htag(23) = 17 0 20

Use R2 for inserting 23 because it maps 23 to least full secondary bucket candidate.

3

4

5

2

1

0

2

Compute index into remap entry array using Htag with key as inputStore 2 at index Htag(23)=17 to indicate that R2 was used to remap 23

Page 101: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016101

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

1623

0 20

3

4

5

2

1

0

2

Page 102: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016102

16 now also needs to be remapped to a

secondary bucket.

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

1623

0 20

3

4

5

2

1

0

2

Page 103: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016103

16 now also needs to be remapped to a

secondary bucket.

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

1623

0 20

3

4

5

2

1

0

2

Page 104: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016104

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16R123

0 20

3

4

5

2

1

0

2

Page 105: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016105

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

R216

R123

0 20

3

4

5

2

1

0

2

Page 106: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016106

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

INSERT 16

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

R216

R3

R123

0 20

3

4

5

2

1

0

2

Page 107: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016107

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

INSERT 16

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

R216

R3

R123

0 20

Use R3 for inserting 16 because it maps 16 to least full secondary bucket candidate.

3

4

5

2

1

0

2

Page 108: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016108

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

R3

23

0 20

Use R3 for inserting 16 because it maps 16 to least full secondary bucket candidate.

3

4

5

2

1

0

2

Page 109: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016109

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

R3

23

0 20

Use R3 for inserting 16 because it maps 16 to least full secondary bucket candidate.

3

4

5

2

1

0

2

16

Page 110: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016110

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

R3

23

0 20

Use R3 for inserting 16 because it maps 16 to least full secondary bucket candidate.

3

4

5

2

1

0

2

Compute index into remap entry array using Htag with key as input

16

Page 111: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016111

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

R3

23

Htag(16) = 1 0 20

Use R3 for inserting 16 because it maps 16 to least full secondary bucket candidate.

3

4

5

2

1

0

2

Compute index into remap entry array using Htag with key as input

16

Page 112: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016112

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

R3

23

Htag(16) = 1 0 20

Use R3 for inserting 16 because it maps 16 to least full secondary bucket candidate.

3

4

5

2

1

0

2

Compute index into remap entry array using Htag with key as input

16

Page 113: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016113

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

R3

23

Htag(16) = 1 0 20

Use R3 for inserting 16 because it maps 16 to least full secondary bucket candidate.

3

4

5

2

1

0

2

Compute index into remap entry array using Htag with key as inputStore 3 at index Htag(16)=1 to indicate that R3 was used to remap 16

16

Page 114: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016114

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

R3

23

Htag(16) = 1 0 20

Use R3 for inserting 16 because it maps 16 to least full secondary bucket candidate.

3

4

5

2

1

0

2

Compute index into remap entry array using Htag with key as inputStore 3 at index Htag(16)=1 to indicate that R3 was used to remap 16

16

Page 115: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016115

16 now also needs to be remapped to a

secondary bucket.

INSERT 16

HORTON TABLES

For buckets that overflow, we remap surplus elements using one of many secondary hash functions and register its numerical identifier (e.g., R1, R2, and R3) as an element in a remap entry array (REA), a sparse, in-bucket array that tracks remapped elements.

INSERTS THAT TRIGGER CREATION OF REMAP ENTRY ARRAY

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

16

R3

23

Htag(16) = 1 0 20

Use R3 for inserting 16 because it maps 16 to least full secondary bucket candidate.

3

4

5

2

1

0

2

Compute index into remap entry array using Htag with key as inputStore 3 at index Htag(16)=1 to indicate that R3 was used to remap 16

16

3

Page 116: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016116

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Page 117: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016117

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Compute primary hash function and examine primary bucket (bucket 2)

Page 118: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016118

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

LOOKUP 16Hprimary

Compute primary hash function and examine primary bucket (bucket 2)

Page 119: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016119

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

LOOKUP 16Hprimary

Compute primary hash function and examine primary bucket (bucket 2)Determine 16 is not stored in its primary bucket and proceed to examine REA

Page 120: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016120

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

0 20

3

4

5

2

1

0

2

16

3

Determine 16 is not stored in its primary bucket and proceed to examine REA

Page 121: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016121

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

0 20

3

4

5

2

1

0

2

16

3

Determine 16 is not stored in its primary bucket and proceed to examine REA

Compute index into remap entry array using Htag with key as input

Page 122: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016122

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(16) = 1 0 20

3

4

5

2

1

0

2

16

3

Determine 16 is not stored in its primary bucket and proceed to examine REA

Compute index into remap entry array using Htag with key as input

Page 123: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016123

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(16) = 1 0 20

3

4

5

2

1

0

2

16

3

Determine 16 is not stored in its primary bucket and proceed to examine REA

Compute index into remap entry array using Htag with key as input

Page 124: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016124

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(16) = 1 0 20

3

4

5

2

1

0

2

16

3

Determine 16 is not stored in its primary bucket and proceed to examine REA

Compute index into remap entry array using Htag with key as inputThe remap entry shows R3 was used to remap 16, so compute R3(16).

Page 125: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016125

LOOKUP 16

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

R3

23

Htag(16) = 1 0 20

3

4

5

2

1

0

2

16

3

Determine 16 is not stored in its primary bucket and proceed to examine REA

Compute index into remap entry array using Htag with key as inputThe remap entry shows R3 was used to remap 16, so compute R3(16).

Page 126: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016126

LOOKUP 16

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

R3

23

Htag(16) = 1 0 20

3

4

5

2

1

0

2

16

3

Determine 16 is not stored in its primary bucket and proceed to examine REA

Compute index into remap entry array using Htag with key as inputThe remap entry shows R3 was used to remap 16, so compute R3(16).

Retrieve 16 from bucket 3

Page 127: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016127

LOOKUP 16

HORTON TABLES

Remapped items can always be retrieved by accessing 2 buckets, even when many secondary hash functions are used

E.g., when retrieving 16, we only access buckets 2 (primary bucket) and 3 (secondary bucket). We skip buckets 4 and 5 even though they were previously candidates.

RETRIEVING REMAPPED ITEMS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

R3

23

Htag(16) = 1 0 20

3

4

5

2

1

0

2

16

3

Determine 16 is not stored in its primary bucket and proceed to examine REA

Compute index into remap entry array using Htag with key as inputThe remap entry shows R3 was used to remap 16, so compute R3(16).

Retrieve 16 from bucket 3

Page 128: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016128

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Page 129: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016129

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Most negative lookups only require accessing a single bucket

Page 130: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016130

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16 LOOKUP 25

Most negative lookups only require accessing a single bucket

Page 131: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016131

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16 LOOKUP 25Hprimary

Most negative lookups only require accessing a single bucket

Page 132: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016132

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16 LOOKUP 25Hprimary

Most negative lookups only require accessing a single bucket

Page 133: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016133

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16 LOOKUP 25Hprimary

Most negative lookups only require accessing a single bucket

Page 134: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016134

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16 LOOKUP 25Hprimary

Most negative lookups only require accessing a single bucket

Page 135: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016135

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16 LOOKUP 25Hprimary

Most negative lookups only require accessing a single bucket

Page 136: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016136

HORTON TABLES

Lookups where the primary bucket is a conventional BCHT bucket without remap entries only ever require examining 1 bucket and thus 1 cache line for positive and negative queries alike

NEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16 LOOKUP 25Hprimary

Most negative lookups only require accessing a single bucket

Page 137: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016137

HORTON TABLES

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

NEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Most negative lookups only require accessing a single bucket

Page 138: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016138

HORTON TABLES

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

NEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

LOOKUP 28

Most negative lookups only require accessing a single bucket

Page 139: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016139

HORTON TABLES

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

NEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

LOOKUP 28Hprimary

Most negative lookups only require accessing a single bucket

Page 140: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016140

HORTON TABLES

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

NEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

LOOKUP 28Hprimary

Most negative lookups only require accessing a single bucket

Page 141: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016141

HORTON TABLES

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

NEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

LOOKUP 28Hprimary

Most negative lookups only require accessing a single bucket

Page 142: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016142

HORTON TABLES

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

NEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

LOOKUP 28Hprimary

Most negative lookups only require accessing a single bucket

Page 143: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016143

HORTON TABLES

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

NEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

LOOKUP 28Hprimary

Most negative lookups only require accessing a single bucket

Page 144: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016144

Most negative lookups only require accessing a single bucket

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

0 20

3

4

5

2

1

0

2

16

3

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 145: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016145

Most negative lookups only require accessing a single bucket

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

0 20

3

4

5

2

1

0

2

16

3

Determine 28 is not stored in its primary bucket (2) and proceed to examine REA

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 146: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016146

Most negative lookups only require accessing a single bucket

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

0 20

3

4

5

2

1

0

2

16

3

Determine 28 is not stored in its primary bucket (2) and proceed to examine REACompute index into remap entry array using Htag with key as input

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 147: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016147

Most negative lookups only require accessing a single bucket

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(28) = 10 0 20

3

4

5

2

1

0

2

16

3

Determine 28 is not stored in its primary bucket (2) and proceed to examine REACompute index into remap entry array using Htag with key as input

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 148: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016148

Most negative lookups only require accessing a single bucket

HORTON TABLESNEGATIVE LOOKUPS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(28) = 10 0 20

3

4

5

2

1

0

2

16

3

Determine 28 is not stored in its primary bucket (2) and proceed to examine REACompute index into remap entry array using Htag with key as inputExamine 10th slot of remap entry array and see it is empty. The search can stop.

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 149: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016149

Negative lookups only require accessing 2 buckets on a tag alias

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 150: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016150

Negative lookups only require accessing 2 buckets on a tag alias

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7

Page 151: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016151

Negative lookups only require accessing 2 buckets on a tag alias

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7Hprimary

Page 152: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016152

Negative lookups only require accessing 2 buckets on a tag alias

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7Hprimary

Page 153: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016153

Negative lookups only require accessing 2 buckets on a tag alias

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7Hprimary

Page 154: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016154

Negative lookups only require accessing 2 buckets on a tag alias

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7Hprimary

Page 155: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016155

Negative lookups only require accessing 2 buckets on a tag alias

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7Hprimary

Page 156: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016156

Negative lookups only require accessing 2 buckets on a tag alias

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Determine 7 is not stored in its primary bucket (2) and proceed to examine REA

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7Hprimary

Page 157: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016157

Negative lookup with a tag alias, e.g. 7 reads remap entry set by 23

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

0 20

3

4

5

2

1

0

2

16

3

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 158: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016158

Negative lookup with a tag alias, e.g. 7 reads remap entry set by 23

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

0 20

3

4

5

2

1

0

2

16

3

Compute index into remap entry array using Htag with key as input

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 159: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016159

Negative lookup with a tag alias, e.g. 7 reads remap entry set by 23

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(7) = 17 0 20

3

4

5

2

1

0

2

16

3

Compute index into remap entry array using Htag with key as input

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 160: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016160

Negative lookup with a tag alias, e.g. 7 reads remap entry set by 23

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(7) = 17 0 20

3

4

5

2

1

0

2

16

3

Compute index into remap entry array using Htag with key as input

Examine 18th slot of remap entry array and see that R2 was likely used to remap 7.

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

Page 161: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016161

Negative lookup with a tag alias, e.g. 7 reads remap entry set by 23

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(7) = 17 0 20

3

4

5

2

1

0

2

16

3

Compute index into remap entry array using Htag with key as input

Examine 18th slot of remap entry array and see that R2 was likely used to remap 7.

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7

Page 162: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016162

Negative lookup with a tag alias, e.g. 7 reads remap entry set by 23

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(7) = 17 0 20

3

4

5

2

1

0

2

16

3

Compute index into remap entry array using Htag with key as input

Examine 18th slot of remap entry array and see that R2 was likely used to remap 7.

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7R2

Page 163: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016163

Negative lookup with a tag alias, e.g. 7 reads remap entry set by 23

HORTON TABLESNEGATIVE LOOKUPS WITH TAG ALIAS

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

Htag(7) = 17 0 20

3

4

5

2

1

0

2

16

3

Compute index into remap entry array using Htag with key as input

Examine 18th slot of remap entry array and see that R2 was likely used to remap 7.

Lookups where the primary bucket’s final slot is converted into an REA often only require accessing 1 bucket and at most 2 for positive and negative queries alike

LOOKUP 7R2

Determine that no slots of secondary bucket (0) match 7, so stop looking.

Page 164: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016164

ADDITIONAL CONTENT IN THE PAPER

Sharing of remap entries among multiple remapped elements while still permitting their deletion

Further optimizations for improving lookup throughput

Analytical models for lookups, insertions and deletions

More in-depth discussion of prior work and how Horton tables improves over first-fit for positive lookups

Page 165: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016165

EXPERIMENTAL METHODOLOGY

Conducted a series of analytical studies to determine 8-slots per bucket was a good design point (more details in paper)

‒ Fills a 64-byte cache line with 8-byte entries

‒ High load factors (>95% table can be filled with key-value pairs)

‒ Positive lookups that typically access less than 1.18 buckets per query

‒ Negative lookups that typically access less than 1.06 buckets per query

Further analytical studies demonstrated that 21 entries per REA and 7 secondary functions is often more than sufficient for 8-slot buckets (more details in paper)

Experimental studies conducted on an AMD RadeonTM R9 290X GPU

Page 166: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016166

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

Page 167: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016167

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

HIGHER IS BETTER

Page 168: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016168

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

HIGHER IS BETTER

Load balancing insertion heuristic

Page 169: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016169

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Load balancing insertion heuristic

Page 170: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016170

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Load balancing insertion heuristic

Page 171: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016171

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Load balancing insertion heuristic

Page 172: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016172

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Load balancing insertion heuristic

Page 173: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016173

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Load balancing insertion heuristic

Page 174: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016174

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Load balancing insertion heuristic

Page 175: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016175

RESULTSPOSITIVELOOKUPS

Bytes Transferred from DRAM per Query

Positive Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Load balancing insertion heuristic

Page 176: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016176

RESULTSNEGATIVELOOKUPS

Bytes Transferred from DRAM per Query

Negative Lookup Throughput

Page 177: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016177

RESULTSNEGATIVELOOKUPS

Bytes Transferred from DRAM per Query

Negative Lookup Throughput

HIGHER IS BETTER

Page 178: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016178

RESULTSNEGATIVELOOKUPS

Bytes Transferred from DRAM per Query

Negative Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Page 179: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016179

RESULTSNEGATIVELOOKUPS

Bytes Transferred from DRAM per Query

Negative Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Page 180: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016180

RESULTSNEGATIVELOOKUPS

Bytes Transferred from DRAM per Query

Negative Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Page 181: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016181

RESULTSNEGATIVELOOKUPS

Bytes Transferred from DRAM per Query

Negative Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Page 182: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016182

RESULTSNEGATIVELOOKUPS

Bytes Transferred from DRAM per Query

Negative Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Page 183: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016183

RESULTSNEGATIVELOOKUPS

Bytes Transferred from DRAM per Query

Negative Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Page 184: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016184

RESULTSNEGATIVELOOKUPS

Bytes Transferred from DRAM per Query

Negative Lookup Throughput

HIGHER IS BETTER

LOWER

IS BETTER

Page 185: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016185

CONCLUSIONS FROM HORTON TABLES

Page 186: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016186

CONCLUSIONS FROM HORTON TABLES

Achieves lookup throughput that meets or exceeds prior approaches

Page 187: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016187

CONCLUSIONS FROM HORTON TABLES

Achieves lookup throughput that meets or exceeds prior approaches

The throughput improvement is achieved by reducing the number of cache lines that need to be accessed per lookup query to at most 1.18 for positive lookups and 1.06 for negative lookups.

Page 188: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016188

CONCLUSIONS FROM HORTON TABLES

Achieves lookup throughput that meets or exceeds prior approaches

The throughput improvement is achieved by reducing the number of cache lines that need to be accessed per lookup query to at most 1.18 for positive lookups and 1.06 for negative lookups.

Reducing cache accesses yields corresponding throughput improvements of 5% to 35% and 73% to 89%, for pos. and neg. lookups, respectively, on a very full table.

Page 189: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016189

CONCLUSIONS FROM HORTON TABLES

Achieves lookup throughput that meets or exceeds prior approaches

The throughput improvement is achieved by reducing the number of cache lines that need to be accessed per lookup query to at most 1.18 for positive lookups and 1.06 for negative lookups.

Reducing cache accesses yields corresponding throughput improvements of 5% to 35% and 73% to 89%, for pos. and neg. lookups, respectively, on a very full table.

Optimizing hash table algorithms is important because of their wide use throughout all segments of computing (e.g., scientific computing and databases, data compression, computer graphics and data visualization).

Page 190: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016190

FUTURE WORK

Evaluation of insertions and deletions and their optimization

‒ Write- and update-heavy workloads should also benefit from Horton tables approach.

Application of Horton tables to data warehousing and analysis applications

‒ Database operators’ implementations (e.g., hash joins and grouping hash tables)

‒ Key-value stores

Additional indices for speeding up lookups, insertions, and deletions

Evaluation of Horton tables on new and emerging memory subsystems as well as tailoring the technique for persistent storage technologies such as SSDs

Page 191: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016191

QUESTIONS?

Thanks for your attention.

Page 192: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016192

DISCLAIMER & ATTRIBUTION

The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions and typographical errors.

The information contained herein is subject to change and may be rendered inaccurate for many reasons, including but not limited to product and roadmap changes, component and motherboard version changes, new model and/or product releases, product differences between differing manufacturers, software changes, BIOS flashes, firmware upgrades, or the like. AMD assumes no obligation to update or otherwise correct or revise this information. However, AMD reserves the right to revise this information and to make changes from time to time to the content hereof without obligation of AMD to notify any person of such revisions or changes.

AMD MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE CONTENTS HEREOF AND ASSUMES NO RESPONSIBILITY FOR ANY INACCURACIES, ERRORS OR OMISSIONS THAT MAY APPEAR IN THIS INFORMATION.

AMD SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT WILL AMD BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL OR OTHER CONSEQUENTIAL DAMAGES ARISING FROM THE USE OF ANY INFORMATION CONTAINED HEREIN, EVEN IF AMD IS EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

ATTRIBUTION

© 2016 Advanced Micro Devices, Inc. All rights reserved. AMD, the AMD Arrow logo, AMD Radeon, and combinations thereof are trademarks of Advanced Micro Devices, Inc. in the United States and/or other jurisdictions. Other names are for informational purposes only and may be trademarks of their respective owners.

Page 193: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016193

BACKUPSLIDES

Page 194: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016194

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Page 195: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016195

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

INSERT 27

Page 196: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016196

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

INSERT 27Hprimary

Page 197: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016197

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

INSERT 27Hprimary

We conclude that bucket 2 has no free slots, so we need to remap it.

Page 198: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016198

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

0 20

23

Page 199: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016199

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

0 20

23

Compute the Htag on the key

Page 200: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016200

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Htag(27) = 1 0 20

23

Compute the Htag on the key

Page 201: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016201

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Htag(27) = 1 0 20

23

Compute the Htag on the key

Page 202: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016202

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Htag(27) = 1 0 20

23

Compute the Htag on the keyWe see that the remap entry is set,

so we try to use R3 to insert 27.

Page 203: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016203

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Htag(27) = 1 0 20

23

Compute the Htag on the keyWe see that the remap entry is set,

so we try to use R3 to insert 27.

INSERT 27

Page 204: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016204

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Htag(27) = 1 0 20

23

Compute the Htag on the keyWe see that the remap entry is set,

so we try to use R3 to insert 27.

INSERT 27R3

Page 205: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016205

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Htag(27) = 1 0 20

23

Compute the Htag on the keyWe see that the remap entry is set,

so we try to use R3 to insert 27.

INSERT 27R327

The insertion succeeds because the secondary bucket (3) has a free slot.

Page 206: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016206

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Htag(27) = 1 0 20

23

Compute the Htag on the keyWe see that the remap entry is set,

so we try to use R3 to insert 27.

INSERT 27R327

The insertion succeeds because the secondary bucket (3) has a free slot.

If bucket 3 had been full, we could have swapped 27 with another item from 27’s primary bucket (e.g., 35 in bucket 2) and remapped that item instead.

Page 207: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016207

HORTON TABLES

We permit a single remap entry to reference multiple remapped elements.

Deleting remap entries is possible by having elements that share remap entries map to the same secondary bucket (see our paper for details).

SHARING OF REMAP ENTRIES

8 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

Htag(27) = 1 0 20

23

Compute the Htag on the keyWe see that the remap entry is set,

so we try to use R3 to insert 27.

INSERT 27R327

The insertion succeeds because the secondary bucket (3) has a free slot.

If bucket 3 had been full, we could have swapped 27 with another item from 27’s primary bucket (e.g., 35 in bucket 2) and remapped that item instead.

Page 208: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016208

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

8

Page 209: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016209

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

DELETE 8

27

8

Page 210: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016210

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

DELETE 8Hprimary

27

8

Page 211: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016211

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

DELETE 8Hprimary

27

Page 212: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016212

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

Page 213: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016213

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

DELETE 27

Page 214: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016214

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

DELETE 27Hprimary

Page 215: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016215

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

DELETE 27Hprimary

27 is not found in its primary bucket; we need to access the remap entry array.

Page 216: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016216

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

0 20

23

Page 217: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016217

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

27 is not found in its primary bucket; we need to access the remap entry array.

0 20

23

Page 218: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016218

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

23

Page 219: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016219

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

23

Page 220: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016220

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

23

DELETE 27

Page 221: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016221

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

23

DELETE 27R3

Page 222: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016222

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

1627

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

23

DELETE 27R3

Search R3(27) = 3 and delete it upon discovery.

Page 223: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016223

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

23

DELETE 27R3

Search R3(27) = 3 and delete it upon discovery.

Page 224: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016224

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

23

DELETE 27R3

Search R3(27) = 3 and delete it upon discovery.Compute Hprimary on 16 and 37 and find that the remap entry is still active.

Page 225: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016225

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

16

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

23

DELETE 27R3

Search R3(27) = 3 and delete it upon discovery.Compute Hprimary on 16 and 37 and find that the remap entry is still active.A subsequent deletion of 16 would cause the remap entry to be deleted.

Page 226: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016226

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

23

DELETE 27R3

Search R3(27) = 3 and delete it upon discovery.Compute Hprimary on 16 and 37 and find that the remap entry is still active.A subsequent deletion of 16 would cause the remap entry to be deleted.

Page 227: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016227

HORTON TABLES

Deleting elements that are found in their primary bucket only requires accessing a single bucket

A remapped element can be deleted by performing a secondary lookup followed by a deletion

DELETING ELEMENTS

EMPTY 5 EMPTY EMPTY

33 EMPTY 15 2

35 18 22 REAEMPTY EMPTY EMPTY 37

17 6 21 EMPTY

9 24 EMPTY EMPTY

13

23

3

4

5

2

1

0

27 is not found in its primary bucket; we need to access the remap entry array.

Htag(27) = 1 0 20

2

DELETE 27R3

Search R3(27) = 3 and delete it upon discovery.Compute Hprimary on 16 and 37 and find that the remap entry is still active.A subsequent deletion of 16 would cause the remap entry to be deleted.

Page 228: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016228

HORTON TABLESINSERTION WHERE ALL CANDIDATE SECONDARY BUCKETS ARE FULL

8 5 EMPTY 31

33 EMPTY 15 2

35 18 22 REA

EMPTY EMPTY EMPTY 37

17 6 21 42

9 24 EMPTY 19

13

23

0 20

3

4

5

2

1

0

2

16

3

Swap item with another from its primary bucket that can be remapped to a secondary bucket that is not full

If this fails, then use cuckoo hashing

‒ Preferably enforcing as we do that secondary items cannot displace primary items

Page 229: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016229

HORTON TABLESINSERTION WHERE ALL CANDIDATE SECONDARY BUCKETS ARE FULL

8 5 EMPTY 31

33 EMPTY 15 2

35 18 22 REA

EMPTY EMPTY EMPTY 37

17 6 21 42

9 24 EMPTY 19

13

23

Htag(37) = 14 0 20

3

4

5

2

1

0

2

16

3

Swap item with another from its primary bucket that can be remapped to a secondary bucket that is not full

If this fails, then use cuckoo hashing

‒ Preferably enforcing as we do that secondary items cannot displace primary items

Page 230: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016230

HORTON TABLESINSERTION WHERE ALL CANDIDATE SECONDARY BUCKETS ARE FULL

8 5 EMPTY 31

33 EMPTY 15 2

35 18 22 REA

EMPTY EMPTY EMPTY 37

17 6 21 42

9 24 EMPTY 19

13

23

Htag(37) = 14 0 20

3

4

5

2

1

0

2

16

3

Swap item with another from its primary bucket that can be remapped to a secondary bucket that is not full

If this fails, then use cuckoo hashing

‒ Preferably enforcing as we do that secondary items cannot displace primary items

INSERT 37

Page 231: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016231

HORTON TABLESINSERTION WHERE ALL CANDIDATE SECONDARY BUCKETS ARE FULL

8 5 EMPTY 31

33 EMPTY 15 2

35 18 22 REA

EMPTY EMPTY EMPTY 37

17 6 21 42

9 24 EMPTY 19

13

23

Htag(37) = 14 0 20

3

4

5

2

1

0

2

16

3

Swap item with another from its primary bucket that can be remapped to a secondary bucket that is not full

If this fails, then use cuckoo hashing

‒ Preferably enforcing as we do that secondary items cannot displace primary items

INSERT 37R3

Page 232: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016232

HORTON TABLESINSERTION WHERE ALL CANDIDATE SECONDARY BUCKETS ARE FULL

8 5 EMPTY 31

33 EMPTY 15 2

35 18 22 REA

EMPTY EMPTY EMPTY 37

17 6 21 42

9 24 EMPTY 19

13

23

Htag(37) = 14 0 20

3

4

5

2

1

0

2

16

3

Swap item with another from its primary bucket that can be remapped to a secondary bucket that is not full

If this fails, then use cuckoo hashing

‒ Preferably enforcing as we do that secondary items cannot displace primary items

INSERT 37R3

INSERT 37

Page 233: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016233

HORTON TABLESINSERTION WHERE ALL CANDIDATE SECONDARY BUCKETS ARE FULL

8 5 EMPTY 31

33 EMPTY 15 2

35 18 22 REA

EMPTY EMPTY EMPTY 37

17 6 21 42

9 24 EMPTY 19

13

23

Htag(37) = 14 0 20

3

4

5

2

1

0

2

16

3

Swap item with another from its primary bucket that can be remapped to a secondary bucket that is not full

If this fails, then use cuckoo hashing

‒ Preferably enforcing as we do that secondary items cannot displace primary items

INSERT 37R3

INSERT 37R1

Page 234: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016234

HORTON TABLESINSERTION WHERE ALL CANDIDATE SECONDARY BUCKETS ARE FULL

8 5 EMPTY 31

33 EMPTY 15 2

35 18 22 REA

EMPTY EMPTY EMPTY 37

17 6 21 42

9 24 EMPTY 19

13

23

Htag(37) = 14 0 20

3

4

5

2

1

0

2

16

3

Swap item with another from its primary bucket that can be remapped to a secondary bucket that is not full

If this fails, then use cuckoo hashing

‒ Preferably enforcing as we do that secondary items cannot displace primary items

INSERT 37R3

INSERT 37R1

INSERT 37

Page 235: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016235

HORTON TABLESINSERTION WHERE ALL CANDIDATE SECONDARY BUCKETS ARE FULL

8 5 EMPTY 31

33 EMPTY 15 2

35 18 22 REA

EMPTY EMPTY EMPTY 37

17 6 21 42

9 24 EMPTY 19

13

23

Htag(37) = 14 0 20

3

4

5

2

1

0

2

16

3

Swap item with another from its primary bucket that can be remapped to a secondary bucket that is not full

If this fails, then use cuckoo hashing

‒ Preferably enforcing as we do that secondary items cannot displace primary items

INSERT 37R3

INSERT 37R1

INSERT 37R2

Page 236: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016236

HORTON TABLESINSERTION WHERE ALL CANDIDATE SECONDARY BUCKETS ARE FULL

8 5 EMPTY 31

33 EMPTY 15 2

35 18 22 REA

EMPTY EMPTY EMPTY 37

17 6 21 42

9 24 EMPTY 19

13

23

Htag(37) = 14 0 20

3

4

5

2

1

0

2

16

3

Swap item with another from its primary bucket that can be remapped to a secondary bucket that is not full

If this fails, then use cuckoo hashing

‒ Preferably enforcing as we do that secondary items cannot displace primary items

INSERT 37R3

INSERT 37R1

INSERT 37R2

REHASH 35

37

Page 237: HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA ... · 4 | HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016 THE ROLE OF HASH TABLES Data stores

| HORTON TABLES: FAST HASH TABLES FOR IN-MEMORY DATA-INTENSIVE COMPUTING | JUNE 23, 2016237

END OF BACKUPSLIDES