1 min lesson
Why lakehouse over a warehouse here
Explain your answer to "Why does Cursor prefer a lakehouse over a classic warehouse for this role's data?" Add one concrete detail from the lesson.
Step 1 of 3
Why lakehouse over a warehouse hereone copy, three very different consumers
Cursor's data serves BI dashboards, product analytics and ML/agent training from the same tables. A warehouse-only stack would force you to copy data out to a separate object store every time the ML side needed raw Parquet, doubling storage and creating two sources of truth that drift. The lakehouse keeps a single governed copy that Spark, SQL and training jobs all read directly.
Learn more
Advanced table
Reference table
- Storage cost
- Raw data lake
- Lowest (object store)
- Classic warehouse
- Highest (proprietary)
- Lakehouse (Delta + UC)
- Low (object store)
- ACID / schema
- Raw data lake
- None
- Classic warehouse
- Strong
- Lakehouse (Delta + UC)
- Strong (via Delta log)
- Open formats
- Raw data lake
- Yes (Parquet)
- Classic warehouse
- No (locked-in)
- Lakehouse (Delta + UC)
- Yes (Parquet under Delta)
- Serves ML on raw files
- Raw data lake
- Yes, but ungoverned
- Classic warehouse
- Awkward, needs export
- Lakehouse (Delta + UC)
- Yes, governed in place
- Governance / lineage
- Raw data lake
- Bolt-on, weak
- Classic warehouse
- Strong but engine-bound
- Lakehouse (Delta + UC)
- Unity Catalog, cross-engine
| Raw data lake | Classic warehouse | Lakehouse (Delta + UC) | |
|---|---|---|---|
| Storage cost | Lowest (object store) | Highest (proprietary) | Low (object store) |
| ACID / schema | None | Strong | Strong (via Delta log) |
| Open formats | Yes (Parquet) | No (locked-in) | Yes (Parquet under Delta) |
| Serves ML on raw files | Yes, but ungoverned | Awkward, needs export | Yes, governed in place |
| Governance / lineage | Bolt-on, weak | Strong but engine-bound | Unity Catalog, cross-engine |
The lakehouse is the only column that serves BI and ML from one governed copy at object-store cost.
When asked "why a lakehouse," don't list features - name the consumer conflict it resolves. "We serve BI, product analytics and agent-training data from the same telemetry. A warehouse would make me export raw files for the ML side and run two sources of truth; Delta plus Unity Catalog gives one governed copy at object-store cost." That ties the choice to Cursor's actual workload, which is the senior signal.
Don't call Delta "just Parquet." The Parquet files are inert without the transaction log - drop the _delta_log and you've lost ACID, time travel and the file set itself. Conflating the two reads as surface knowledge; the log is what makes it a table.