Feldera and Databricks Enzyme Demo#6612
Conversation
|
|
||
| With Feldera, you use the same SQL your batch engine runs now, get the same results, and pay a cost that tracks change size instead of data size. In addition, you get millisecond update latency across your full medallion architecture. | ||
|
|
||
| Continue on to Part 4 for a comparison between Databricks' IVM offering (Lakeflow Declarative Pipelines) and Feldera. No newline at end of file |
There was a problem hiding this comment.
should this be a hyperlink?
| return datetime.fromisoformat(value.replace("Z", "+00:00")) | ||
|
|
||
|
|
||
| def delta_connector(inputs: list, table: str) -> dict | None: |
There was a problem hiding this comment.
this seems to be list[dict], but maybe you don't know the dict type?
There was a problem hiding this comment.
added annotation
| @@ -0,0 +1,497 @@ | |||
| # Databricks notebook source | |||
| # MAGIC %md | |||
There was a problem hiding this comment.
I don't know what these MAGICs are
There was a problem hiding this comment.
It's just the syntax that defines a cell in a notebook
| # MAGIC - **Silver / Gold** are `@dp.materialized_view`s, persisted in the pipeline's Unity | ||
| # MAGIC Catalog target schema. | ||
| # MAGIC | ||
| # MAGIC The business logic (SQL) is identical to the batch script and to the Feldera views |
There was a problem hiding this comment.
Is it identical or equivalent?
There was a problem hiding this comment.
the business logic is identical. The sql is equivalent
| @@ -0,0 +1,305 @@ | |||
| # Part 4: Compare Feldera and Databricks Lakeflow Declarative Pipelines (Enzyme) | |||
|
|
|||
| Parts [1](./part1.md)–[3](./part3.md) read the Bronze snapshot and CDC from Feldera's | |||
There was a problem hiding this comment.
I would actually list all 3 parts with a short summary for each of them and a hyperlink to make it easy for people to go there.
| | `job.yaml` | Settings for the `compute_silver_gold` job (Step 2). | | ||
| | `measure_latency.py` | Reports Feldera's per-connector processing and end-to-end latency for changes (Step 4). | | ||
|
|
||
| ## Prerequisites |
There was a problem hiding this comment.
if you want to run the demo by yourself
|
|
||
| ## Step 3 — `ingest_bronze` as a data-generating process | ||
|
|
||
| Each run of the `ingest_bronze` task writes one hour of change into the Bronze Delta tables |
There was a problem hiding this comment.
one hour between updates is a lot... unless you are replaying an existing log very fast
There was a problem hiding this comment.
yeah the user just triggers the job that points to a file i.e., "2025-11-30T00". There's no schedule for the job, it's all interactive.
|
|
||
| Feldera pays neither cost the same way. It is always on, so there is no per-run | ||
| provisioning, and it maintains every view incrementally, so the update is proportional to | ||
| the size of the change. Updates are reflected in less than a second for one CDC hour, not 58s. |
There was a problem hiding this comment.
how about the machines resources used for these two? are they the same?
There was a problem hiding this comment.
Databricks is serverless, so I'm not sure exactly what the resource usage is. Feldera doesn't use more than a couple GiBs of RAM
There was a problem hiding this comment.
That would be useful to find spell out. Can you guess the DBX usage based on cost?
There was a problem hiding this comment.
At this scale both cost very little. I'll be doing a cost analysis for the blog post where we test multiple times at 5 or so different scale factors. Serverless is called out as a dep in the DBX set up explicitly
| | `gold_product_demand_surge` | Full recompute every refresh | Incremental | | ||
| | Orchestration | Job schedule + pipeline refresh | None — change-driven | | ||
| | Per-run startup | ~28s serverless provisioning | None — always on | | ||
| | Freshness for the first CDC hour | ~86s end-to-end | 0.37s at most | |
There was a problem hiding this comment.
This should be a graph with variance bars on measurements: run the measurements 10 times and plot some error bars for each measurement, with us and Databricks on the same graph. The graph should be the TLDR.
There was a problem hiding this comment.
I think this would be a good idea for a blog post. @ryzhyk and I are going to publish something that tests with larger scale data. I'll run multiple experiements per scale factor
mythical-fred
left a comment
There was a problem hiding this comment.
Two commit messages need cleanup before merge — see inline comments for details.
| public demo bucket. This part deploys the Databricks assets into **your own** workspace | ||
| and **your own** S3 bucket, then repoints the Feldera pipeline at that bucket. Two things | ||
| run against the same Bronze Delta tables: | ||
|
|
There was a problem hiding this comment.
Nit: "Lakeflow Declarative Pipelies" → "Pipelines" (typo).
|
Commits 2 and 3 ( Please Git history is a first-class artifact. Resources: |
Added configuration for a Lakeflow declarative pipeline. Users can copy the bronze data to their own bucket, see how Feldera works with snapshot_and_follow mode, and contrast with Databricks IVM solution (lakeflow declarative pipelines) Signed-off-by: Anand Raman <anand.raman@feldera.com>
e4e6ce2 to
5e74d7d
Compare
mythical-fred
left a comment
There was a problem hiding this comment.
Both blockers from my prior review are addressed — commits squashed into a single clean message, and the "Pipelies" typo is fixed. Content still reads well. Leaving Mihai's open discussion points (resource/cost breakdown for the Databricks side, variance-bar graph as a follow-up) to you two.
Describe Manual Test Plan
Checklist
Breaking Changes?
Mark if you think the answer is yes for any of these components:
Describe Incompatible Changes