Outline use cases, constraints, and assumptions
We need to ask following questions:
- Who is going to use it?
- How are they going to use it?
- How money users are there?
- What does the system do?
- What are the inputs and outputs of the system?
- How much data do we expect to handle?
- How many requests per second do we expect?
- What is the expected read to write ratio?
Sometimes we need to do back-of-the-envelope calculation
Back-of-the-envelope calculations are estimates you create using a combination of thought experiments and common performance numbers to a get a good feel for which designs will meet your requirements.
- Memory is fast and disk is slow (yea obviously)
- Writes are 40 times more expensive than reads (that’s why we may need to separate write db and read db)
Powers of two table
Power ExactValue ApproximateVale Bytes 2^7 128
2^8 256 2^10 1024 1k 1KB 2^16 65536 64KB 2^20 1048576 1m 1MB 2^30 1billion 1GB 2^32 4GB 2^40 1 trillion 1TB