<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Elie Hannouch on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/elie-hannouch/</link><description>Articles written by Elie Hannouch on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 24 Feb 2026 15:47:27 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/elie-hannouch/index.xml" rel="self" type="application/rss+xml"/><item><title>MongoDB and the Raft Algorithm</title><link>https://foojayio.github.io/website/today/mongodb-and-the-raft-algorithm/</link><pubDate>Tue, 24 Feb 2026 15:47:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/mongodb-and-the-raft-algorithm/</guid><description>&lt;p&gt;&lt;a href="https://www.mongodb.com/docs/manual/replication/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=mongodb-raft-foojay&amp;amp;utm_term=tony.kim" target="_blank" rel="noopener noreferrer"&gt;MongoDB&amp;rsquo;s replica&lt;/a&gt;
 set architecture uses distributed consensus to ensure consistency, availability, and fault tolerance across nodes. At the core of this architecture is the &lt;strong&gt;Raft consensus algorithm&lt;/strong&gt;, which breaks the complexities of distributed consensus into manageable operations: leader election, log replication, and commitment. This document explores how MongoDB integrates and optimizes Raft for its high-performance replication needs.{#1c95}&lt;br&gt;
&lt;img src="https://miro.medium.com/v2/resize:fit:700/0*CAtq0SjCCYL4gRBY.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;h3 id="e650"&gt;Raft Roles and MongoDB&amp;rsquo;s Replica Set&lt;/h3&gt;
&lt;p&gt;In Raft, nodes can assume one of three roles: &lt;strong&gt;leader&lt;/strong&gt; , &lt;strong&gt;follower&lt;/strong&gt; , or &lt;strong&gt;candidate&lt;/strong&gt; . MongoDB maps these roles to its architecture seamlessly. The &lt;strong&gt;primary&lt;/strong&gt; node functions as the leader, handling all client write operations and coordinating replication. The &lt;strong&gt;secondaries&lt;/strong&gt; serve as followers, maintaining copies of the primary&amp;rsquo;s data. A node transitions to the &lt;strong&gt;candidate&lt;/strong&gt; role during an election, triggered by leader unavailability.{#5e79}&lt;/p&gt;</description></item><item><title>MongoDB and WiredTiger: A Journey Through the Storage Engine</title><link>https://foojayio.github.io/website/today/mongodb-and-wiredtiger-a-journey-through-the-storage-engine/</link><pubDate>Thu, 18 Dec 2025 20:26:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/mongodb-and-wiredtiger-a-journey-through-the-storage-engine/</guid><description>&lt;p&gt;Databases are the backbone of modern applications, and &lt;a href="https://www.mongodb.com/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=mongodb-wiredtiger-foojay&amp;amp;utm_term=tony.kim" target="_blank" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt;
 stands out with its flexibility and scalability. Central to its functionality is the WiredTiger storage engine. WiredTiger, as MongoDB&amp;rsquo;s default engine, seamlessly merges document-level concurrency for high throughput, advanced compression techniques for optimized storage, and an in-memory architecture for rapid data access.{#e668}&lt;/p&gt;
&lt;p&gt;With the addition of write-ahead logging for robust durability and the sophistication of MultiVersion Concurrency Control for snapshot-like data views, WiredTiger harmoniously orchestrates MongoDB&amp;rsquo;s data management.{#6fac}&lt;/p&gt;</description></item><item><title>Inside the Engine: Performance Relay of MongoDB 8.0</title><link>https://foojayio.github.io/website/today/inside-the-engine-the-sub-millisecond-performance-relay-of-mongodb-8-0/</link><pubDate>Tue, 16 Dec 2025 20:16:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/inside-the-engine-the-sub-millisecond-performance-relay-of-mongodb-8-0/</guid><description>&lt;figure class="aligncenter size-full is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" width="720" height="720" src="1_rM-JIRWo49QIKv-vZ4taEQ.webp" alt="" class="wp-image-121981" style="width:308px;height:auto"&gt;
&lt;/figure&gt;
&lt;p&gt;In environments where microseconds dictate competitive advantage, &lt;a href="https://www.mongodb.com/products/updates/version-release/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=mongodb-engine-foojay&amp;amp;utm_term=tony.kim" target="_blank" rel="noopener noreferrer"&gt;MongoDB 8.0&lt;/a&gt;
 delivers a meticulously tuned execution pipeline that transforms raw network packets into sub-millisecond query responses at global scale.{#e2e4}&lt;/p&gt;
&lt;p&gt;This reference traces a single trade query through every internal boundary network ingress, scheduling, security, parsing, planning, execution, storage‐engine internals, indexing, replication, sharding, change streams, time‐series buckets, backup, and monitoring illustrating how MongoDB 8.0&amp;rsquo;s per-CPU allocators, active-work profiling, SIMD-vectorized execution, adaptive bucketization, compact resume tokens, and refined journaling coalesce into a seamless, predictable performance engine.{#e2e4}&lt;/p&gt;</description></item><item><title>Building Systems That Know Why They Exist ~ When Data, Logic, and Intent Finally Align</title><link>https://foojayio.github.io/website/today/building-systems-that-know-why-they-exist-when-data-logic-and-intent-finally-align/</link><pubDate>Thu, 04 Dec 2025 19:06:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/building-systems-that-know-why-they-exist-when-data-logic-and-intent-finally-align/</guid><description>&lt;figure class="aligncenter size-medium"&gt;
 &lt;img fetchpriority="high" decoding="async" width="510" height="510" src="1_fKlXRaOCelfpXA_XhNaitA-510x510.webp" alt="" class="wp-image-121821"&gt;
&lt;/figure&gt;
&lt;p&gt;Every software system begins with intent. A human decision. A statement of what should exist, how it should behave, and why it matters. But somewhere along the way, that intent dies. It&amp;rsquo;s decomposed into documentation, user stories, and scattered logic. It becomes a shadow of itself fragmented across layers of code, processes, and people who no longer remember what it was meant to achieve.{#7cd1}&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve automated infrastructure. We&amp;rsquo;ve scripted configurations. We&amp;rsquo;ve even made AI write code for us. But we&amp;rsquo;ve never automated &lt;strong&gt;understanding&lt;/strong&gt; . Our systems execute brilliantly yet comprehend nothing. They operate without memory of purpose. They run, but they do not know &lt;em&gt;why&lt;/em&gt;.{#657d}&lt;/p&gt;</description></item><item><title>How MongoDB Decides What to Forget?</title><link>https://foojayio.github.io/website/today/how-mongodb-decides-what-to-forget/</link><pubDate>Tue, 28 Oct 2025 14:00:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-mongodb-decides-what-to-forget/</guid><description>&lt;figure class="aligncenter size-full is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" width="720" height="720" src="1_2RyMETT6diUSVGKdJPoQgQ.webp" alt="" class="wp-image-121588" style="width:368px;height:auto"&gt;
&lt;/figure&gt;
&lt;p&gt;Inside MongoDB&amp;rsquo;s storage engine, &lt;a href="https://www.mongodb.com/docs/manual/core/wiredtiger/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=mongodb-forget-foojay&amp;amp;utm_term=tony.kim" target="_blank" rel="noopener noreferrer"&gt;WiredTiger&lt;/a&gt;
, &lt;strong&gt;nothing happens by accident.&lt;/strong&gt;{#4cf7}&lt;/p&gt;
&lt;p&gt;Every page in &lt;a href="https://www.mongodb.com/docs/atlas/sizing-tier-selection/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=mongodb-forget-foojay&amp;amp;utm_term=tony.kim#memory" target="_blank" rel="noopener noreferrer"&gt;memory&lt;/a&gt;
 exists under policy &amp;mdash; governed, measured, and continuously evaluated against the limits of RAM, I/O bandwidth, and checkpoint cadence. Eviction is not cleanup. It&amp;rsquo;s &lt;strong&gt;runtime arbitration between volatility and durability&lt;/strong&gt;.{#ba51}&lt;/p&gt;
&lt;p&gt;When the process starts, WiredTiger allocates a fixed memory region known as the &lt;strong&gt;cache arena&lt;/strong&gt; typically 50% of physical RAM. Within that space live &lt;strong&gt;B-tree pages&lt;/strong&gt; : internal nodes, leaf nodes, and history-store entries. Each page carries operational metadata: &lt;strong&gt;dirty, clean, hazard-protected, in-use, last_access_time, and generation&lt;/strong&gt; . This metadata feeds into a &lt;strong&gt;per-page score&lt;/strong&gt;, which informs the eviction subsystem&amp;rsquo;s next decision.{#61cb}&lt;/p&gt;</description></item></channel></rss>