evan tschannen
play

Evan Tschannen 1 Evan Tschannen Worked on FoundationDB for 8 - PowerPoint PPT Presentation

Evan Tschannen 1 Evan Tschannen Worked on FoundationDB for 8 years Touched every core component of the database Recently added multi-region asynchronous replication https://www.foundationdb.org


  1. Evan Tschannen � 1

  2. Evan Tschannen • Worked on FoundationDB for 8 years • Touched every core component of the database • Recently added multi-region asynchronous replication

  3. • https://www.foundationdb.org • https://github.com/apple/foundationdb • Open Source, Apache License (v2)

  4. Why are there so many databases? � 4

  5. Why are there so many databases? • Tension between performance, scalability, and consistency • A wide variety of data models � 5

  6. FoundationDB Performance • Organizes many instances of a single process database into a single database • Read and write throughput 90% of the aggregate individual read and write throughput • Single hop read latencies • Four hop write latencies

  7. FoundationDB is a… • Highly performant, • Scalable, • Ordered key value store, • That supports ACID transactions.

  8. Servers A Writer Reader Wait for 2 of 3 responses Wait for 2 of 3 responses B C � 8

  9. Servers A Writer Reader Wait for 2 of 3 responses Wait for 2 of 3 responses B C � 9

  10. Servers A Writer Reader Wait for 3 of 3 responses Wait for 1 of 3 responses B C � 10

  11. Servers A Writer Reader Wait for 3 of 3 responses Wait for 1 of 3 responses B C � 11

  12. 0: A,B,C 101: B,C,D Versions (Stored in a di ff erent database) Servers A Writer Reader Wait for 3 of 3 responses Wait for 1 of 3 responses B C D � 12

  13. Coordinators ZooKeeper (Failure Handling) Storage Servers Transaction Logs SQLite (Reads) FoundationDB (Writes) � 13

  14. Coordinators Cluster Controller Storage Servers Transaction Logs � 14

  15. Coordinators Cluster Controller Storage Servers Transaction Logs � 15

  16. FoundationDB API Versions A : apple 100 Get Read Version (200) 200 Read (A, 200) Write (B, banana) Commit 400 � 16

  17. FoundationDB API Versions A : apple 100 Get Read Version (200) 200 Read (A, 200) 300 A : orange Write (B, banana) Commit 400 � 17

  18. Coordinators Cluster Controller Master Storage Servers Proxies Resolvers Transaction Logs � 18

  19. Coordinators Get Read Version Reads Cluster Controller Writes Commit Master Storage Servers Proxies Resolvers Transaction Logs � 19

  20. Coordinators Get Read Version (200) Reads (A, 200) Cluster Controller Writes (B : banana) Commit Master Data Distribution Storage Servers Proxies Resolvers Transaction Logs � 20

  21. Coordinators Get Read Version (200) Reads (A, 200) Cluster Controller Writes (B : banana) Commit Master (400) Storage Servers Proxies Resolvers Transaction Logs � 21

  22. Coordinators Get Read Version (200) Reads (A, 200) Cluster Controller Writes (B : banana) Commit Master (400) Storage Servers Proxies Resolvers Transaction Logs � 22

  23. Coordinators Get Read Version (200) Reads (A, 200) Cluster Controller Writes (B : banana) Commit Master Storage Servers Proxies Resolvers Transaction Logs � 23

  24. Coordinators Get Read Version (200) Reads (A, 200) Cluster Controller Writes (B : banana) Commit (400) Master Storage Servers Proxies Resolvers Transaction Logs � 24

  25. Coordinators Get Read Version Reads Cluster Controller Writes Commit Master Storage Servers Proxies Resolvers Transaction Logs � 25

  26. Coordinators Get Read Version Reads Cluster Controller Writes Commit Master Storage Servers Proxies Resolvers Transaction Logs (400) (300) (200) � 26

  27. Coordinators Get Read Version (400) Reads Cluster Controller Writes Commit Master Storage Servers Proxies Resolvers Transaction Logs (400) (300) (200) � 27

  28. Coordinators Get Read Version Reads Cluster Controller Writes Commit Master Storage Servers Proxies Resolvers Transaction Logs � 28

  29. Coordinators Get Read Version Reads Cluster Controller Writes Commit Master Storage Servers Proxies Resolvers Transaction Logs � 29

  30. Coordinators Get Read Version Reads Cluster Controller Writes Commit Master Storage Servers Proxies Resolvers Transaction Logs � 30

  31. Coordinators Get Read Version Reads Cluster Controller Writes Commit Master Data Distribution Storage Servers Proxies Resolvers Transaction Logs � 31

  32. Coordinators Get Read Version Reads Cluster Controller Writes Commit Master Storage Servers Proxies Resolvers Transaction Logs � 32

  33. FoundationDB Performance • Organizes many instances of a single process database into a single database • Read and write throughput 90% of the aggregate individual read and write throughput • Single hop read latencies • Four hop write latencies

  34. Does it work? • Run the entire distributed database in a single process • Inject random failures • Check correctness • Reproduce errors

  35. https://www.foundationdb.org � 35

Recommend


More recommend