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 SCAN with 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