<!-- CANARY: REQ=REQ-DISTRIBUTED-001; FEATURE="Distributed Query Federation"; ASPECT=ModuleStructure; STATUS=TESTED; OWNER=distributed; UPDATED=2026-01-15 --> <p>Geode&rsquo;s distributed architecture enables enterprise-scale graph database deployments with transparent query coordination across multiple shards and nodes. This guide provides comprehensive coverage of the distributed query system, federation capabilities, sharding strategies, fault tolerance mechanisms, and performance optimization techniques.</p> <h3 id="overview" class="position-relative d-flex align-items-center group"> <span>Overview</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="overview" aria-haspopup="dialog" aria-label="Share link: Overview"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>The distributed architecture implements a <strong>scatter-gather</strong> query model with sophisticated optimization, connection pooling, and result merging strategies. The system is designed for both OLTP (online transaction processing) and OLAP (online analytical processing) workloads with minimal network overhead and intelligent load distribution.</p> <h4 id="key-capabilities" class="position-relative d-flex align-items-center group"> <span>Key Capabilities</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="key-capabilities" aria-haspopup="dialog" aria-label="Share link: Key Capabilities"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ul> <li><strong>Multi-Shard Execution</strong>: Query distribution across up to 32 shards</li> <li><strong>Federation Support</strong>: Transparent cross-cluster query execution</li> <li><strong>Intelligent Load Balancing</strong>: Dynamic shard assignment and connection pooling</li> <li><strong>Fault Tolerance</strong>: Automatic failover with retry mechanisms</li> <li><strong>Query Optimization</strong>: Cost-based planning with distributed awareness</li> <li><strong>Result Merging</strong>: Five strategies for efficient result aggregation</li> <li><strong>Connection Pooling</strong>: Efficient connection reuse with health monitoring</li> </ul> <h3 id="architecture-components" class="position-relative d-flex align-items-center group"> <span>Architecture Components</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="architecture-components" aria-haspopup="dialog" aria-label="Share link: Architecture Components"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="1-enhanced-query-coordinator" class="position-relative d-flex align-items-center group"> <span>1. Enhanced Query Coordinator</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="1-enhanced-query-coordinator" aria-haspopup="dialog" aria-label="Share link: 1. Enhanced Query Coordinator"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>The Query Coordinator orchestrates distributed query execution with comprehensive optimization:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">const</span><span class="w"> </span><span class="n">coordinator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">QueryCoordinator</span><span class="p">.</span><span class="n">init</span><span class="p">(</span><span class="n">allocator</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">defer</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">deinit</span><span class="p">();</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Execute distributed query across shards </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">executeDistributedQuery</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;MATCH (p:Person) WHERE p.age &gt; $min_age RETURN p.name, p.age&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">params</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">QueryOptions</span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">consistency_level</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">.</span><span class="n">eventual</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">use_cache</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">cache_ttl_ms</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">300000</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">timeout_ms</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">30000</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">defer</span><span class="w"> </span><span class="n">allocator</span><span class="p">.</span><span class="n">free</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">rows</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Core Features</strong>:</p> <ul> <li>Query analysis and shard targeting</li> <li>Advanced optimization with cost-based planning</li> <li>Five result merging strategies (union all, union distinct, merge sorted, hash aggregate, top-K)</li> <li>Query caching with configurable TTL</li> <li>Comprehensive metrics collection</li> </ul> <h4 id="2-query-transport-layer" class="position-relative d-flex align-items-center group"> <span>2. Query Transport Layer</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="2-query-transport-layer" aria-haspopup="dialog" aria-label="Share link: 2. Query Transport Layer"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Manages reliable communication between coordinator and shard nodes using QUIC protocol:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">var</span><span class="w"> </span><span class="n">transport</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">QueryTransport</span><span class="p">.</span><span class="n">init</span><span class="p">(</span><span class="n">allocator</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">defer</span><span class="w"> </span><span class="n">transport</span><span class="p">.</span><span class="n">deinit</span><span class="p">();</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Configure transport settings </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">transport</span><span class="p">.</span><span class="n">timeout_ms</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">45000</span><span class="p">;</span><span class="w"> </span><span class="c1">// 45 second timeout </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">transport</span><span class="p">.</span><span class="n">retry_attempts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span><span class="w"> </span><span class="c1">// 5 retry attempts </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Execute remote query with automatic retry </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">transport</span><span class="p">.</span><span class="n">executeRemoteQuery</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">node_id</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">query_text</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">params</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">defer</span><span class="w"> </span><span class="n">allocator</span><span class="p">.</span><span class="n">free</span><span class="p">(</span><span class="n">response</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Capabilities</strong>:</p> <ul> <li>QUIC-based communication for low latency</li> <li>Connection pooling with automatic cleanup</li> <li>Exponential backoff retry logic</li> <li>Health monitoring and failover</li> <li>TLS encryption for secure transport</li> </ul> <h4 id="3-connection-pool-management" class="position-relative d-flex align-items-center group"> <span>3. Connection Pool Management</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="3-connection-pool-management" aria-haspopup="dialog" aria-label="Share link: 3. Connection Pool Management"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Efficient connection reuse across distributed operations:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">var</span><span class="w"> </span><span class="n">pool</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ConnectionPool</span><span class="p">.</span><span class="n">init</span><span class="p">(</span><span class="n">allocator</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">);</span><span class="w"> </span><span class="c1">// 20 max connections </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">defer</span><span class="w"> </span><span class="n">pool</span><span class="p">.</span><span class="n">deinit</span><span class="p">();</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Get connection with automatic creation </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">connection</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">pool</span><span class="p">.</span><span class="n">getConnection</span><span class="p">(</span><span class="n">node_id</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Execute query on connection </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">connection</span><span class="p">.</span><span class="n">executeQuery</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">params</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Return to pool (automatic via defer) </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">defer</span><span class="w"> </span><span class="n">pool</span><span class="p">.</span><span class="n">releaseConnection</span><span class="p">(</span><span class="n">connection</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Features</strong>:</p> <ul> <li>Dynamic connection lifecycle management</li> <li>Health monitoring with automatic reconnection</li> <li>Connection timeout detection (10s heartbeat default)</li> <li>Configurable pool size (default: 20 connections)</li> <li>Thread-safe operation</li> </ul> <h3 id="query-distribution-model" class="position-relative d-flex align-items-center group"> <span>Query Distribution Model</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="query-distribution-model" aria-haspopup="dialog" aria-label="Share link: Query Distribution Model"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="scatter-gather-execution" class="position-relative d-flex align-items-center group"> <span>Scatter-Gather Execution</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="scatter-gather-execution" aria-haspopup="dialog" aria-label="Share link: Scatter-Gather Execution"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>The coordinator analyzes queries to determine shard distribution strategy:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Single</span><span class="err">-</span><span class="py">shard</span><span class="w"> </span><span class="kd">query</span><span class="w"> </span><span class="p">(</span><span class="nc">fast</span><span class="w"> </span><span class="py">path</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">12345</span><span class="err">&#39;</span><span class="p">})</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Multi</span><span class="err">-</span><span class="py">shard</span><span class="w"> </span><span class="kd">query</span><span class="w"> </span><span class="p">(</span><span class="nc">scatter</span><span class="err">-</span><span class="py">gather</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">30</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Aggregation</span><span class="w"> </span><span class="py">across</span><span class="w"> </span><span class="py">shards</span><span class="w"> </span><span class="p">(</span><span class="py">optimized</span><span class="w"> </span><span class="py">merge</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">COUNT</span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">total</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Execution Flow</strong>:</p> <ol> <li><strong>Query Analysis</strong>: Parse query to identify shard requirements</li> <li><strong>Shard Selection</strong>: Determine target shards based on predicates</li> <li><strong>Query Fragmentation</strong>: Rewrite query for each shard context</li> <li><strong>Parallel Execution</strong>: Execute fragments concurrently</li> <li><strong>Result Merging</strong>: Combine results using appropriate strategy</li> <li><strong>Response Assembly</strong>: Return unified result to client</li> </ol> <h4 id="query-fragmentation" class="position-relative d-flex align-items-center group"> <span>Query Fragmentation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="query-fragmentation" aria-haspopup="dialog" aria-label="Share link: Query Fragmentation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Queries are automatically rewritten for distributed execution:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Original query </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">original</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;MATCH (p:Person) WHERE p.age &gt; 30 RETURN p.name ORDER BY p.age LIMIT 10&#34;</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Fragmented for shard execution </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">fragments</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">fragmentQuery</span><span class="p">(</span><span class="n">original</span><span class="p">,</span><span class="w"> </span><span class="n">shard_count</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Each fragment: &#34;MATCH (p:Person) WHERE p.age &gt; 30 RETURN p.name, p.age ORDER BY p.age LIMIT 10&#34; </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Coordinator merges top-K results from each shard </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">final_result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">topKResults</span><span class="p">(</span><span class="n">fragments</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div> <h3 id="result-merging-strategies" class="position-relative d-flex align-items-center group"> <span>Result Merging Strategies</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="result-merging-strategies" aria-haspopup="dialog" aria-label="Share link: Result Merging Strategies"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>The coordinator implements five specialized merge strategies optimized for different query patterns:</p> <h4 id="1-union-all-no-deduplication" class="position-relative d-flex align-items-center group"> <span>1. Union All (No Deduplication)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="1-union-all-no-deduplication" aria-haspopup="dialog" aria-label="Share link: 1. Union All (No Deduplication)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Fastest merge strategy, concatenates results without removing duplicates:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">unionAllResults</span><span class="p">(</span><span class="n">shard_results</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">defer</span><span class="w"> </span><span class="n">allocator</span><span class="p">.</span><span class="n">free</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">rows</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Use Cases</strong>:</p> <ul> <li>Read-only queries without DISTINCT clause</li> <li>Aggregations where duplicates don&rsquo;t affect results</li> <li>High-throughput scenarios prioritizing speed</li> </ul> <p><strong>Performance</strong>: O(n) - linear with total result size</p> <h4 id="2-union-distinct-deduplication" class="position-relative d-flex align-items-center group"> <span>2. Union Distinct (Deduplication)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="2-union-distinct-deduplication" aria-haspopup="dialog" aria-label="Share link: 2. Union Distinct (Deduplication)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Removes duplicate rows across shard results:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">unionDistinctResults</span><span class="p">(</span><span class="n">shard_results</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">defer</span><span class="w"> </span><span class="n">allocator</span><span class="p">.</span><span class="n">free</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">rows</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Use Cases</strong>:</p> <ul> <li>Queries with DISTINCT clause</li> <li>Identity-based queries requiring unique results</li> <li>Cross-shard uniqueness guarantees</li> </ul> <p><strong>Performance</strong>: O(n log n) - hash-based deduplication</p> <h4 id="3-merge-sorted-order-preservation" class="position-relative d-flex align-items-center group"> <span>3. Merge Sorted (Order Preservation)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="3-merge-sorted-order-preservation" aria-haspopup="dialog" aria-label="Share link: 3. Merge Sorted (Order Preservation)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Merges pre-sorted shard results maintaining global sort order:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">mergeSortedResults</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">shard_results</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">QueryOptions</span><span class="p">{</span><span class="w"> </span><span class="p">.</span><span class="n">limit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="p">.</span><span class="n">offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">20</span><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">defer</span><span class="w"> </span><span class="n">allocator</span><span class="p">.</span><span class="n">free</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">rows</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Use Cases</strong>:</p> <ul> <li>Queries with ORDER BY clause</li> <li>Pagination with LIMIT/OFFSET</li> <li>Top-K queries requiring global ordering</li> </ul> <p><strong>Performance</strong>: O(n log k) - k-way merge with heap</p> <h4 id="4-hash-aggregate-grouping" class="position-relative d-flex align-items-center group"> <span>4. Hash Aggregate (Grouping)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="4-hash-aggregate-grouping" aria-haspopup="dialog" aria-label="Share link: 4. Hash Aggregate (Grouping)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Combines aggregation results using hash-based grouping:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">hashAggregateResults</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">shard_results</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">QueryOptions</span><span class="p">{</span><span class="w"> </span><span class="p">.</span><span class="n">limit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">50</span><span class="p">,</span><span class="w"> </span><span class="p">.</span><span class="n">offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">defer</span><span class="w"> </span><span class="n">allocator</span><span class="p">.</span><span class="n">free</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">rows</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Use Cases</strong>:</p> <ul> <li>GROUP BY queries</li> <li>Distributed aggregations (COUNT, SUM, AVG, MIN, MAX)</li> <li>Summary statistics across shards</li> </ul> <p><strong>Performance</strong>: O(n) - single-pass hash aggregation</p> <h4 id="5-top-k-optimization" class="position-relative d-flex align-items-center group"> <span>5. Top-K Optimization</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="5-top-k-optimization" aria-haspopup="dialog" aria-label="Share link: 5. Top-K Optimization"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Specialized merge for queries with ORDER BY + LIMIT:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">topKResults</span><span class="p">(</span><span class="n">shard_results</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">defer</span><span class="w"> </span><span class="n">allocator</span><span class="p">.</span><span class="n">free</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">rows</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Use Cases</strong>:</p> <ul> <li>Leaderboard queries</li> <li>Recent items queries</li> <li>Ranking and scoring scenarios</li> </ul> <p><strong>Performance</strong>: O(k log k) - only processes top-K from each shard</p> <h3 id="sharding-strategies" class="position-relative d-flex align-items-center group"> <span>Sharding Strategies</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="sharding-strategies" aria-haspopup="dialog" aria-label="Share link: Sharding Strategies"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="hash-based-sharding" class="position-relative d-flex align-items-center group"> <span>Hash-Based Sharding</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="hash-based-sharding" aria-haspopup="dialog" aria-label="Share link: Hash-Based Sharding"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Default sharding strategy using consistent hashing for predictable distribution:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Node is assigned to shard based on hash of ID </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">shard_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">hashShardId</span><span class="p">(</span><span class="n">node_id</span><span class="p">,</span><span class="w"> </span><span class="n">total_shards</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Query targeting specific shard </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">executeOnShard</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">shard_id</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;MATCH (p:Person {id: $id}) RETURN p&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">params</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Characteristics</strong>:</p> <ul> <li>Deterministic shard assignment</li> <li>Uniform distribution across shards</li> <li>Fast single-shard lookups</li> <li>Efficient for key-based queries</li> </ul> <h4 id="range-based-sharding" class="position-relative d-flex align-items-center group"> <span>Range-Based Sharding</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="range-based-sharding" aria-haspopup="dialog" aria-label="Share link: Range-Based Sharding"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Partition data by value ranges (e.g., timestamps, IDs):</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">automatically</span><span class="w"> </span><span class="py">routed</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">relevant</span><span class="w"> </span><span class="py">shards</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">e</span><span class="p">:</span><span class="nc">Event</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">e</span><span class="err">.</span><span class="py">timestamp</span><span class="w"> </span><span class="err">&gt;</span><span class="p">=</span><span class="w"> </span><span class="py">date</span><span class="p">(</span><span class="err">&#39;</span><span class="py">2025</span><span class="err">-</span><span class="py">01</span><span class="err">-</span><span class="py">01</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">e</span><span class="err">.</span><span class="py">timestamp</span><span class="w"> </span><span class="err">&lt;</span><span class="w"> </span><span class="py">date</span><span class="p">(</span><span class="err">&#39;</span><span class="py">2025</span><span class="err">-</span><span class="py">02</span><span class="err">-</span><span class="py">01</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">e</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Characteristics</strong>:</p> <ul> <li>Preserves data locality</li> <li>Efficient for range queries</li> <li>Supports time-series workloads</li> <li>Risk of uneven distribution (hot shards)</li> </ul> <h4 id="graph-partitioning" class="position-relative d-flex align-items-center group"> <span>Graph Partitioning</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="graph-partitioning" aria-haspopup="dialog" aria-label="Share link: Graph Partitioning"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Advanced partitioning minimizing cross-shard edges:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Co</span><span class="err">-</span><span class="py">locate</span><span class="w"> </span><span class="py">connected</span><span class="w"> </span><span class="py">nodes</span><span class="w"> </span><span class="py">when</span><span class="w"> </span><span class="py">possible</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">u</span><span class="p">:</span><span class="nc">User</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">FOLLOWS</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">friend</span><span class="p">:</span><span class="nc">User</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">id</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nv">$user_id</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">friend</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Characteristics</strong>:</p> <ul> <li>Minimizes network I/O for traversals</li> <li>Optimizes for graph locality</li> <li>Reduces cross-shard joins</li> <li>Requires offline partitioning computation</li> </ul> <h3 id="federation-and-cross-cluster-queries" class="position-relative d-flex align-items-center group"> <span>Federation and Cross-Cluster Queries</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="federation-and-cross-cluster-queries" aria-haspopup="dialog" aria-label="Share link: Federation and Cross-Cluster Queries"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="federation-setup" class="position-relative d-flex align-items-center group"> <span>Federation Setup</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="federation-setup" aria-haspopup="dialog" aria-label="Share link: Federation Setup"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Configure federation to query across multiple Geode clusters:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Register federated nodes </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">registerFederatedNode</span><span class="p">(</span><span class="n">FederatedNode</span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">node_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">address</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;cluster1.example.com&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3141</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">is_primary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">});</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">registerFederatedNode</span><span class="p">(</span><span class="n">FederatedNode</span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">node_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">address</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;cluster2.example.com&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3141</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">is_primary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">});</span><span class="w"> </span></span></span></code></pre></div> <h4 id="cross-cluster-queries" class="position-relative d-flex align-items-center group"> <span>Cross-Cluster Queries</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="cross-cluster-queries" aria-haspopup="dialog" aria-label="Share link: Cross-Cluster Queries"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Execute queries transparently across federated clusters:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">spans</span><span class="w"> </span><span class="py">both</span><span class="w"> </span><span class="py">clusters</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">u</span><span class="p">:</span><span class="nc">User</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">PURCHASED</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Product</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">region</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">US</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">category</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Electronics</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">price</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Coordinator handles</strong>:</p> <ul> <li>Automatic cluster routing based on data locality</li> <li>Network topology awareness</li> <li>Cross-cluster join optimization</li> <li>Result aggregation from multiple clusters</li> </ul> <h4 id="streaming-federated-results" class="position-relative d-flex align-items-center group"> <span>Streaming Federated Results</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="streaming-federated-results" aria-haspopup="dialog" aria-label="Share link: Streaming Federated Results"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>For large result sets, use streaming to reduce memory pressure:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Callback for processing result chunks </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">fn</span><span class="w"> </span><span class="n">handleResultChunk</span><span class="p">(</span><span class="n">chunk</span><span class="o">:</span><span class="w"> </span><span class="n">ResultChunk</span><span class="p">)</span><span class="w"> </span><span class="o">!</span><span class="kt">void</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">chunk</span><span class="p">.</span><span class="n">rows</span><span class="p">)</span><span class="w"> </span><span class="o">|</span><span class="n">row</span><span class="o">|</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">debug</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34;Received row: {}</span><span class="se">\n</span><span class="s">&#34;</span><span class="p">,</span><span class="w"> </span><span class="p">.{</span><span class="n">row</span><span class="p">});</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">chunk</span><span class="p">.</span><span class="n">is_final</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">debug</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34;Query completed</span><span class="se">\n</span><span class="s">&#34;</span><span class="p">,</span><span class="w"> </span><span class="p">.{});</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Execute streaming query </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">try</span><span class="w"> </span><span class="n">transport</span><span class="p">.</span><span class="n">streamRemoteQuery</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">node_id</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">federated_query</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">handleResultChunk</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div> <h3 id="load-balancing-and-fault-tolerance" class="position-relative d-flex align-items-center group"> <span>Load Balancing and Fault Tolerance</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="load-balancing-and-fault-tolerance" aria-haspopup="dialog" aria-label="Share link: Load Balancing and Fault Tolerance"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="dynamic-load-balancing" class="position-relative d-flex align-items-center group"> <span>Dynamic Load Balancing</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="dynamic-load-balancing" aria-haspopup="dialog" aria-label="Share link: Dynamic Load Balancing"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>The coordinator monitors shard load and distributes queries accordingly:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Coordinator tracks shard statistics </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">shard_stats</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">getShardStatistics</span><span class="p">();</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Automatic routing to least-loaded shard for read-only queries </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">executeWithLoadBalancing</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;MATCH (p:Person) RETURN COUNT(p)&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">params</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">QueryOptions</span><span class="p">{</span><span class="w"> </span><span class="p">.</span><span class="n">read_preference</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">.</span><span class="n">least_loaded</span><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Load Balancing Strategies</strong>:</p> <ul> <li><strong>Round-robin</strong>: Distribute evenly across all shards</li> <li><strong>Least-loaded</strong>: Route to shard with lowest active query count</li> <li><strong>Latency-based</strong>: Prefer shards with lowest response times</li> <li><strong>Locality-aware</strong>: Route to geographically closest shard</li> </ul> <h4 id="automatic-failover" class="position-relative d-flex align-items-center group"> <span>Automatic Failover</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="automatic-failover" aria-haspopup="dialog" aria-label="Share link: Automatic Failover"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Connection failures trigger automatic retry with exponential backoff:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Automatic retry with exponential backoff </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">var</span><span class="w"> </span><span class="n">attempts</span><span class="o">:</span><span class="w"> </span><span class="kt">u32</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">attempts</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">transport</span><span class="p">.</span><span class="n">retry_attempts</span><span class="p">)</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="p">(</span><span class="n">attempts</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">connection</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="o">|</span><span class="n">err</span><span class="o">|</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">attempts</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">transport</span><span class="p">.</span><span class="n">retry_attempts</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">err</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Exponential backoff: 100ms, 200ms, 400ms, 800ms, 1600ms </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="kr">const</span><span class="w"> </span><span class="n">delay_ms</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">@as</span><span class="p">(</span><span class="kt">u64</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="nb">@intCast</span><span class="p">(</span><span class="n">attempts</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">time</span><span class="p">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">delay_ms</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">time</span><span class="p">.</span><span class="n">ns_per_ms</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">continue</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">};</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="c1">// Success </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">}</span><span class="w"> </span></span></span></code></pre></div><p><strong>Fault Tolerance Features</strong>:</p> <ul> <li>Connection pool health monitoring</li> <li>Automatic reconnection on failure</li> <li>Exponential backoff retry (configurable attempts)</li> <li>Partial failure handling (return available results)</li> <li>Query timeout protection</li> </ul> <h4 id="partial-failure-handling" class="position-relative d-flex align-items-center group"> <span>Partial Failure Handling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="partial-failure-handling" aria-haspopup="dialog" aria-label="Share link: Partial Failure Handling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Gracefully handle scenarios where some shards fail:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">const</span><span class="w"> </span><span class="n">partial_results</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">executeBatchQueries</span><span class="p">(</span><span class="n">node_queries</span><span class="p">)</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="o">|</span><span class="n">err</span><span class="o">|</span><span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">error</span><span class="p">.</span><span class="n">PartialFailure</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Some shards succeeded, others failed </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">log</span><span class="p">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&#34;Partial query failure - some shards unavailable&#34;</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">partial_results</span><span class="p">;</span><span class="w"> </span><span class="c1">// Return available data </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="p">},</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">err</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">};</span><span class="w"> </span></span></span></code></pre></div> <h3 id="performance-characteristics" class="position-relative d-flex align-items-center group"> <span>Performance Characteristics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="performance-characteristics" aria-haspopup="dialog" aria-label="Share link: Performance Characteristics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="query-execution-performance" class="position-relative d-flex align-items-center group"> <span>Query Execution Performance</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="query-execution-performance" aria-haspopup="dialog" aria-label="Share link: Query Execution Performance"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Empirical performance data across different shard configurations:</p> <table> <thead> <tr> <th>Operation Type</th> <th>Single Node</th> <th>2 Shards</th> <th>4 Shards</th> <th>8 Shards</th> <th>Scaling</th> </tr> </thead> <tbody> <tr> <td>Simple MATCH</td> <td>10ms</td> <td>15ms</td> <td>20ms</td> <td>30ms</td> <td>Sub-linear</td> </tr> <tr> <td>Ordered Query (ORDER BY)</td> <td>50ms</td> <td>75ms</td> <td>100ms</td> <td>150ms</td> <td>Linear</td> </tr> <tr> <td>Aggregation (COUNT, SUM)</td> <td>100ms</td> <td>60ms</td> <td>40ms</td> <td>30ms</td> <td>Super-linear</td> </tr> <tr> <td>Top-K (LIMIT)</td> <td>80ms</td> <td>50ms</td> <td>35ms</td> <td>25ms</td> <td>Super-linear</td> </tr> </tbody> </table> <p><strong>Key Insights</strong>:</p> <ul> <li><strong>Aggregations benefit most</strong> from sharding (super-linear speedup)</li> <li><strong>Simple queries</strong> have moderate overhead (sub-linear scaling)</li> <li><strong>Ordered queries</strong> scale linearly with coordination cost</li> <li><strong>Top-K queries</strong> show excellent scaling with distributed execution</li> </ul> <h4 id="memory-usage" class="position-relative d-flex align-items-center group"> <span>Memory Usage</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="memory-usage" aria-haspopup="dialog" aria-label="Share link: Memory Usage"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Coordinator and transport layer memory characteristics:</p> <ul> <li><strong>Query Coordinator</strong>: ~1-5MB base memory + ~100KB per active query</li> <li><strong>Connection Pool</strong>: ~50KB per active connection</li> <li><strong>Query Cache</strong>: ~10MB default (configurable via <code>GEODE_QUERY_CACHE_MAX_ENTRIES</code>)</li> <li><strong>Result Merging</strong>: Memory scales with result set size and merge complexity</li> </ul> <h4 id="network-overhead" class="position-relative d-flex align-items-center group"> <span>Network Overhead</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="network-overhead" aria-haspopup="dialog" aria-label="Share link: Network Overhead"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Network I/O characteristics for distributed queries:</p> <ul> <li><strong>Query Distribution</strong>: ~1-5KB per shard (query + metadata)</li> <li><strong>Result Collection</strong>: Variable based on result size</li> <li><strong>QUIC Connection Overhead</strong>: ~2KB per connection</li> <li><strong>Retry Overhead</strong>: 2-3x base overhead for failed operations</li> </ul> <h3 id="configuration" class="position-relative d-flex align-items-center group"> <span>Configuration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="configuration" aria-haspopup="dialog" aria-label="Share link: Configuration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="coordinator-configuration" class="position-relative d-flex align-items-center group"> <span>Coordinator Configuration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="coordinator-configuration" aria-haspopup="dialog" aria-label="Share link: Coordinator Configuration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Configure query coordinator behavior:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Configure coordinator </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">coordinator</span><span class="p">.</span><span class="n">configure</span><span class="p">(</span><span class="n">CoordinatorConfig</span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">cache_enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">max_parallel_queries</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">});</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Set default query options </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">default_options</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">QueryOptions</span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">consistency_level</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">.</span><span class="n">eventual</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">use_cache</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="n">cache_ttl_ms</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">300000</span><span class="p">,</span><span class="w"> </span><span class="c1">// 5 minutes </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="p">.</span><span class="n">timeout_ms</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">30000</span><span class="p">,</span><span class="w"> </span><span class="c1">// 30 seconds </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span><span class="w"> </span></span></span></code></pre></div> <h4 id="environment-variables" class="position-relative d-flex align-items-center group"> <span>Environment Variables</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="environment-variables" aria-haspopup="dialog" aria-label="Share link: Environment Variables"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Configure distributed system via environment variables:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Cluster configuration</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CLUSTER_NAME</span><span class="o">=</span>production-cluster </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_NODE_ID</span><span class="o">=</span><span class="m">1</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_MAX_SHARDS</span><span class="o">=</span><span class="m">16</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Performance tuning</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_TIMEOUT_MS</span><span class="o">=</span><span class="m">30000</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_MAX_PARALLEL_QUERIES</span><span class="o">=</span><span class="m">10</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CONNECTION_POOL_SIZE</span><span class="o">=</span><span class="m">20</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Caching</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_ENABLED</span><span class="o">=</span><span class="nb">true</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_TTL_MS</span><span class="o">=</span><span class="m">300000</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_MAX_ENTRIES</span><span class="o">=</span><span class="m">1000</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Network settings</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_RETRY_ATTEMPTS</span><span class="o">=</span><span class="m">3</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CONNECTION_TIMEOUT_MS</span><span class="o">=</span><span class="m">5000</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_HEARTBEAT_INTERVAL_MS</span><span class="o">=</span><span class="m">10000</span> </span></span></code></pre></div> <h4 id="server-configuration-yaml" class="position-relative d-flex align-items-center group"> <span>Server Configuration (YAML)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="server-configuration-yaml" aria-haspopup="dialog" aria-label="Share link: Server Configuration (YAML)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Configure distributed settings in server configuration file:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">cluster</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">production-cluster</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">node_id</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">max_shards</span><span class="p">:</span><span class="w"> </span><span class="m">16</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">coordinator</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cache_enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">max_parallel_queries</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">query_timeout_ms</span><span class="p">:</span><span class="w"> </span><span class="m">30000</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">transport</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">connection_pool_size</span><span class="p">:</span><span class="w"> </span><span class="m">20</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">retry_attempts</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">connection_timeout_ms</span><span class="p">:</span><span class="w"> </span><span class="m">5000</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">heartbeat_interval_ms</span><span class="p">:</span><span class="w"> </span><span class="m">10000</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">cache</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ttl_ms</span><span class="p">:</span><span class="w"> </span><span class="m">300000</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">max_entries</span><span class="p">:</span><span class="w"> </span><span class="m">1000</span><span class="w"> </span></span></span></code></pre></div> <h3 id="monitoring-and-metrics" class="position-relative d-flex align-items-center group"> <span>Monitoring and Metrics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="monitoring-and-metrics" aria-haspopup="dialog" aria-label="Share link: Monitoring and Metrics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="coordinator-metrics" class="position-relative d-flex align-items-center group"> <span>Coordinator Metrics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="coordinator-metrics" aria-haspopup="dialog" aria-label="Share link: Coordinator Metrics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Comprehensive metrics for query coordination performance:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Get coordinator metrics </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">metrics</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">getMetrics</span><span class="p">();</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Example metrics structure: </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;coordinator&#34;</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;total_queries&#34;</span><span class="o">:</span><span class="w"> </span><span class="mi">15420</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;total_time_ms&#34;</span><span class="o">:</span><span class="w"> </span><span class="mi">1245000</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;average_time_ms&#34;</span><span class="o">:</span><span class="w"> </span><span class="mf">80.7</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;cache_hit_ratio&#34;</span><span class="o">:</span><span class="w"> </span><span class="mf">0.73</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;shard_queries&#34;</span><span class="o">:</span><span class="w"> </span><span class="mi">61680</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;average_shards_per_query&#34;</span><span class="o">:</span><span class="w"> </span><span class="mf">4.0</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;merge_time_ms&#34;</span><span class="o">:</span><span class="w"> </span><span class="mi">89000</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;average_merge_time_ms&#34;</span><span class="o">:</span><span class="w"> </span><span class="mf">5.8</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">},</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;transport&#34;</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;active_connections&#34;</span><span class="o">:</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;total_connections&#34;</span><span class="o">:</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;failed_connections&#34;</span><span class="o">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;retry_count&#34;</span><span class="o">:</span><span class="w"> </span><span class="mi">45</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;timeout_count&#34;</span><span class="o">:</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w"> </span></span></span></code></pre></div><p><strong>Key Metrics</strong>:</p> <ul> <li><strong>total_queries</strong>: Total distributed queries executed</li> <li><strong>cache_hit_ratio</strong>: Percentage of queries served from cache</li> <li><strong>average_shards_per_query</strong>: Average number of shards queried</li> <li><strong>average_merge_time_ms</strong>: Average time spent merging results</li> <li><strong>retry_count</strong>: Number of connection retries</li> <li><strong>timeout_count</strong>: Number of query timeouts</li> </ul> <h4 id="health-monitoring" class="position-relative d-flex align-items-center group"> <span>Health Monitoring</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="health-monitoring" aria-haspopup="dialog" aria-label="Share link: Health Monitoring"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Monitor connection pool health:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Connection health monitoring </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">pool</span><span class="p">.</span><span class="n">connections</span><span class="p">)</span><span class="w"> </span><span class="o">|</span><span class="n">connection</span><span class="o">|</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">connection</span><span class="p">.</span><span class="n">isHealthy</span><span class="p">())</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">log</span><span class="p">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&#34;Unhealthy connection to node {d}&#34;</span><span class="p">,</span><span class="w"> </span><span class="p">.{</span><span class="n">connection</span><span class="p">.</span><span class="n">node_id</span><span class="p">});</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Automatic recovery handled by connection pool </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="c1">// Manual intervention: pool.removeConnection(connection.node_id); </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w"> </span></span></span></code></pre></div><p><strong>Health Indicators</strong>:</p> <ul> <li>Connection heartbeat responses (10s default interval)</li> <li>Query timeout rates</li> <li>Retry attempt frequency</li> <li>Network error patterns</li> </ul> <h4 id="performance-profiling" class="position-relative d-flex align-items-center group"> <span>Performance Profiling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="performance-profiling" aria-haspopup="dialog" aria-label="Share link: Performance Profiling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Use PROFILE to analyze distributed query execution:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">PROFILE</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">30</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Profile Output</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Query Plan: </span></span><span class="line"><span class="cl">├─ Distributed Coordinator (30ms total) </span></span><span class="line"><span class="cl">│ ├─ Query Analysis (2ms) </span></span><span class="line"><span class="cl">│ ├─ Shard Selection (1ms, 4 shards targeted) </span></span><span class="line"><span class="cl">│ ├─ Parallel Execution (20ms) </span></span><span class="line"><span class="cl">│ │ ├─ Shard 1: 18ms (245 rows) </span></span><span class="line"><span class="cl">│ │ ├─ Shard 2: 20ms (312 rows) </span></span><span class="line"><span class="cl">│ │ ├─ Shard 3: 19ms (289 rows) </span></span><span class="line"><span class="cl">│ │ └─ Shard 4: 17ms (198 rows) </span></span><span class="line"><span class="cl">│ └─ Result Merging (7ms, union all strategy, 1044 rows) </span></span><span class="line"><span class="cl">└─ Total: 30ms, 1044 rows returned </span></span></code></pre></div> <h3 id="distributed-transactions" class="position-relative d-flex align-items-center group"> <span>Distributed Transactions</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="distributed-transactions" aria-haspopup="dialog" aria-label="Share link: Distributed Transactions"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="two-phase-commit-2pc" class="position-relative d-flex align-items-center group"> <span>Two-Phase Commit (2PC)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="two-phase-commit-2pc" aria-haspopup="dialog" aria-label="Share link: Two-Phase Commit (2PC)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Coordinate transactions across multiple shards:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Begin distributed transaction </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">distributed_txn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">txn_coordinator</span><span class="p">.</span><span class="n">beginDistributedTransaction</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">participating_nodes</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">isolation_level</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Execute queries within transaction </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">executeDistributedQuery</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">params</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">QueryOptions</span><span class="p">{</span><span class="w"> </span><span class="p">.</span><span class="n">transaction_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">distributed_txn</span><span class="p">.</span><span class="n">id</span><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Two-phase commit across shards </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">try</span><span class="w"> </span><span class="n">txn_coordinator</span><span class="p">.</span><span class="n">commitDistributedTransaction</span><span class="p">(</span><span class="n">distributed_txn</span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>2PC Protocol</strong>:</p> <ol> <li><strong>Prepare Phase</strong>: Coordinator sends PREPARE to all participants</li> <li><strong>Vote Collection</strong>: Wait for YES/NO votes from participants</li> <li><strong>Commit/Abort</strong>: Send COMMIT (all YES) or ABORT (any NO)</li> <li><strong>Acknowledgment</strong>: Wait for final ACKs from participants</li> </ol> <h4 id="distributed-transaction-isolation" class="position-relative d-flex align-items-center group"> <span>Distributed Transaction Isolation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="distributed-transaction-isolation" aria-haspopup="dialog" aria-label="Share link: Distributed Transaction Isolation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Support for distributed MVCC with Serializable Snapshot Isolation (SSI):</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Begin</span><span class="w"> </span><span class="py">distributed</span><span class="w"> </span><span class="py">transaction</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">SSI</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">BEGIN</span><span class="w"> </span><span class="py">TRANSACTION</span><span class="w"> </span><span class="py">ISOLATION</span><span class="w"> </span><span class="py">LEVEL</span><span class="w"> </span><span class="py">SERIALIZABLE</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Multi</span><span class="err">-</span><span class="py">shard</span><span class="w"> </span><span class="py">write</span><span class="w"> </span><span class="py">operations</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">u</span><span class="p">:</span><span class="nc">User</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">12345</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Alice</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">shard</span><span class="p">:</span><span class="w"> </span><span class="nc">1</span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Product</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">67890</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Laptop</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">shard</span><span class="p">:</span><span class="w"> </span><span class="nc">2</span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">u</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">PURCHASED</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">COMMIT</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Isolation Guarantees</strong>:</p> <ul> <li>Snapshot isolation across all shards</li> <li>Distributed deadlock detection</li> <li>Phantom read prevention via predicate locking</li> <li>Cross-shard consistency validation</li> </ul> <h3 id="security-in-distributed-queries" class="position-relative d-flex align-items-center group"> <span>Security in Distributed Queries</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="security-in-distributed-queries" aria-haspopup="dialog" aria-label="Share link: Security in Distributed Queries"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="authentication-and-authorization" class="position-relative d-flex align-items-center group"> <span>Authentication and Authorization</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="authentication-and-authorization" aria-haspopup="dialog" aria-label="Share link: Authentication and Authorization"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Distributed queries inherit authentication context:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Authenticate distributed query </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">auth_context</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">security</span><span class="p">.</span><span class="n">authenticateDistributedQuery</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">user_credentials</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">target_nodes</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Execute with security context </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">coordinator</span><span class="p">.</span><span class="n">executeDistributedQueryWithAuth</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">params</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">auth_context</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w"> </span></span></span></code></pre></div><p><strong>Security Features</strong>:</p> <ul> <li>TLS encryption for all inter-node communication</li> <li>Authentication propagation to all shards</li> <li>Row-Level Security (RLS) policy enforcement on each shard</li> <li>Audit logging for distributed operations</li> </ul> <h4 id="network-security" class="position-relative d-flex align-items-center group"> <span>Network Security</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="network-security" aria-haspopup="dialog" aria-label="Share link: Network Security"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>All distributed communication uses QUIC with TLS 1.3:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Configure TLS for cluster communication</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CLUSTER_TLS_CERT</span><span class="o">=</span>/path/to/cluster-cert.pem </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CLUSTER_TLS_KEY</span><span class="o">=</span>/path/to/cluster-key.pem </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CLUSTER_TLS_CA</span><span class="o">=</span>/path/to/ca-cert.pem </span></span></code></pre></div><p><strong>Security Guarantees</strong>:</p> <ul> <li>End-to-end encryption</li> <li>Mutual TLS authentication</li> <li>Certificate validation</li> <li>Perfect forward secrecy</li> </ul> <h3 id="best-practices" class="position-relative d-flex align-items-center group"> <span>Best Practices</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="best-practices" aria-haspopup="dialog" aria-label="Share link: Best Practices"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="query-design-for-distribution" class="position-relative d-flex align-items-center group"> <span>Query Design for Distribution</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="query-design-for-distribution" aria-haspopup="dialog" aria-label="Share link: Query Design for Distribution"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Optimize queries for distributed execution:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="err">❌</span><span class="w"> </span><span class="py">Bad</span><span class="p">:</span><span class="w"> </span><span class="nc">No</span><span class="w"> </span><span class="py">shard</span><span class="w"> </span><span class="py">targeting</span><span class="w"> </span><span class="p">(</span><span class="py">full</span><span class="w"> </span><span class="py">scan</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="err">✅</span><span class="w"> </span><span class="py">Good</span><span class="p">:</span><span class="w"> </span><span class="nc">Predicate</span><span class="w"> </span><span class="py">enables</span><span class="w"> </span><span class="py">shard</span><span class="w"> </span><span class="py">targeting</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nv">$user_id</span><span class="p">})</span><span class="w"> </span><span class="nc">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="err">✅</span><span class="w"> </span><span class="py">Good</span><span class="p">:</span><span class="w"> </span><span class="nc">Range</span><span class="w"> </span><span class="py">predicates</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">shard</span><span class="w"> </span><span class="py">pruning</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">e</span><span class="p">:</span><span class="nc">Event</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">e</span><span class="err">.</span><span class="py">timestamp</span><span class="w"> </span><span class="err">&gt;</span><span class="p">=</span><span class="w"> </span><span class="nv">$start</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">e</span><span class="err">.</span><span class="py">timestamp</span><span class="w"> </span><span class="err">&lt;</span><span class="w"> </span><span class="nv">$end</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">e</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="pagination-strategies" class="position-relative d-flex align-items-center group"> <span>Pagination Strategies</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="pagination-strategies" aria-haspopup="dialog" aria-label="Share link: Pagination Strategies"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Use efficient pagination for distributed queries:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="err">❌</span><span class="w"> </span><span class="py">Bad</span><span class="p">:</span><span class="w"> </span><span class="nc">Large</span><span class="w"> </span><span class="py">offset</span><span class="w"> </span><span class="py">requires</span><span class="w"> </span><span class="py">processing</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">skipped</span><span class="w"> </span><span class="py">rows</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="py">OFFSET</span><span class="w"> </span><span class="py">10000</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="err">✅</span><span class="w"> </span><span class="py">Good</span><span class="p">:</span><span class="w"> </span><span class="nc">Cursor</span><span class="err">-</span><span class="py">based</span><span class="w"> </span><span class="py">pagination</span><span class="w"> </span><span class="p">(</span><span class="py">stateful</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="nv">$last_seen_name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">10</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="connection-pool-tuning" class="position-relative d-flex align-items-center group"> <span>Connection Pool Tuning</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="connection-pool-tuning" aria-haspopup="dialog" aria-label="Share link: Connection Pool Tuning"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Size connection pool based on workload:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Low-concurrency workload (10-20 connections)</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CONNECTION_POOL_SIZE</span><span class="o">=</span><span class="m">15</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># High-concurrency workload (50-100 connections)</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CONNECTION_POOL_SIZE</span><span class="o">=</span><span class="m">75</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Monitor pool utilization</span> </span></span><span class="line"><span class="cl"><span class="c1"># - If pool is frequently exhausted: increase size</span> </span></span><span class="line"><span class="cl"><span class="c1"># - If most connections idle: decrease size</span> </span></span></code></pre></div> <h4 id="cache-configuration" class="position-relative d-flex align-items-center group"> <span>Cache Configuration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="cache-configuration" aria-haspopup="dialog" aria-label="Share link: Cache Configuration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Tune query cache based on query patterns:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Read-heavy workload with repeated queries</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_ENABLED</span><span class="o">=</span><span class="nb">true</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_TTL_MS</span><span class="o">=</span><span class="m">600000</span> <span class="c1"># 10 minutes</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_MAX_ENTRIES</span><span class="o">=</span><span class="m">5000</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Write-heavy workload with unique queries</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_ENABLED</span><span class="o">=</span><span class="nb">false</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Mixed workload</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_ENABLED</span><span class="o">=</span><span class="nb">true</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_TTL_MS</span><span class="o">=</span><span class="m">60000</span> <span class="c1"># 1 minute</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_CACHE_MAX_ENTRIES</span><span class="o">=</span><span class="m">1000</span> </span></span></code></pre></div> <h3 id="troubleshooting" class="position-relative d-flex align-items-center group"> <span>Troubleshooting</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="troubleshooting" aria-haspopup="dialog" aria-label="Share link: Troubleshooting"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="query-timeout-issues" class="position-relative d-flex align-items-center group"> <span>Query Timeout Issues</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="query-timeout-issues" aria-haspopup="dialog" aria-label="Share link: Query Timeout Issues"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptom</strong>: Queries failing with timeout errors</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Increase query timeout</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_QUERY_TIMEOUT_MS</span><span class="o">=</span><span class="m">60000</span> <span class="c1"># 60 seconds</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Increase connection timeout</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CONNECTION_TIMEOUT_MS</span><span class="o">=</span><span class="m">10000</span> <span class="c1"># 10 seconds</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Enable retry with more attempts</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_RETRY_ATTEMPTS</span><span class="o">=</span><span class="m">5</span> </span></span></code></pre></div> <h4 id="partial-failure-scenarios" class="position-relative d-flex align-items-center group"> <span>Partial Failure Scenarios</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="partial-failure-scenarios" aria-haspopup="dialog" aria-label="Share link: Partial Failure Scenarios"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptom</strong>: Some shards unavailable, partial results returned</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Check</span><span class="w"> </span><span class="py">coordinator</span><span class="w"> </span><span class="py">metrics</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">failed</span><span class="w"> </span><span class="py">connections</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Review</span><span class="w"> </span><span class="py">transport</span><span class="w"> </span><span class="py">layer</span><span class="w"> </span><span class="py">errors</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">logs</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Temporary</span><span class="w"> </span><span class="py">mitigation</span><span class="p">:</span><span class="w"> </span><span class="nc">reduce</span><span class="w"> </span><span class="py">shard</span><span class="w"> </span><span class="py">count</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">export</span><span class="w"> </span><span class="py">GEODE_MAX_SHARDS</span><span class="p">=</span><span class="py">8</span><span class="w"> </span><span class="c"># Reduce from 16</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Long</span><span class="err">-</span><span class="py">term</span><span class="w"> </span><span class="py">fix</span><span class="p">:</span><span class="w"> </span><span class="nc">investigate</span><span class="w"> </span><span class="py">shard</span><span class="w"> </span><span class="py">failures</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Check</span><span class="w"> </span><span class="py">network</span><span class="w"> </span><span class="py">connectivity</span><span class="p">,</span><span class="w"> </span><span class="py">shard</span><span class="w"> </span><span class="py">health</span><span class="p">,</span><span class="w"> </span><span class="py">resource</span><span class="w"> </span><span class="py">limits</span><span class="w"> </span></span></span></code></pre></div> <h4 id="high-network-overhead" class="position-relative d-flex align-items-center group"> <span>High Network Overhead</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="high-network-overhead" aria-haspopup="dialog" aria-label="Share link: High Network Overhead"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptom</strong>: Excessive network traffic, slow query performance</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Enable query result compression (future enhancement)</span> </span></span><span class="line"><span class="cl"><span class="c1"># Reduce result set size with projections</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Optimize queries to minimize cross-shard operations</span> </span></span><span class="line"><span class="cl"><span class="c1"># Use shard-aware queries when possible</span> </span></span></code></pre></div> <h4 id="connection-pool-exhaustion" class="position-relative d-flex align-items-center group"> <span>Connection Pool Exhaustion</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="connection-pool-exhaustion" aria-haspopup="dialog" aria-label="Share link: Connection Pool Exhaustion"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptom</strong>: &ldquo;No available connections&rdquo; errors</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Increase connection pool size</span> </span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_CONNECTION_POOL_SIZE</span><span class="o">=</span><span class="m">50</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Monitor active connections</span> </span></span><span class="line"><span class="cl"><span class="c1"># Review query patterns for connection leaks</span> </span></span><span class="line"><span class="cl"><span class="c1"># Check for long-running transactions holding connections</span> </span></span></code></pre></div> <h3 id="related-documentation" class="position-relative d-flex align-items-center group"> <span>Related Documentation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="related-documentation" aria-haspopup="dialog" aria-label="Share link: Related Documentation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><strong><a href="/docs/query/performance-tuning/" >Query Performance Tuning</a> </strong> - Optimize distributed query performance</li> <li><strong><a href="/docs/configuration/server-configuration/" >Server Configuration</a> </strong> - Complete server configuration reference</li> <li><strong><a href="/docs/transactions/advanced-patterns/" >Advanced Transaction Patterns</a> </strong> - Distributed transaction strategies</li> <li><strong><a href="/docs/guides/troubleshooting/" >Troubleshooting Guide</a> </strong> - Common distributed system issues</li> </ul> <h3 id="summary" class="position-relative d-flex align-items-center group"> <span>Summary</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="summary" aria-haspopup="dialog" aria-label="Share link: Summary"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Geode&rsquo;s distributed architecture provides enterprise-grade scalability with:</p> <ul> <li><strong>Transparent Distribution</strong>: Query coordination across up to 32 shards</li> <li><strong>Intelligent Optimization</strong>: Cost-based planning with distributed awareness</li> <li><strong>Fault Tolerance</strong>: Automatic failover and retry mechanisms</li> <li><strong>Performance</strong>: Super-linear speedup for aggregations and top-K queries</li> <li><strong>Security</strong>: TLS-encrypted communication with authentication propagation</li> <li><strong>Flexibility</strong>: Multiple sharding strategies and merge algorithms</li> </ul> <p>The system is production-ready with comprehensive monitoring, configurable behavior, and extensive testing (97.4% test pass rate). Use EXPLAIN and PROFILE commands to analyze distributed query execution and optimize performance for your specific workload.</p>