~/problems / Stateful stores / In-memory database

In-memory table with SQL-style queries

medium 6 levels ~90 min OpenAI

Level 1 Tables, rows, projection

Build Database. No SQL parsing: every operation is a plain method call.

  • create_table(table, columns) -> None: columns is a list of distinct column names. Raise ValueError if the table already exists.
  • insert(table, row) -> None: row is a dict whose keys are exactly the table's columns (any order). Raise ValueError for an unknown table or for missing or extra keys. Store a copy: changing the caller's dict afterwards must not change the table.
  • query(table, columns) -> list[dict]: one dict per row, in insertion order, holding only the requested columns (keys in the order requested). Raise ValueError for an unknown table or any unknown column. Returned dicts are fresh: editing them must not change the table.
db = Database()
db.create_table("users", ["id", "name", "age"])
db.insert("users", {"id": 1, "name": "Ann", "age": 31})
db.insert("users", {"name": "Bo", "id": 2, "age": 25})
db.query("users", ["name"])        # [{"name": "Ann"}, {"name": "Bo"}]
db.query("users", ["age", "id"])   # [{"age": 31, "id": 1}, {"age": 25, "id": 2}]
db.query("users", ["email"])       # ValueError

Level 2 unlocks when level 1 passes.

Level 3 unlocks when level 2 passes.

Level 4 unlocks when level 3 passes.

Level 5 unlocks when level 4 passes.

Level 6 unlocks when level 5 passes.

Topic: In-memory database. CRUD with fields, range scans, TTL expiry, time-travel reads.

0:00
Ctrl ' run · Ctrl ↵ submit
esc