<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tales of a Foolish Programmer]]></title><description><![CDATA[Tales of a Foolish Programmer]]></description><link>https://achyuthreddyyi.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 11:02:41 GMT</lastBuildDate><atom:link href="https://achyuthreddyyi.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Episode 2: The Warehouse Awakens: Order from the Chaos]]></title><description><![CDATA[📍Recap of where we paused:
Jigyās had just learned why relational databases break at analytical scale. He asked about columnar databases (like ClickHouse), and Jñānesh explained how they optimize analytical queries by storing data by column rather t...]]></description><link>https://achyuthreddyyi.hashnode.dev/episode-2-the-warehouse-awakens-order-from-the-chaos</link><guid isPermaLink="true">https://achyuthreddyyi.hashnode.dev/episode-2-the-warehouse-awakens-order-from-the-chaos</guid><category><![CDATA[apache hudi]]></category><category><![CDATA[#datawarehouse]]></category><category><![CDATA[Data-lake]]></category><category><![CDATA[Databases]]></category><dc:creator><![CDATA[achyuth reddy]]></dc:creator><pubDate>Thu, 17 Apr 2025 14:58:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1744901718460/f26d8aa6-2740-488c-b3d9-b0590a702041.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>📍Recap of where we paused:</p>
<p>Jigyās had just learned why relational databases break at analytical scale. He asked about columnar databases (like ClickHouse), and Jñānesh explained how they optimize analytical queries by storing data by column rather than by row.</p>
<p>Now we’ll continue the conversation as Jñānesh transitions from columnar storage to full-blown data warehouses, setting the stage for star schemas, batch processing, and the pain points that led to data lakes.</p>
<p>Let’s jump in. 🎬</p>
<p>(Part 1: When Columns Took Over)</p>
<h3 id="heading-so-columnar-databases-store-one-column-at-a-time-right">🧑‍💻 “So… columnar databases store one column at a time, right?”</h3>
<blockquote>
<p>🧙‍♂️ “Exactly. Imagine you’re scanning millions of sales records just to find the total revenue by country. A columnar store reads just the amount column — not the entire row. It’s like reading only the words you care about in a paragraph.”</p>
<p>🧙‍♂️ “This makes analytical queries faster — much faster — especially on massive datasets.”</p>
</blockquote>
<p>Jigyās squints.</p>
<h3 id="heading-yeah-yeah-ive-heard-that-before-faster-at-scale-they-all-say-show-me-proof-guru-or-am-i-just-supposed-to-believe-every-data-blog-i-read-at-2-am">🧑‍💻 “Yeah yeah… I’ve heard that before. ‘Faster at scale,’ they all say. Show me proof, Guru. Or am I just supposed to believe every data blog I read at 2 AM?”</h3>
<p>Jñānesh chuckles — not offended, but amused.</p>
<blockquote>
<p>🧙‍♂️ “Fair enough. Let’s imagine two tables. Both have 100 million rows. You want to know the average purchase amount per country.”</p>
</blockquote>
<p>He sketches a simple schema in the air:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>user_id</td><td>name</td><td>country</td><td>purchase_amount</td><td>quantity</td></tr>
</thead>
<tbody>
<tr>
<td>101</td><td>Rahul</td><td>India</td><td>100</td><td>2</td></tr>
<tr>
<td>102</td><td>Narendra</td><td>India</td><td>157</td><td>3</td></tr>
</tbody>
</table>
</div><hr />
<blockquote>
<p>🧙‍♂️ “Now, in a traditional row-based store, every record is stored one after the other — all fields packed together. So even if you only need <code>purchase_amount</code> and <code>country</code>, the engine still reads entire rows.”</p>
<p>🧙‍♂️ “That’s like reading every word of every book in a library just to find how many times the word ‘India’ shows up.”</p>
</blockquote>
<p>Jigyās raises an eyebrow.</p>
<h3 id="heading-and-in-columnar">🧑‍💻 “And in columnar?”</h3>
<blockquote>
<p>🧙‍♂️ “Each column is stored separately. So the query engine goes directly to the <code>purchase_amount</code> and <code>country</code> columns — skipping the rest.”</p>
<p>🧙‍♂️ “It’s like having a shelf where every book only has the chapter you care about.”</p>
</blockquote>
<h3 id="heading-columnar-storage-columns-stored-in-separate-sections-aka-pages-or-blocks">📊 Columnar Storage: Columns stored in separate sections (aka pages or blocks)</h3>
<pre><code class="lang-basic">+------------------------+   +-----------------------+   +---------------------+
| Column: user_id        |   | Column: country       |   | Column: amount      |
| <span class="hljs-number">101</span>, <span class="hljs-number">102</span>, <span class="hljs-number">103</span>, ...     |   | <span class="hljs-comment">'India', 'India', ... |   | 400, 150, 700, ...  |</span>
+------------------------+   +-----------------------+   +---------------------+
</code></pre>
<blockquote>
<p>🧙‍♂️ “Now in columnar formats like Parquet, ORC, and Arrow — each column is stored in its own block or page on disk.”</p>
<p>🧙‍♂️ “So when you run: <code>SELECT country, SUM(amount)</code> the query engine skips over everything else — like <code>email</code>, <code>name</code>, <code>purchase_time</code> — and goes straight to the relevant blocks.”</p>
<p>🧙‍♂️ “Less disk I/O. Faster scans. Better cache utilization. And, crucially — better compression.”</p>
<p>🧙‍♂️ “If every value in a block is from the same column and mostly similar… compression shines.”</p>
</blockquote>
<h3 id="heading-so-instead-of-scanning-across-all-fields-in-every-row-it-just-laser-focuses-on-the-column-i-want">🧑‍💻 “So... instead of scanning across all fields in every row, it just… laser-focuses on the column I want?”</h3>
<blockquote>
<p>🧙‍♂️ “Exactly. That’s what makes columnar formats perfect for analytical workloads.”</p>
</blockquote>
<p>Jigyās leans back, a little triumphant.</p>
<h3 id="heading-okay-so-columnar-databases-like-clickhouse-store-data-column-by-column-which-helps-scan-only-what-you-need-and-makes-queries-fast-that-sounds-like-it-solves-the-problemso-why-isnt-everyone-just-using-them"><strong>🧑‍💻 “Okay, so columnar databases like ClickHouse store data column-by-column, which helps scan only what you need and makes queries fast. That sounds like it solves the problem—so why isn’t everyone just using them?”</strong></h3>
<p>Jñānesh pauses — a longer pause this time.</p>
<blockquote>
<p>🧙‍♂️ <em>“Ah, you’ve found the limitation.”</em></p>
<p>🧙‍♂️ <em>“Columnar formats solved</em> <strong><em>speed</em></strong>*. But speed alone isn’t a system.”*</p>
</blockquote>
<hr />
<h3 id="heading-jnanesh-explains-the-real-problems">🧠 Jñānesh Explains the Real Problems</h3>
<blockquote>
<p>🧙‍♂️ “Let’s say your company dumps all raw data into a columnar database. Great. Now answer me this…”</p>
<ul>
<li><p>How do teams know what each table means?</p>
</li>
<li><p>Who owns the logic for calculating revenue?</p>
</li>
<li><p>What happens if someone renames a column or changes a data type?</p>
</li>
<li><p>How do you enforce data freshness and quality across teams?</p>
</li>
<li><p>Can your marketing team and finance team query data with confidence — and get the <em>same</em> answer?”</p>
</li>
</ul>
</blockquote>
<hr />
<p>Jigyās doesn’t answer — because, well, there <em>is</em> no answer.</p>
<hr />
<blockquote>
<p>🧙‍♂️ “Columnar databases are just a <strong>way of storing data efficiently</strong>.<br />They don’t provide <em>structure</em>. They don’t orchestrate <em>transformation</em>.<br />They don’t manage <em>governance</em>. They don’t model <em>business logic</em>.”</p>
</blockquote>
<hr />
<h3 id="heading-what-we-needed-was-more-than-storage">🏗️ What We Needed Was More Than Storage</h3>
<blockquote>
<p>🧙‍♂️ “As data volumes grew, and teams depended on data for decisions — we needed more than raw performance.”</p>
<p>🧙‍♂️ “We needed systems that could:”</p>
</blockquote>
<pre><code class="lang-basic">✅ Clean <span class="hljs-keyword">and</span> transform raw <span class="hljs-keyword">data</span> into useful tables
✅ Define consistent metrics (like <span class="hljs-comment">'Monthly Active Users')</span>
✅ Track lineage — where <span class="hljs-keyword">data</span> came from <span class="hljs-keyword">and</span> how it changed
✅ Control access <span class="hljs-keyword">and</span> versioning
✅ Serve dashboards, reports, <span class="hljs-keyword">and</span> business logic
✅ <span class="hljs-keyword">Run</span> reliable, repeatable batch jobs (ETL)
</code></pre>
<blockquote>
<p>🧙‍♂️ “That’s when we realized — we don’t just need <em>fast tables</em>.<br />We need a <strong>warehouse</strong>. A place where data can live, evolve, and be trusted.”</p>
</blockquote>
<hr />
<p>Jigyās leans in.</p>
<blockquote>
<p>🧑‍💻 <em>“So a data warehouse is not just a fast database — it’s an entire system with… structure, logic, and lifecycle?”</em></p>
<p>🧙‍♂️ <em>“Precisely.”</em></p>
</blockquote>
<hr />
<blockquote>
<p>🧙‍♂️ “It’s where we define how data flows — from ingestion, to transformation, to curated reporting.”</p>
<p>🧙‍♂️ “And at the center of it: <strong>ETL jobs</strong>, <strong>semantic models</strong>, and the <strong>governance</strong> to keep it consistent.”</p>
</blockquote>
<p>Jigyās takes a sip of now-cold coffee, still trying to process the idea of warehouses being more than just fast tables.</p>
<blockquote>
<p>🧑‍💻 <em>“Okay… I think I get it.”</em><br /><em>“Warehouses aren’t just storage — they’re structured, governed, and come with ETL pipelines and modeled metrics.”</em></p>
</blockquote>
<p>He pauses. Then his eyes narrow.</p>
<blockquote>
<p>🧑‍💻 <em>“But I have another question.”</em></p>
<p>🧑‍💻 <em>“If a company has, like… two data warehouses, is that what people call a data lake?”</em></p>
</blockquote>
<hr />
<p>Jñānesh blinks. Then laughs — not mockingly, but with the warmth of someone who’s heard it all.</p>
<blockquote>
<p>🧙‍♂️ <em>“That, my friend, is not a data lake. That’s a data swamp waiting to happen.”</em></p>
</blockquote>
<h3 id="heading-jnanesh-gently-corrects">💡 Jñānesh Gently Corrects</h3>
<blockquote>
<p>🧙‍♂️ “A <strong>data lake</strong> isn’t a bunch of warehouses.”<br /><em>It’s actually quite the opposite.</em></p>
<p>🧙‍♂️ “A data warehouse is structured, governed, curated — like a well-run factory.”</p>
<p>🧙‍♂️ “A <strong>data lake</strong> is raw, flexible, and open-ended — like a storage yard where anything can be dropped: logs, images, audio, Parquet, CSVs, events, nested JSON…”</p>
</blockquote>
<hr />
<blockquote>
<p>🧑‍💻 <em>“Wait — so is it… like a big folder? Like Dropbox for data?”</em></p>
<p>🧙‍♂️ “Not a bad metaphor. Except this Dropbox lives on object storage — S3, GCS, Azure Blob, or even MinIO. And it holds <em>everything</em>.”</p>
</blockquote>
<hr />
<blockquote>
<p>🧙‍♂️ “It was born because warehouses couldn’t handle:”</p>
<pre><code class="lang-basic">❌ Unstructured <span class="hljs-keyword">data</span> (like images, logs, audio)
❌ Semi-structured formats (JSON, Avro, nested structures)
❌ Real-time <span class="hljs-keyword">data</span> streams (IoT, Kafka)
❌ Cost-effective, elastic storage at petabyte scale
</code></pre>
<p>🧙‍♂️ “So engineers started dumping raw data into cheap object storage — and <em>called it</em> a data lake.”</p>
<p>🧑‍💻 <em>“So no structure, no schema, just… vibes?”</em></p>
<p>🧙‍♂️ “Correct. Vibes and buckets. And chaos — unless you’re careful.”</p>
</blockquote>
<p>Jigyās leans back, eyes wide.</p>
<blockquote>
<p>🧑‍💻 <em>“Okay… that explains a lot.<br />So warehouses are about discipline, and lakes are like... creative anarchy?”</em></p>
<p>🧙‍♂️ <em>“That’s one way to put it.”</em></p>
<p>🧙‍♂️ <em>“Which is also why companies that build data warehouses — the ones that help teams bring order to that chaos — make</em> <strong><em>a LOT</em></strong> <em>of money.”</em></p>
<p>🧙‍♂️ <em>“Because at some point, someone will look at all the JSON files floating around in S3 and say...</em><br />‘How do I make this into a dashboard?’”*</p>
<p>🧑‍💻 <em>“Let me guess — insert $100k/yr warehouse subscription here?”</em></p>
<p>🧙‍♂️ <em>“Now you’re getting it.”</em></p>
</blockquote>
<p>Jñānesh sips an imaginary cup of wisdom-tea and continues.</p>
<blockquote>
<p>🧙‍♂️ <em>“The beauty of data lakes is that you can store almost anything — not just tables.”</em></p>
<p>🧙‍♂️ <em>“Audio recordings from support calls. Sensor readings from IoT devices. Web logs. Clickstreams. PDF scans. Even TikTok video metadata if you’re into that sort of thing.”</em></p>
<p>🧙‍♂️ <em>“It’s cheap, elastic, and doesn’t care about structure.”</em></p>
<p>🧙‍♂️ “You see, Jigyās, a data warehouse gave you control and trust… but a data lake gave you freedom.”<br /><em>“And not just freedom of structure — freedom of storage, scale, and format.”</em></p>
<p>🧙‍♂️ “In a warehouse, you’re often tied to a single vendor — your data sits inside their walled garden.”<br /><em>“But in a data lake, your data lives in</em> <strong><em>open formats</em></strong> <em>— Parquet, ORC, Avro — on object storage you control.”</em></p>
<p>🧙‍♂️ “And it scales like a dream — object storage is effectively infinite, and cost-effective too.”</p>
<p>🧙‍♂️ “The lake doesn’t care what kind of data it is.<br />If it’s bytes — it belongs.”</p>
</blockquote>
<p>Jigyās, now with just the right amount of skepticism, smirks:</p>
<blockquote>
<p>🧑‍💻 <em>“So basically… if it breathes, throw it in the lake?”</em></p>
<p>🧙‍♂️ <em>“If it can be serialized, yes.”</em></p>
<p>🧑‍💻 <em>“Okay… so then what is a data lakehouse now?<br />Is it like… a data lake that is built inhouse?</em></p>
</blockquote>
<p>Jñānesh chuckles — this time almost giggling like a backend engineer who finally fixed a bug by removing one line of code.</p>
<blockquote>
<p>🧙‍♂️ <em>“You joke… but you're closer than you think.”</em></p>
<p>🧙‍♂️ <em>“A lakehouse is what happens when we try to bring the best parts of a warehouse — structure, governance, transactions — into the lake.”</em></p>
<p>🧙‍♂️ <em>“It’s not just storage. It’s not just schema-on-read. It’s structure layered over freedom.”</em><br /><em>“The lakehouse is what happens when you take the raw power of the lake… and give it discipline.”</em></p>
</blockquote>
<p>Jigyās leans in again, brow furrowed — not in panic this time, but in <strong>focused curiosity</strong>.</p>
<blockquote>
<p>🧑‍💻 <em>“So... wait. You're saying we can store raw logs, audio files, user events, and still query them with SQL?”</em></p>
<p>🧑‍💻 <em>“How to even update and delete records? Isn’t data in the object storage immutable”</em></p>
<p>🧑‍💻 <em>“Aren’t lakes just file dumps? How do you upsert into an object storage bucket?”</em></p>
<p>🧑‍💻 <em>“Also — what keeps things from falling apart?<br />There’s no strict schema, no table definitions. What if the format changes? Or someone writes partial files?”</em></p>
<p>🧑‍💻 <em>“Where’s the control? The lineage? The contract that says ‘this column will always be a timestamp’?”</em></p>
<p>🧑‍💻 <em>“And if things go wrong… how do I roll back? Do I just delete files manually from S3?”</em></p>
<p>🧑‍💻 <em>“Isn’t object storage supposed to be immutable anyway?”</em></p>
<p>🧑‍💻 <em>“And… what about performance? If everything’s dumped in folders, how do you even find what you need, let alone optimize it?”use?”</em></p>
</blockquote>
<p>Jñānesh doesn’t interrupt. He lets Jigyās go.</p>
<p>Finally, he smiles — not surprised, not smug — just… pleased.</p>
<blockquote>
<p>🧙‍♂️ <em>“Excellent questions. You're finally asking like an architect.”</em></p>
<p>🧙‍♂️ <em>“But instead of giving you answers… I want you to pause.”</em></p>
<p>🧙‍♂️ <em>“Think about this — what did you love about relational databases?”</em><br /><em>“What did warehouses make possible at scale?”</em><br /><em>“What did lakes unlock that neither could handle?”</em></p>
</blockquote>
<p>Jigyās blinks. He doesn’t answer — not yet. But he’s thinking.</p>
<p>And just before Jñānesh fades into the mental mist again...</p>
<blockquote>
<p>🧙‍♂️ <em>“Good. Think about it. That’s where we’ll start next.”</em></p>
<p>🧙‍♂️ <em>“Now if you’ll excuse me, Elon Musk is stuck debugging a merge conflict inside a time-traveling query on his Martian warehouse.”</em></p>
<p>🧙‍♂️ <em>“He has a rocket launch next week, and apparently the dashboard shows negative fuel usage. Can’t let that slide.”</em></p>
</blockquote>
<p>He vanishes — just a trace of wisdom left in the air.</p>
<p>Jigyās looks at the screen.<br />74 open tabs. 12 terminal windows. 4 open Notion pages.</p>
<p>But for once — his mind feels <strong>less cluttered than his browser</strong>.</p>
<blockquote>
<p>🧑‍💻 <em>“…a warehouse, a lake, and now a house on a lake. Who even names these things? I swear the next one will be a data submarine”</em></p>
</blockquote>
<p>He shakes his head, cracks his knuckles, and opens a new tab.</p>
<h3 id="heading-end-of-episode-2-the-warehouse-awakens-order-from-the-chaos">🏁 End of Episode 2: The Warehouse Awakens: Order from the Chaos</h3>
<p><strong>Next Up: Episode 3 — The Lake Learns to Wear a Hoodie</strong></p>
]]></content:encoded></item><item><title><![CDATA[Jigyās Gets the Task of a Lifetime]]></title><description><![CDATA[🌇 At a Startup somewhere Between Chaos and Coffee Machines
It was just another Tuesday morning.
The fan whirred. The Slack pings piled up. And Jigyās — backend engineer, tmux warrior, known procrastinator — was sipping his second cup of North Indian...]]></description><link>https://achyuthreddyyi.hashnode.dev/jigyas-gets-the-task-of-a-lifetime</link><guid isPermaLink="true">https://achyuthreddyyi.hashnode.dev/jigyas-gets-the-task-of-a-lifetime</guid><category><![CDATA[Data-lake]]></category><category><![CDATA[data lakehouse]]></category><category><![CDATA[Databases]]></category><category><![CDATA[databasemanagement]]></category><category><![CDATA[apache hudi]]></category><dc:creator><![CDATA[achyuth reddy]]></dc:creator><pubDate>Wed, 16 Apr 2025 12:55:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1744806281606/f2f7c976-b467-4eaa-9c22-7e3cf49eeacc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>🌇 At a Startup somewhere Between Chaos and Coffee Machines</p>
<p>It was just another Tuesday morning.</p>
<p>The fan whirred. The Slack pings piled up. And Jigyās — backend engineer, tmux warrior, known procrastinator — was sipping his second cup of North Indian filter coffee.</p>
<p>That’s when it hit him.</p>
<blockquote>
<p>💬 <em>“Hey Jigyās, can you take ownership of our new data lake infra?”</em></p>
</blockquote>
<p>His tech lead had dropped the message casually, as if building a data lake was like spinning up a Redis pod.</p>
<blockquote>
<p>“Of course!” he typed back, fingers moving faster than his neurons.</p>
</blockquote>
<h3 id="heading-who-is-jigyas">🤔 Who is Jigyās?</h3>
<p>Jigyās (yes, like <em>curiosity</em> in Sanskrit) is that developer we all know — ambitious, restless, and forever asking <em>“but why though?”</em></p>
<ul>
<li><p>He’s the guy who reads RFCs on a weekend, then forgets what he read by Monday.</p>
</li>
<li><p>He’s the guy who once Dockerized his rice cooker just to automate dinner.</p>
</li>
<li><p>He’s not foolish — but he asks foolish questions. The good kind.</p>
</li>
</ul>
<blockquote>
<p>Because Jigyās believes that asking dumb questions is how you get to smart answers.</p>
</blockquote>
<hr />
<h2 id="heading-the-confused-monologue-of-jigyas">🎙️ <strong>The Confused Monologue of Jigyās</strong></h2>
<p><em>Scene: Jigyās' room, 11:42 PM.</em> Under 156 browser tabs, neatly stacked into 8 groups—each overflowing with data lake jargon and Spark diagrams that looked like ancient rituals*. Mind melting.*</p>
<blockquote>
<p>🧑‍💻 <em>“Okay, so let me get this straight...”</em><br /><em>“A data lake is not a lake. A data lakehouse is not a house. And Apache Hudi has nothing to do with hoodies?”</em></p>
</blockquote>
<p>Jigyās paces around the room.</p>
<blockquote>
<p><em>“Apparently, I need a data ingestion layer… maybe Spark Streaming? Or should I use Flink? Wait, what even is DeltaStreamer? Sounds like a failed gaming channel.”</em></p>
<p><em>“And then there’s COW and MOR… Copy-On-Write? Merge-On-Read? Why does my data sound like it’s mooing?”</em></p>
<p><em>“Someone said I need a table format — like Iceberg or Delta or Hudi. Then someone else told me Hudi has something called a commit timeline. What is this, Git for data?”</em></p>
<p><em>“And I read something about metadata tables, compaction strategies, partition pruning, incremental queries, Upserts vs Inserts, schema evolution, Z-ordering, column pruning, data skipping—”</em></p>
</blockquote>
<p>He collapses into his chair.</p>
<hr />
<h2 id="heading-enter-jnanesh-the-data-whisperer">🧘‍♂️ Enter Jñānesh, the Data Whisperer</h2>
<p>Just as Jigyās was about to question his entire existence (and whether his rice cooker was a more manageable system than Apache Spark)...</p>
<p>A voice emerged — clear, calm, almost too serene for a room filled with terminal tabs and mental breakdowns.</p>
<blockquote>
<p>🧙‍♂️ <em>“Confused, are we?”</em></p>
</blockquote>
<p>Jigyās looked up.<br />He didn’t remember joining a Google Meet.<br />Or opening Zoom.<br />But there he was — <strong>Jñānesh</strong>. Draped in a data-neutral linen kurta. Calm as a cache hit.</p>
<hr />
<h3 id="heading-who-is-jnanesh">🧙 Who is Jñānesh?</h3>
<p>Some say he used to be a staff data engineer.<br />Some say he once optimized a Presto query so hard, it started giving life advice. No one really knows.</p>
<p>What’s certain is — when Jñānesh speaks, bytes listen.</p>
<ul>
<li><p>He doesn’t chase tech trends; he <em>questions</em> them.</p>
</li>
<li><p>He prefers clarity over cleverness.</p>
</li>
<li><p>And when it comes to data systems, he sees through the noise.</p>
</li>
</ul>
<hr />
<h2 id="heading-jargon-dump-round-2">🎯 Jargon Dump, Round 2</h2>
<blockquote>
<p>🧑‍💻 “Are you real?”<br />🧙‍♂️ “As real as your production bugs.”</p>
<p>🧑‍💻 “Okay listen... I’ve been trying to wrap my head around this lakehouse thing for 7 hours now.”</p>
<p>🧑‍💻 “Is it a warehouse sitting on a lake? Or a lake pretending to be a warehouse? Or a bunch of files pretending to be tables?”</p>
<p>🧑‍💻 “And why does Hudi need commit timelines? What is Trino doing in all of this? Is Iceberg better than Delta? What about catalog sync? Streaming ingestion? Instant rollbacks? Is MOR even production-ready?”</p>
<p>🧑‍💻 <em>“And why... why does everyone say schema evolution like it’s some Darwinian prophecy?”</em></p>
</blockquote>
<p>Jigyās, exhausted, stares at his terminal — which, at this point, is just blinking judgmentally.</p>
<hr />
<h3 id="heading-jnanesh-smiles">🧙 Jñānesh Smiles</h3>
<blockquote>
<p>🧙‍♂️ “You’ve walked into a temple mid-ritual and are confused why people are chanting.”</p>
<p>🧙‍♂️ “Before you understand the Lakehouse, you must understand <strong>why it exists.</strong>”</p>
<p>🧙‍♂️ “Let’s go back to the beginning. Not Hadoop. Not S3. Not even Spark.”</p>
<p>🧙‍♂️ <em>“Let’s begin with what you already know — the humble, dependable</em> <strong><em>relational database.*</em></strong>”*</p>
</blockquote>
<hr />
<blockquote>
<p>🧑‍💻 “Databases? Really?”</p>
<p>🧙‍♂️ “Yes, my young engineer. The answers you seek are downstream from the questions you’ve skipped.”</p>
</blockquote>
<h2 id="heading-back-to-basics-the-relational-awakening">🧱 Back to Basics — The Relational Awakening</h2>
<p>Jñānesh walks slowly toward Jigyās’s desk (which is mostly imaginary). He gestures at the terminal like a monk gesturing to a scroll.</p>
<blockquote>
<p>🧙‍♂️ “Let’s begin where all data began...<br />With rows, columns, and a very familiar friend: the <strong>relational database</strong>.”</p>
</blockquote>
<hr />
<blockquote>
<p>🧑‍💻 “Postgres? MySQL? Yeah, I’ve used them a hundred times.”</p>
<p>🧙‍♂️ “Indeed. Tools that store data in <strong>tables</strong>, with <strong>schemas</strong>, and follow the sacred rules of <strong>ACID</strong>.”<br /><em>Atomicity. Consistency. Isolation. Durability.</em><br />“Not just buzzwords — foundations.”</p>
</blockquote>
<p>Jñānesh draws a table on the whiteboard of Jigyās’s mind:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>id</td><td>name</td><td>age</td><td>created_at</td></tr>
</thead>
<tbody>
<tr>
<td>1</td><td>Alice</td><td>28</td><td>2023-09-12 10:00:00</td></tr>
<tr>
<td>2</td><td>Bob</td><td>35</td><td>2023-09-13 15:22:47</td></tr>
</tbody>
</table>
</div><blockquote>
<p>🧙‍♂️ “You query, you filter, you join.<br />You insert, update, delete.<br />And in most cases, it works beautifully.”</p>
</blockquote>
<hr />
<blockquote>
<p>🧑‍💻 “Yeah, I mean... I’ve built APIs, dashboards — even ran analytics queries on small tables. What’s the problem?”</p>
</blockquote>
<h2 id="heading-the-first-crack-volume">⚠️ The First Crack: Volume</h2>
<p>Jñānesh slowly circles the table.</p>
<blockquote>
<p>🧙‍♂️ “What if instead of 1,000 users… you had 10 million?”<br />“What if each user generates events, logs, clicks, sessions — every second of the day?”</p>
</blockquote>
<p>Jigyās nods, starting to feel the weight.</p>
<blockquote>
<p>🧙‍♂️ “Relational databases were built for <strong>transactions</strong>, not <strong>terabytes</strong>. They’re optimized for small, consistent reads and writes — not massive scans and aggregations across millions of rows.”</p>
<p>🧑‍💻 “So that’s when people started using… warehouses?”</p>
<p>🧙‍♂️ “Patience. First — tell me — what do you do when a system starts to slow down?”</p>
<p>🧑‍💻 “I… optimize queries, add indexes, maybe denormalize…”</p>
<p>🧙‍♂️ “Exactly. You start bending the system to behave like something it was never meant to be.”</p>
</blockquote>
<hr />
<h2 id="heading-the-evolution-of-need">🧠 The Evolution of Need</h2>
<p>Jñānesh continues:</p>
<blockquote>
<p>🧙‍♂️ “When systems shifted from <strong>storing records</strong> to <strong>analyzing patterns</strong>, the relational model started to break down.”</p>
<p>🧙‍♂️ “That’s when engineers asked — what if we build something optimized for <strong>analytical queries</strong> instead of transactional ones?”</p>
<p>🧙‍♂️ “Something that doesn’t get cranky when scanning billions of rows.”</p>
</blockquote>
<hr />
<blockquote>
<p>🧑‍💻 “So that’s the warehouse?”</p>
<p>🧙‍♂️ “Yes. The <strong>data warehouse</strong> was born to solve the scale and speed problem of relational databases — especially for <strong>OLAP</strong> (Online Analytical Processing).”</p>
</blockquote>
<hr />
<blockquote>
<p>🧑‍💻 “Wait, but I read something about columnar databases too... Like ClickHouse, Apache Doris, stuff like that. Don’t they solve this?”</p>
</blockquote>
<p>Jñānesh smiles.</p>
<blockquote>
<p>🧙‍♂️ “Good catch. Yes, columnar databases store data <em>by column</em> instead of by row — making them ideal for <strong>OLAP-style queries</strong> like <em>summing all sales amounts</em>, or <em>filtering by one column across millions of records</em>.”</p>
<p>🧙‍♂️ “But even they were part of the same shift — from <strong>row-oriented, transactional systems</strong> to <strong>analytical, column-based systems</strong>.”</p>
<p>🧙‍♂️ “And while some evolved into fast columnar stores, others became part of the architecture that gave birth to the <strong>data warehouse</strong> — the first real attempt to organize <em>big data</em> for business intelligence.”</p>
</blockquote>
<hr />
<blockquote>
<p>🧑‍💻 “So… we went from transactional databases → columnar systems → full-blown warehouses?”</p>
<p>🧙‍♂️ “In essence, yes. Each step was a response to scale, performance, and changing expectations.”</p>
</blockquote>
<h2 id="heading-a-pause-before-the-warehouse">🧘‍♂️ A Pause Before the Warehouse</h2>
<p>Jñānesh stood still, as if time had slowed.</p>
<blockquote>
<p>🧙‍♂️ “You’ve taken the first step, Jigyās. You’ve understood why relational databases, though powerful, weren’t built for what modern data needs.”</p>
<p>🧙‍♂️ “Before we dive into warehouses and lakes, take a moment. Sit with these questions.”</p>
</blockquote>
<hr />
<p>He raised a hand and spoke, softly but with intent:</p>
<blockquote>
<p>🧙‍♂️ “What kind of queries did your app run last month?<br />Were they transactional… or analytical?”</p>
<p>🧙‍♂️ “Have you seen the performance cost of joining large tables?<br />Or the limits of indexing when data hits hundreds of millions of rows?”</p>
<p>🧙‍♂️ “What does your business need: fast inserts… or fast insights?”</p>
</blockquote>
<hr />
<p>Jigyās blinked. For once, he wasn’t overwhelmed — just curious.</p>
<blockquote>
<p>🧑‍💻 “I think I get it. I need to look at <em>what the system is meant to do</em>, not just how cool the tools are.”</p>
</blockquote>
<p>Jñānesh nodded.</p>
<blockquote>
<p>🧙‍♂️ “Exactly. Tech is not a stack — it’s a story. We’ll continue ours tomorrow.”</p>
</blockquote>
<p>He turned to leave — probably to meditate on Spark commit logs.</p>
<hr />
<h3 id="heading-and-as-jigyas-leaned-back-in-his-chair">🪑 And as Jigyās leaned back in his chair...</h3>
<p>He wasn’t any less confused.</p>
<p>But for the first time in hours… he wasn’t panicking.</p>
<hr />
<h2 id="heading-coming-up-next">🔜 Coming Up Next:</h2>
<p><strong>Episode 2: Of Warehouses and Cubes — When Data Outgrew Databases</strong><br />Where Jñānesh returns to talk about:</p>
<ul>
<li><p>Batch processing</p>
</li>
<li><p>Star schemas</p>
</li>
<li><p>Why warehouses were better — but still not enough</p>
</li>
</ul>
<hr />
]]></content:encoded></item></channel></rss>