monday, november 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... ·...

115
Monday, November 26, 12

Upload: others

Post on 25-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12

Page 2: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

The CouchDB Implementation

Monday, November 26, 12

Page 3: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Jan [email protected]@janlCouchDB PMC ChairCommitter #2

Monday, November 26, 12

Thanks for the inviteGlad to be here

JSConf EU / BBuzz / JSFAB

Page 4: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Any Database

Monday, November 26, 12

- FS integration / raw storage - core data structures - core features - API

Page 5: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

FILE SYSTEM

FILE SYSTEM ACCESS

CORE DATA STRUCTURES

CORE FEATURES

API

Monday, November 26, 12

Page 6: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

CouchDB is no different

Monday, November 26, 12

- couch_file - couch_btree - couch_db / couch_doc / couch_mr / couch_replicator / etcpp - couch_httpd*

Page 7: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

FILE SYSTEM

COUCH_FILE

COUCH_BTREE

COUCH_DB +

COUCH_HTTP*

COUCH_DOCCOUCH_MRCOUCH_REPL…

Monday, November 26, 12

Page 8: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Core Datastructures

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 9: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Behold theb+tree

Monday, November 26, 12

Page 10: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12

Page 11: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12

Page 12: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

by-id

Monday, November 26, 12

Page 13: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

A B C D E F G H I J K L …

Monday, November 26, 12

Page 14: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

A B C D E F

DO

C_G

H I J K L …

Monday, November 26, 12

Page 15: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

A B C

DO

C_D

E F

DO

C_G

H I J K L …

Monday, November 26, 12

Page 16: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

A B C

DO

C_D

E F

DO

C_G

H I J

DO

C_K

L …

Monday, November 26, 12

Page 17: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_D

DO

C_G

DO

C_K

Monday, November 26, 12

Page 18: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

by-seqor

“what happened since?”

Monday, November 26, 12

Page 19: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

1. D

OC_G

2. D

OC_D

3. D

OC_K

Monday, November 26, 12

Page 20: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

The CouchDBFile Format

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 21: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 22: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

HEA

DER

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 23: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

HEA

DER

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 24: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

BY

ID

ID

X A

HEA

DER

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 25: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

BY

ID

ID

X A

BY

SEQ

ID

X A

HEA

DER

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 26: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

BY

ID

ID

X A

BY

SEQ

ID

X A

HEA

DER

FOO

TER

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 27: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

SEQ

ID

X A

HEA

DER

FOO

TER

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 28: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

HEA

DER

FOO

TER

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 29: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

BY

SEQ

ID

X B

HEA

DER

FOO

TER

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 30: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

BY

SEQ

ID

X B

HEA

DER

FOO

TER

FOO

TER

Monday, November 26, 12

- 2 x b+tree & data interleaved - append only, mvcc - full fsync control

- Can answer: - Data for $key - What happened $since

- Used for core data storage - As well as indexes

- Everything else is built on top

Page 31: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12

Bulk add + Delete

Page 32: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

Monday, November 26, 12

Bulk add + Delete

Page 33: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

Monday, November 26, 12

Bulk add + Delete

Page 34: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

Monday, November 26, 12

Bulk add + Delete

Page 35: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

Monday, November 26, 12

Bulk add + Delete

Page 36: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

Monday, November 26, 12

Bulk add + Delete

Page 37: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

BY

SEQ

ID

X B

Monday, November 26, 12

Bulk add + Delete

Page 38: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

BY

SEQ

ID

X B

FOO

TER

Monday, November 26, 12

Bulk add + Delete

Page 39: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

BY

SEQ

ID

X B

FOO

TER

DEL

DO

C_A

Monday, November 26, 12

Bulk add + Delete

Page 40: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

BY

SEQ

ID

X B

FOO

TER

DEL

DO

C_A

BY

ID

ID

X A

Monday, November 26, 12

Bulk add + Delete

Page 41: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

BY

SEQ

ID

X B

FOO

TER

DEL

DO

C_A

BY

ID

ID

X A

BY

SEQ

ID

X A

Monday, November 26, 12

Bulk add + Delete

Page 42: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DO

C_A

DO

C_B

BY

ID

ID

X A

BY

ID

ID

X B

BY

SEQ

ID

X A

BY

SEQ

ID

X B

FOO

TER

DEL

DO

C_A

BY

ID

ID

X A

BY

SEQ

ID

X A

FOO

TER

Monday, November 26, 12

Bulk add + Delete

Page 43: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Operational Consequences

Monday, November 26, 12

- efficient on spinning disk, “tape” - btree = wide, upper layers in disk cache - backup with cp $a $b

- compaction hurts

Page 44: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Core Features (using by-seq)

Monday, November 26, 12

- Replication - Indexing / Views / GeoCouch / Lucene / ES etc. - /_changes - Compaction

Page 45: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12

Replication

Page 46: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE AMonday, November 26, 12

Replication

Page 47: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE A

1

Monday, November 26, 12

Replication

Page 48: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE A

2

1

Monday, November 26, 12

Replication

Page 49: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

Monday, November 26, 12

Replication

Page 50: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

Monday, November 26, 12

Replication

Page 51: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

DATABASE BMonday, November 26, 12

Replication

Page 52: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

DATABASE B

1

Monday, November 26, 12

Replication

Page 53: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

DATABASE B

2

1

Monday, November 26, 12

Replication

Page 54: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

Monday, November 26, 12

Replication

Page 55: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

4

Monday, November 26, 12

Replication

Page 56: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

4

5

Monday, November 26, 12

Replication

Page 57: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

4

6

5

Monday, November 26, 12

Replication

Page 58: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

4

7

6

5

Monday, November 26, 12

Replication

Page 59: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

4

7

6

5

8

Monday, November 26, 12

Replication

Page 60: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

4

7

6

5

8

5

Monday, November 26, 12

Replication

Page 61: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

4

7

6

5

8

6

5

Monday, November 26, 12

Replication

Page 62: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

4

7

6

5

8

7

6

5

Monday, November 26, 12

Replication

Page 63: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

DATABASE B

2

1

4

7

6

5

8

7

6

5

8

Monday, November 26, 12

Replication

Page 64: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12

Indexing

Page 65: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE AMonday, November 26, 12

Indexing

Page 66: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE A

1

Monday, November 26, 12

Indexing

Page 67: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE A

2

1

Monday, November 26, 12

Indexing

Page 68: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

Monday, November 26, 12

Indexing

Page 69: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

Monday, November 26, 12

Indexing

Page 70: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

INDEX AMonday, November 26, 12

Indexing

Page 71: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

INDEX A

1

Monday, November 26, 12

Indexing

Page 72: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

INDEX A

2

1

Monday, November 26, 12

Indexing

Page 73: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

Monday, November 26, 12

Indexing

Page 74: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

4

Monday, November 26, 12

Indexing

Page 75: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

4

5

Monday, November 26, 12

Indexing

Page 76: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

4

6

5

Monday, November 26, 12

Indexing

Page 77: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

4

7

6

5

Monday, November 26, 12

Indexing

Page 78: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

4

7

6

5

8

Monday, November 26, 12

Indexing

Page 79: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

4

7

6

5

8

5

Monday, November 26, 12

Indexing

Page 80: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

4

7

6

5

8

6

5

Monday, November 26, 12

Indexing

Page 81: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

4

7

6

5

8

7

6

5

Monday, November 26, 12

Indexing

Page 82: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

3

INDEX A

2

1

4

7

6

5

8

7

6

5

8

Monday, November 26, 12

Indexing

Page 83: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12

/_changes

Page 84: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE AMonday, November 26, 12

/_changes

Page 85: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE A

1

Monday, November 26, 12

/_changes

Page 86: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE A

2

1

Monday, November 26, 12

/_changes

Page 87: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

Monday, November 26, 12

/_changes

Page 88: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

Monday, November 26, 12

/_changes

Page 89: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

5

Monday, November 26, 12

/_changes

Page 90: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

6

5

Monday, November 26, 12

/_changes

Page 91: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

7

6

5

Monday, November 26, 12

/_changes

Page 92: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3

DATABASE A

2

1

4

7

6

5

8

Monday, November 26, 12

/_changes

Page 93: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12

Compaction

Page 94: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE AMonday, November 26, 12

Compaction

Page 95: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE A

1. DOC_A

Monday, November 26, 12

Compaction

Page 96: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

DATABASE A

2. DOC_B

1. DOC_A

Monday, November 26, 12

Compaction

Page 97: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

Monday, November 26, 12

Compaction

Page 98: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

Monday, November 26, 12

Compaction

Page 99: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

5. DOC_D

Monday, November 26, 12

Compaction

Page 100: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

6. DOC_B

5. DOC_D

Monday, November 26, 12

Compaction

Page 101: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

Monday, November 26, 12

Compaction

Page 102: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

8. DOC_G

Monday, November 26, 12

Compaction

Page 103: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

8. DOC_G

COMPACT AMonday, November 26, 12

Compaction

Page 104: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

8. DOC_G

3. DOC_C

COMPACT AMonday, November 26, 12

Compaction

Page 105: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

8. DOC_G

3. DOC_C

COMPACT A

4. DOC_A

Monday, November 26, 12

Compaction

Page 106: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

8. DOC_G

3. DOC_C

COMPACT A

4. DOC_A

5. DOC_D

Monday, November 26, 12

Compaction

Page 107: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

8. DOC_G

3. DOC_C

COMPACT A

4. DOC_A

6. DOC_B

5. DOC_D

Monday, November 26, 12

Compaction

Page 108: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

8. DOC_G

3. DOC_C

COMPACT A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

Monday, November 26, 12

Compaction

Page 109: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

3. DOC_C

DATABASE A

2. DOC_B

1. DOC_A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

8. DOC_G

3. DOC_C

COMPACT A

4. DOC_A

7. DOC_F

6. DOC_B

5. DOC_D

8. DOC_G

Monday, November 26, 12

Compaction

Page 110: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Erlang

Monday, November 26, 12

- Small codebase - Efficient in small teams

- Supervision tree - Isolated processes - Concurrency

- Portable runtime

- Hard to recruit for - Steep ramp-on - Bit of an operational black box (nine nines story) - Bit hard as an install-dependency

Page 111: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

COUCH_SERVER

COUCH_HTTP

COUCH_QUERY_SERVER

COUCH_LOG

COUCH_DB

COUCH_DB_UPDATER

COUCH_FILE

Monday, November 26, 12

- Small codebase - Efficient in small teams

- Supervision tree - Isolated processes - Concurrency

- Portable runtime

- Hard to recruit for - Steep ramp-on - Bit of an operational black box (nine nines story) - Bit hard as an install-dependency

Page 112: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Potential Improvements

Monday, November 26, 12

- Smarter compactor - Smarter file-storage - Less custom HTTP handling - More indexers

Page 113: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

The End

Monday, November 26, 12

Page 114: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Thanks!

Monday, November 26, 12

Page 115: Monday, November 26, 12 - archive.apachecon.comarchive.apachecon.com/eu2012/presentations/08... · Jan Lehnardt jan@a.o @janl CouchDB PMC Chair Committer #2 Monday, November 26, 12

Monday, November 26, 12