- Phase 0 - The basics
- Phase 1 - Workers
- Phase 2 - Dedicated worker servers
- Phase 3 - Scaling
- Phase 4 - Load Balancers
- Phase 5 - Object storage
- Phase 6 - Caching
- Phase 7 - CDN
- Phase 8 - Database scaling
- Your own SaaS idea
- New startups with VC funding
- New startups without VC funding
- Smaller apps for smaller companies
- Creating orders
- Reports
- Storing orders
- Storing files
- The minimum storage requirements
- Estimating the required number of workers
- Using docker
- Multiple queues and priorities
- Multiple columns
- Hashing
- Redundant columns
- Pre-computing aggregates
- Materialized views
- Flatten many-to-many relationships
- Partitioning
- Real-time updates
- Using the view table
- Testing the performance
- Migrating existing data
- Serving multiple reports
- Synchronous messaging
- Asynchronous messaging
- Redis
- ClickHouse
- Products and features
- Plans
- Orders
- Subscriptions
- Subscription usage
- Benefits
- Technical challenges
- Implementation
- Event-Driven Architecture
- Conflicts
- Delta synchronization
- Deduplication
- Batch processing
- Caching
- Lists
- Sets
- Sorted sets
- Streams
- Pub/Sub
- HyperLogLogs
- Other data structures
- LRU cache with arrays
- LRU cache with linked lists
- LRU cache with Redis lists
- LRU cache with Redis sorted sets
- LRU cache in action
- Arrays
- Linked list
- Binary tree
- Binary search tree (BST)
- Indexing in the early days
- B-Tree
- B+ Trees
- const
- range
- range (again)
- index
- ALL
- Select *
- Cardinality
- Listing posts by status
- Feed
- Publishing posts
- Avoiding memory problems
- Avoiding spamming the database
- Measuring performance