Self-Assessment Quiz: NoSQL and Specialized Stores
Twenty questions. Aim for 16 or more.
Question 1
The one honest reason to add a specialized store is:
- A. The team already knows it
- B. It will scale better
- C. An access pattern the existing store serves badly enough to matter, measured
- D. The existing store is relational
Question 2
Scanning a key-value store is:
- A. A normal operation
- B. A red flag — you have chosen the wrong store
- C. Only a problem at scale
- D. Impossible
Question 3
Someone asks for analytics on data that lives only in Redis. The right response is:
- A. Build a better scanner using
SCANwith a cursor - B. Increase Redis persistence settings
- C. Start emitting events to a durable log, and build the analysis on those
- D. Add a read replica
Question 4
What makes DynamoDB not quite a key-value store?
- A. It is managed
- B. A partition key plus a sort key gives efficient range queries within a partition
- C. It supports transactions
- D. It has a SQL interface
Question 5
MongoDB change streams are notable because they are:
- A. The only change feed in this chapter
- B. Ordered, resumable, and cover inserts, updates, and deletes — the best non-relational change feed here
- C. Available only in the managed service
- D. Lossy but fast
Question 6
When landing document-store data, the chapter recommends:
- A. Infer a schema from a sample and flatten
- B. Land whole in bronze, enforce an explicit schema in silver, quarantine what does not match
- C. Reject documents that do not match a schema at landing
- D. Store only the fields you currently need
Question 7
Without a quarantine, "enforce a schema in silver" actually means:
- A. Fail the load
- B. Silently drop what does not fit
- C. Store the extras in a JSON column
- D. Alert an operator
Question 8
In a wide-column store, denormalization is:
- A. A performance optimization
- B. The data model — you design tables around queries in advance
- C. Discouraged
- D. Handled automatically
Question 9
Cassandra's extraction story is weak, so most teams:
- A. Use its CDC commit logs directly
- B. Dual-write to a message bus, or full-scan with token-range pagination
- C. Query a read replica
- D. Use logical decoding
Question 10
Kestrel's clickstream is not time-series data because:
- A. It has no timestamps
- B. It has millions of distinct session ids, needs joining, and events get corrected
- C. It is too high volume
- D. It is stored as JSON
Question 11
What kills a time-series database?
- A. Total data volume
- B. Cardinality — the number of distinct label combinations
- C. Query complexity
- D. Retention length
Question 12
Adding customer_id (1.9M values) as a label to a metric with 4,800 series produces roughly:
- A. 1.9 million series
- B. 9.1 million series
- C. 9.1 billion series
- D. No change — labels are indexed separately
Question 13
The person who takes down a metrics stack by adding a high-cardinality label is usually:
- A. Being careless
- B. Trying to improve observability
- C. Running a load test
- D. Migrating data
Question 14
Search indexes should be extracted from:
- A. The index, using a scroll API
- B. The source of truth the index was built from
- C. The index's own logs
- D. A snapshot
Question 15
What data does a search engine hold that exists nowhere else?
- A. The documents
- B. Search analytics — queries typed, results returned, positions clicked
- C. The relevance model
- D. Nothing
Question 16
Vectors produced by two different embedding model versions are:
- A. Directly comparable
- B. Comparable after normalization
- C. Not comparable — they live in different spaces
- D. Comparable only for text
Question 17
Which defense would have caught 6,000 products missing from a vector index?
- A. A latency alert
- B. A coverage assertion: index row count equals embeddable source row count
- C. Increasing the ANN recall parameter
- D. A schema test
Question 18
pgvector is generally sufficient until roughly:
- A. 10,000 vectors
- B. 100,000 vectors
- C. 10 million vectors
- D. 1 billion vectors
Question 19
The question that tests whether a time-series database is the wrong choice is:
- A. How much data is there?
- B. Does anything get corrected, and do you need to join it to a customer or product?
- C. What is the retention requirement?
- D. Is the data numeric?
Question 20
Before adopting a new store, the chapter says to consult:
- A. The benchmark results
- B. The extraction table — what the change feed is, because it determines the work for the store's whole life
- C. The pricing page
- D. The team's existing skills
Answer Key
1. C — §12.1. The word doing the work is measured.
2. B — §12.2. The operation exists and is a red flag.
3. C — §12.2, ⚠️ callout. Two days of work and the problem is gone permanently, versus a scanner that is slow, inconsistent, and subject to a TTL nobody connected to analytics.
4. B — §12.2. Which puts it closer to wide-column in capability, and brings wide-column modelling discipline.
5. B — §12.3. The closest thing to Debezium-quality CDC outside the relational world.
6. B — §12.3. §11.5's layered answer, applied to a document source.
7. B — §12.3. The quarantine is what makes the third option honest.
8. B — §12.4. A Cassandra schema frequently holds the same facts in four tables because there are four access patterns.
9. B — §12.4. Cassandra's CDC writes per-node commit-log segments requiring cross-replica deduplication, which most teams decline.
10. B — §12.5. Corrections and joins are the two things time-series databases are worst at.
11. B — §12.5, 📏 callout. And it arrives suddenly.
12. C — §12.5. 4 × 6 × 200 × 1,900,000. An out-of-memory kill, not a slow query.
13. B — §12.5. Which is why the rule — never put an unbounded identifier in a label — has to be known in advance.
14. B — §12.6, §12.9. The source has better guarantees and a better change feed.
15. B — §12.6, 🏭 callout. And it usually exists only in logs with a short retention nobody chose deliberately. Emit it as events.
16. C — §12.7. Upgrading the model means re-embedding everything, and a partial re-embed produces silently wrong results rather than errors.
17. B — §12.7. Nine words of SQL, and it catches this class of problem regardless of cause.
18. C — §12.7. Kestrel's 47,000 products is four orders of magnitude below the threshold.
19. B — §12.10. If yes to either, it is not time-series data whatever its timestamp suggests.
20. B — §12.9. A store with no change feed will be full-scanned — expensive, disruptive, and it misses deletes.
Topic map
| Missed | Reread |
|---|---|
| 1 | §12.1 — why platforms accumulate stores |
| 2, 3, 4 | §12.2 — key-value |
| 5, 6, 7 | §12.3 — document |
| 8, 9 | §12.4 — wide-column |
| 10, 11, 12, 13 | §12.5 — time-series and cardinality |
| 14, 15 | §12.6 — search |
| 16, 17, 18 | §12.7 — vector |
| 20 | §12.9 — extraction |
| 19 | §12.10 — choosing and not choosing |