Available on your favorite podcast platform.

In this episode, we are joined by Blake Minerto discuss databases.

Show notes:

  • Introduction
    • Blake’s background, what type of work he does, company information, etc.
    • Data has substantial value
  • What is a database?
    • General overview - store data, process it, and look it up later
    • Important that data stays intact in the event of a app/system crash, powerloss, etc.
    • Important that conflicting concurrent changes are handled appropriately
    • What safety guarantees do I get? -> Transactions / ACID - Atomicity,Consistency, Isolation, Durability
      • atomicity -> abortability guarantee for a group of writes (i.e. uponfailure)
      • consistency -> guarantee that certain (app-specific; sometimesdatabase-specific) constraints are not violated
      • isolation -> describes how database handles concurrent edits of the samedata. Serializable is the strongest guarantee. Snapshot isolation is verycommon.
      • durability -> storage guarantee (i.e. upon commit, data has fsync‘ed todisk). Study: SSDs get 1 bad block in first 4 years; disaster could wipeout an entire data center; nothing is perfect.
    • Storage / lookup: Data models / data structures
    • Derived data; caching
    • Concurrency; consistency & isolation
  • Reactivity/Realtime
    • tradeoffs between reacting to DB changes vs using a message bus
    • streaming platforms such as NATS Jetstream and Kafka
  • SQL
    • Tables and rows -> array of structs
    • SQL -> Declarative query language (query engine determines implementationdetails at runtime)
    • B-tree Indexes
  • NoSQL Databases
    • “NoSQL” -> a marketing term
  • Redis
    • Data structure store
    • In-memory vs. disk-based
  • Embedded databases (i.e. API vs. commands over TCP)
  • Designing Data-Intensive Applications by MartinKleppmann. Blake recommends this book.

Discuss this episode at ourcommunity site.