<!-- CANARY: REQ=REQ-GQL-024; FEATURE="Conformance Flagger"; ASPECT=ImplDefinedCollationAndNullOrdering; STATUS=TESTED; OWNER=engine; UPDATED=2025-09-21 --> <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 Geode Materialized Views System provides comprehensive view management with intelligent refresh strategies, dependency tracking, and query optimization. This system improves query performance for complex analytical queries by pre-computing and storing query results with enterprise-grade reliability.</p> <h4 id="what-are-materialized-views" class="position-relative d-flex align-items-center group"> <span>What are Materialized Views?</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="what-are-materialized-views" aria-haspopup="dialog" aria-label="Share link: What are Materialized Views?"> <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>Materialized Views</strong> are pre-computed query results stored as physical data structures that can be queried like regular tables. Unlike regular views (which re-execute the query each time), materialized views cache results for instant access.</p> <p><strong>Key Benefits</strong>:</p> <ul> <li><strong>Query Acceleration</strong>: Faster access to pre-computed results</li> <li><strong>Resource Efficiency</strong>: Compute once, query many times</li> <li><strong>Automatic Refresh</strong>: Keep data current with configurable strategies</li> <li><strong>Dependency Tracking</strong>: Automatic updates when source data changes</li> <li><strong>Query Rewriting</strong>: Optimizer automatically uses views when beneficial</li> </ul> <h3 id="architecture" class="position-relative d-flex align-items-center group"> <span>Architecture</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" aria-haspopup="dialog" aria-label="Share link: Architecture"> <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="system-components" class="position-relative d-flex align-items-center group"> <span>System 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="system-components" aria-haspopup="dialog" aria-label="Share link: System 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> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">MaterializedViewManager </span></span><span class="line"><span class="cl">├── ViewCatalog - Metadata and storage management </span></span><span class="line"><span class="cl">├── DependencyTracker - Table-view dependency detection </span></span><span class="line"><span class="cl">├── RefreshScheduler - Priority-based refresh scheduling </span></span><span class="line"><span class="cl">├── QueryRewriter - Automatic query optimization using views </span></span><span class="line"><span class="cl">└── ViewMetrics - Performance monitoring and statistics </span></span></code></pre></div> <h4 id="data-flow" class="position-relative d-flex align-items-center group"> <span>Data Flow</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="data-flow" aria-haspopup="dialog" aria-label="Share link: Data Flow"> <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><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">1. CREATE MATERIALIZED VIEW → Parse query, extract dependencies </span></span><span class="line"><span class="cl">2. ViewCatalog → Store metadata (source query, refresh strategy) </span></span><span class="line"><span class="cl">3. Initial Refresh → Execute source query, store results </span></span><span class="line"><span class="cl">4. DependencyTracker → Monitor source table changes </span></span><span class="line"><span class="cl">5. RefreshScheduler → Trigger refresh based on strategy </span></span><span class="line"><span class="cl">6. QueryRewriter → Match incoming queries to compatible views </span></span><span class="line"><span class="cl">7. Result → Return cached data (faster than re-computing) </span></span></code></pre></div> <h3 id="refresh-strategies" class="position-relative d-flex align-items-center group"> <span>Refresh 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="refresh-strategies" aria-haspopup="dialog" aria-label="Share link: Refresh 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="manual-refresh" class="position-relative d-flex align-items-center group"> <span>Manual Refresh</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="manual-refresh" aria-haspopup="dialog" aria-label="Share link: Manual Refresh"> <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>Use Case</strong>: Full control over refresh timing, analytical reports</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">Create</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">manual</span><span class="w"> </span><span class="py">refresh</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">quarterly_analytics</span><span class="w"> </span><span class="py">AS</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">s</span><span class="p">:</span><span class="nc">Sale</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">CONTAINS</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">s</span><span class="err">.</span><span class="py">quarter</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Q4</span><span class="err">-</span><span class="py">2025</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">p</span><span class="err">.</span><span class="py">category</span><span class="p">,</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">amount</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">total_sales</span><span class="p">,</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">s</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">sale_count</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">manual</span><span class="w"> </span></span></span></code></pre></div><p><strong>Characteristics</strong>:</p> <ul> <li>Refresh only on explicit command</li> <li>Lowest resource overhead</li> <li>Best for infrequently changing data</li> <li>Suitable for monthly/quarterly reports</li> </ul> <p><strong>Refresh Command</strong>:</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">Manually</span><span class="w"> </span><span class="py">refresh</span><span class="w"> </span><span class="py">view</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">REFRESH</span><span class="w"> </span><span class="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">quarterly_analytics</span><span class="w"> </span></span></span></code></pre></div> <h4 id="auto-immediate-refresh" class="position-relative d-flex align-items-center group"> <span>Auto-Immediate Refresh</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="auto-immediate-refresh" aria-haspopup="dialog" aria-label="Share link: Auto-Immediate Refresh"> <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>Use Case</strong>: Real-time dashboards, critical metrics</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">Create</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">immediate</span><span class="w"> </span><span class="py">refresh</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">real_time_metrics</span><span class="w"> </span><span class="py">AS</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">o</span><span class="p">:</span><span class="nc">Order</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">o</span><span class="err">.</span><span class="py">created_date</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">datetime</span><span class="p">()</span><span class="err">.</span><span class="py">subtract</span><span class="p">(</span><span class="py">PT1H</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">o</span><span class="err">.</span><span class="py">status</span><span class="p">,</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">o</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">order_count</span><span class="p">,</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">o</span><span class="err">.</span><span class="py">total</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">revenue</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_immediate</span><span class="w"> </span></span></span></code></pre></div><p><strong>Characteristics</strong>:</p> <ul> <li>Refreshes immediately when source data changes</li> <li>Always returns current data</li> <li>Higher resource usage</li> <li>Best for mission-critical dashboards</li> </ul> <p><strong>Behavior</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">1. Transaction commits to Order table </span></span><span class="line"><span class="cl">2. DependencyTracker detects change </span></span><span class="line"><span class="cl">3. RefreshScheduler queues immediate refresh </span></span><span class="line"><span class="cl">4. View refreshes within seconds </span></span><span class="line"><span class="cl">5. Next query sees updated data </span></span></code></pre></div> <h4 id="auto-scheduled-refresh" class="position-relative d-flex align-items-center group"> <span>Auto-Scheduled Refresh</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="auto-scheduled-refresh" aria-haspopup="dialog" aria-label="Share link: Auto-Scheduled Refresh"> <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>Use Case</strong>: Regular reports, hourly/daily aggregations</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">Create</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">hourly</span><span class="w"> </span><span class="py">refresh</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">user_activity_summary</span><span class="w"> </span><span class="py">AS</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="py">a</span><span class="p">:</span><span class="nc">ACTION</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">t</span><span class="p">:</span><span class="nc">Target</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">a</span><span class="err">.</span><span class="py">timestamp</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">datetime</span><span class="p">()</span><span class="err">.</span><span class="py">subtract</span><span class="p">(</span><span class="py">P30D</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">u</span><span class="err">.</span><span class="py">department</span><span class="p">,</span><span class="w"> </span><span class="py">t</span><span class="err">.</span><span class="kd">type</span><span class="p">,</span><span class="w"> </span><span class="nc">count</span><span class="p">(</span><span class="py">a</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">action_count</span><span class="p">,</span><span class="w"> </span><span class="py">avg</span><span class="p">(</span><span class="py">a</span><span class="err">.</span><span class="py">duration</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_duration</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_scheduled</span><span class="w"> </span><span class="py">INTERVAL</span><span class="w"> </span><span class="py">3600</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Every</span><span class="w"> </span><span class="py">hour</span><span class="w"> </span></span></span></code></pre></div><p><strong>Characteristics</strong>:</p> <ul> <li>Predictable refresh schedule</li> <li>Balanced resource usage</li> <li>Data freshness within refresh interval</li> <li>Best for periodic analytics</li> </ul> <p><strong>Configuration</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Default intervals</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">default_refresh_intervals</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">high_priority</span><span class="p">:</span><span class="w"> </span><span class="m">900</span><span class="w"> </span><span class="c"># 15 minutes</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">normal</span><span class="p">:</span><span class="w"> </span><span class="m">3600</span><span class="w"> </span><span class="c"># 1 hour</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">low_priority</span><span class="p">:</span><span class="w"> </span><span class="m">86400</span><span class="w"> </span><span class="c"># 24 hours</span><span class="w"> </span></span></span></code></pre></div> <h4 id="incremental-refresh" class="position-relative d-flex align-items-center group"> <span>Incremental Refresh</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="incremental-refresh" aria-haspopup="dialog" aria-label="Share link: Incremental Refresh"> <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>Use Case</strong>: Large views with small updates</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">Create</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">incremental</span><span class="w"> </span><span class="py">refresh</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">order_summary</span><span class="w"> </span><span class="py">AS</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">o</span><span class="p">:</span><span class="nc">Order</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">o</span><span class="err">.</span><span class="py">date</span><span class="p">,</span><span class="w"> </span><span class="py">o</span><span class="err">.</span><span class="py">region</span><span class="p">,</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">o</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">order_count</span><span class="p">,</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">o</span><span class="err">.</span><span class="py">amount</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">revenue</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">incremental</span><span class="w"> </span></span></span></code></pre></div><p><strong>Characteristics</strong>:</p> <ul> <li>Only processes changed rows</li> <li>Dramatically faster for large datasets</li> <li>Requires change tracking</li> <li>Best for append-only or small update patterns</li> </ul> <p><strong>Behavior</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">Initial Refresh: Process all 1M rows → 60 seconds </span></span><span class="line"><span class="cl">Incremental Refresh: Process 1K changed rows → 0.5 seconds (120x faster) </span></span></code></pre></div> <h4 id="streaming-refresh" class="position-relative d-flex align-items-center group"> <span>Streaming Refresh</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-refresh" aria-haspopup="dialog" aria-label="Share link: Streaming Refresh"> <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>Use Case</strong>: Continuous data feeds, real-time analytics</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">Create</span><span class="w"> </span><span class="py">streaming</span><span class="w"> </span><span class="py">view</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">live_sensor_data</span><span class="w"> </span><span class="py">AS</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">s</span><span class="p">:</span><span class="nc">Sensor</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">REPORTS</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">m</span><span class="p">:</span><span class="nc">Measurement</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">m</span><span class="err">.</span><span class="py">timestamp</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">datetime</span><span class="p">()</span><span class="err">.</span><span class="py">subtract</span><span class="p">(</span><span class="py">PT5M</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">s</span><span class="err">.</span><span class="py">id</span><span class="p">,</span><span class="w"> </span><span class="py">avg</span><span class="p">(</span><span class="py">m</span><span class="err">.</span><span class="py">value</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_value</span><span class="p">,</span><span class="w"> </span><span class="py">max</span><span class="p">(</span><span class="py">m</span><span class="err">.</span><span class="py">value</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">max_value</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">streaming</span><span class="w"> </span></span></span></code></pre></div><p><strong>Characteristics</strong>:</p> <ul> <li>Continuous incremental updates</li> <li>Sub-second data freshness</li> <li>Integrates with event streams</li> <li>Best for IoT, monitoring, real-time dashboards</li> </ul> <h3 id="creating-materialized-views" class="position-relative d-flex align-items-center group"> <span>Creating Materialized Views</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="creating-materialized-views" aria-haspopup="dialog" aria-label="Share link: Creating Materialized Views"> <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="basic-syntax" class="position-relative d-flex align-items-center group"> <span>Basic Syntax</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="basic-syntax" aria-haspopup="dialog" aria-label="Share link: Basic Syntax"> <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><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">CREATE</span><span class="w"> </span><span class="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">view_name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">&lt;</span><span class="py">GQL</span><span class="w"> </span><span class="kd">query</span><span class="err">&gt;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">[</span><span class="nc">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="err">&lt;</span><span class="py">strategy</span><span class="err">&gt;</span><span class="w"> </span><span class="p">[</span><span class="py">INTERVAL</span><span class="w"> </span><span class="err">&lt;</span><span class="py">seconds</span><span class="err">&gt;</span><span class="p">]]</span><span class="w"> </span></span></span></code></pre></div> <h4 id="simple-aggregation" class="position-relative d-flex align-items-center group"> <span>Simple Aggregation</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="simple-aggregation" aria-haspopup="dialog" aria-label="Share link: Simple Aggregation"> <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><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">Product</span><span class="w"> </span><span class="py">sales</span><span class="w"> </span><span class="py">summary</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">product_sales</span><span class="w"> </span><span class="py">AS</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">Product</span><span class="p">)</span><span class="err">&lt;-</span><span class="p">[:</span><span class="nc">CONTAINS</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">s</span><span class="p">:</span><span class="nc">Sale</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">category</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">s</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">sale_count</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">amount</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">total_revenue</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">avg</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">amount</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_sale</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_scheduled</span><span class="w"> </span><span class="py">INTERVAL</span><span class="w"> </span><span class="py">3600</span><span class="w"> </span></span></span></code></pre></div><p><strong>Benefit</strong>: Returns pre-computed results instead of scanning source data.</p> <h4 id="complex-join" class="position-relative d-flex align-items-center group"> <span>Complex Join</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="complex-join" aria-haspopup="dialog" aria-label="Share link: Complex Join"> <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><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">Customer</span><span class="w"> </span><span class="py">behavior</span><span class="w"> </span><span class="py">analysis</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">customer_insights</span><span class="w"> </span><span class="py">AS</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">c</span><span class="p">:</span><span class="nc">Customer</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">PLACED</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">o</span><span class="p">:</span><span class="nc">Order</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">CONTAINS</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">o</span><span class="err">.</span><span class="py">created_date</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">datetime</span><span class="p">()</span><span class="err">.</span><span class="py">subtract</span><span class="p">(</span><span class="py">P90D</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">c</span><span class="err">.</span><span class="py">segment</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">c</span><span class="err">.</span><span class="py">region</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">DISTINCT</span><span class="w"> </span><span class="py">o</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">order_count</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">DISTINCT</span><span class="w"> </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">unique_products</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">o</span><span class="err">.</span><span class="py">total</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">lifetime_value</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">avg</span><span class="p">(</span><span class="py">o</span><span class="err">.</span><span class="py">total</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_order_value</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_scheduled</span><span class="w"> </span><span class="py">INTERVAL</span><span class="w"> </span><span class="py">7200</span><span class="w"> </span></span></span></code></pre></div><p><strong>Benefits</strong>:</p> <ul> <li>Pre-computed joins eliminate join cost</li> <li>Aggregations computed once</li> <li>Perfect for dashboard queries</li> </ul> <h4 id="time-series-data" class="position-relative d-flex align-items-center group"> <span>Time-Series Data</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="time-series-data" aria-haspopup="dialog" aria-label="Share link: Time-Series Data"> <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><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">Daily</span><span class="w"> </span><span class="py">metrics</span><span class="w"> </span><span class="py">rollup</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">daily_metrics</span><span class="w"> </span><span class="py">AS</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">m</span><span class="p">:</span><span class="nc">Metric</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">m</span><span class="err">.</span><span class="py">timestamp</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">datetime</span><span class="p">()</span><span class="err">.</span><span class="py">subtract</span><span class="p">(</span><span class="py">P365D</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">date</span><span class="p">(</span><span class="py">m</span><span class="err">.</span><span class="py">timestamp</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">metric_date</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">m</span><span class="err">.</span><span class="kd">type</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nc">count</span><span class="p">(</span><span class="py">m</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">count</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">avg</span><span class="p">(</span><span class="py">m</span><span class="err">.</span><span class="py">value</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_value</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">percentile</span><span class="p">(</span><span class="py">m</span><span class="err">.</span><span class="py">value</span><span class="p">,</span><span class="w"> </span><span class="py">0</span><span class="mf">.95</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">p95_value</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">percentile</span><span class="p">(</span><span class="py">m</span><span class="err">.</span><span class="py">value</span><span class="p">,</span><span class="w"> </span><span class="py">0</span><span class="mf">.99</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">p99_value</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_scheduled</span><span class="w"> </span><span class="py">INTERVAL</span><span class="w"> </span><span class="py">86400</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Daily</span><span class="w"> </span></span></span></code></pre></div><p><strong>Use Case</strong>: Historical trend analysis, SLA reporting</p> <h3 id="querying-materialized-views" class="position-relative d-flex align-items-center group"> <span>Querying Materialized Views</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="querying-materialized-views" aria-haspopup="dialog" aria-label="Share link: Querying Materialized Views"> <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="direct-query" class="position-relative d-flex align-items-center group"> <span>Direct Query</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="direct-query" aria-haspopup="dialog" aria-label="Share link: Direct Query"> <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><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">the</span><span class="w"> </span><span class="py">materialized</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="py">directly</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">v</span><span class="p">:</span><span class="nc">product_sales</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">v</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">v</span><span class="err">.</span><span class="py">category</span><span class="p">,</span><span class="w"> </span><span class="py">v</span><span class="err">.</span><span class="py">total_revenue</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">v</span><span class="err">.</span><span class="py">total_revenue</span><span class="w"> </span><span class="py">DESC</span><span class="w"> </span></span></span></code></pre></div><p><strong>Characteristics</strong>:</p> <ul> <li>Instant results from cached data</li> <li>No re-computation</li> <li>Limited to pre-computed columns</li> </ul> <h4 id="automatic-query-rewriting" class="position-relative d-flex align-items-center group"> <span>Automatic Query Rewriting</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-query-rewriting" aria-haspopup="dialog" aria-label="Share link: Automatic Query Rewriting"> <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>Geode&rsquo;s optimizer automatically rewrites queries to use compatible materialized views:</p> <p><strong>Original Query</strong>:</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">MATCH</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="p">)</span><span class="err">&lt;-</span><span class="p">[:</span><span class="nc">CONTAINS</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">s</span><span class="p">:</span><span class="nc">Sale</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">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">p</span><span class="err">.</span><span class="py">category</span><span class="p">,</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">amount</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">revenue</span><span class="w"> </span></span></span></code></pre></div><p><strong>Optimizer Rewrite</strong>:</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">Automatically</span><span class="w"> </span><span class="py">uses</span><span class="w"> </span><span class="py">product_sales</span><span class="w"> </span><span class="py">view</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">v</span><span class="p">:</span><span class="nc">product_sales</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">v</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">v</span><span class="err">.</span><span class="py">category</span><span class="p">,</span><span class="w"> </span><span class="py">v</span><span class="err">.</span><span class="py">total_revenue</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">revenue</span><span class="w"> </span></span></span></code></pre></div><p><strong>Performance Impact</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">Original: 1.8 seconds </span></span><span class="line"><span class="cl">Rewritten: 0.015 seconds (120x speedup) </span></span></code></pre></div> <h4 id="view-compatibility" class="position-relative d-flex align-items-center group"> <span>View Compatibility</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="view-compatibility" aria-haspopup="dialog" aria-label="Share link: View Compatibility"> <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>Compatible Query</strong> (uses view):</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">Matches</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="py">structure</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">Product</span><span class="p">)</span><span class="err">&lt;-</span><span class="p">[:</span><span class="nc">CONTAINS</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">s</span><span class="p">:</span><span class="nc">Sale</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">category</span><span class="p">,</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">s</span><span class="p">)</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="err">✅</span><span class="w"> </span><span class="py">Uses</span><span class="w"> </span><span class="py">product_sales</span><span class="w"> </span><span class="py">view</span><span class="w"> </span></span></span></code></pre></div><p><strong>Incompatible Query</strong> (doesn&rsquo;t use view):</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">Different</span><span class="w"> </span><span class="py">aggregation</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">Product</span><span class="p">)</span><span class="err">&lt;-</span><span class="p">[:</span><span class="nc">CONTAINS</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">s</span><span class="p">:</span><span class="nc">Sale</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">brand</span><span class="p">,</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">s</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Grouped</span><span class="w"> </span><span class="py">by</span><span class="w"> </span><span class="py">brand</span><span class="p">,</span><span class="w"> </span><span class="py">not</span><span class="w"> </span><span class="py">category</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="err">❌</span><span class="w"> </span><span class="py">Cannot</span><span class="w"> </span><span class="py">use</span><span class="w"> </span><span class="py">product_sales</span><span class="w"> </span><span class="py">view</span><span class="w"> </span></span></span></code></pre></div> <h3 id="dependency-tracking" class="position-relative d-flex align-items-center group"> <span>Dependency Tracking</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="dependency-tracking" aria-haspopup="dialog" aria-label="Share link: Dependency Tracking"> <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="automatic-dependency-detection" class="position-relative d-flex align-items-center group"> <span>Automatic Dependency Detection</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-dependency-detection" aria-haspopup="dialog" aria-label="Share link: Automatic Dependency Detection"> <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>Geode automatically extracts table and relationship dependencies:</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">CREATE</span><span class="w"> </span><span class="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">user_summary</span><span class="w"> </span><span class="py">AS</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">POSTED</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">Post</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">HAS_TAG</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">t</span><span class="p">:</span><span class="nc">Tag</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">u</span><span class="err">.</span><span class="py">name</span><span class="p">,</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">post_count</span><span class="p">,</span><span class="w"> </span><span class="py">collect</span><span class="p">(</span><span class="py">DISTINCT</span><span class="w"> </span><span class="py">t</span><span class="err">.</span><span class="py">name</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">tags</span><span class="w"> </span></span></span></code></pre></div><p><strong>Detected Dependencies</strong>:</p> <ul> <li>Tables: User, Post, Tag</li> <li>Relationships: POSTED, HAS_TAG</li> <li>Change to any triggers refresh consideration</li> </ul> <h4 id="cascading-refreshes" class="position-relative d-flex align-items-center group"> <span>Cascading Refreshes</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="cascading-refreshes" aria-haspopup="dialog" aria-label="Share link: Cascading Refreshes"> <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>Dependency Chain</strong>:</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">Base</span><span class="w"> </span><span class="py">view</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">daily_sales</span><span class="w"> </span><span class="py">AS</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">s</span><span class="p">:</span><span class="nc">Sale</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">date</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">created_date</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">sale_date</span><span class="p">,</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">amount</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">revenue</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">Dependent</span><span class="w"> </span><span class="py">view</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">monthly_sales</span><span class="w"> </span><span class="py">AS</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">d</span><span class="p">:</span><span class="nc">daily_sales</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">year_month</span><span class="p">(</span><span class="py">d</span><span class="err">.</span><span class="py">sale_date</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">month</span><span class="p">,</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">d</span><span class="err">.</span><span class="py">revenue</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">monthly_revenue</span><span class="w"> </span></span></span></code></pre></div><p><strong>Refresh Behavior</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">1. Sale table updated </span></span><span class="line"><span class="cl">2. daily_sales refresh triggered </span></span><span class="line"><span class="cl">3. DependencyTracker detects monthly_sales depends on daily_sales </span></span><span class="line"><span class="cl">4. monthly_sales refresh queued after daily_sales completes </span></span><span class="line"><span class="cl">5. Cascade preserves consistency </span></span></code></pre></div> <h4 id="change-detection" class="position-relative d-flex align-items-center group"> <span>Change Detection</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="change-detection" aria-haspopup="dialog" aria-label="Share link: Change Detection"> <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>Change Log</strong>:</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">pub</span><span class="w"> </span><span class="kr">const</span><span class="w"> </span><span class="n">ChangeLogEntry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">struct</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">table_name</span><span class="o">:</span><span class="w"> </span><span class="p">[]</span><span class="kr">const</span><span class="w"> </span><span class="kt">u8</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">change_type</span><span class="o">:</span><span class="w"> </span><span class="n">ChangeType</span><span class="p">,</span><span class="w"> </span><span class="c1">// INSERT, UPDATE, DELETE </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="n">timestamp</span><span class="o">:</span><span class="w"> </span><span class="kt">i64</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">row_count</span><span class="o">:</span><span class="w"> </span><span class="kt">u32</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">processed</span><span class="o">:</span><span class="w"> </span><span class="kt">bool</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>Incremental Refresh Logic</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">1. Track changes since last refresh </span></span><span class="line"><span class="cl">2. Apply only delta changes to view </span></span><span class="line"><span class="cl">3. Update view statistics </span></span><span class="line"><span class="cl">4. Mark changes as processed </span></span></code></pre></div> <h3 id="performance-monitoring" class="position-relative d-flex align-items-center group"> <span>Performance 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="performance-monitoring" aria-haspopup="dialog" aria-label="Share link: Performance 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> </h3> <h4 id="view-statistics" class="position-relative d-flex align-items-center group"> <span>View Statistics</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="view-statistics" aria-haspopup="dialog" aria-label="Share link: View Statistics"> <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><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">Get</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="py">performance</span><span class="w"> </span><span class="py">metrics</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CALL</span><span class="w"> </span><span class="py">db</span><span class="err">.</span><span class="py">view</span><span class="err">.</span><span class="py">stats</span><span class="p">(</span><span class="err">&#39;</span><span class="py">product_sales</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span></span></span></code></pre></div><p><strong>Output</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;total_refreshes&#34;</span><span class="p">:</span> <span class="mi">240</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;successful_refreshes&#34;</span><span class="p">:</span> <span class="mi">238</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;failed_refreshes&#34;</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;average_refresh_time_ms&#34;</span><span class="p">:</span> <span class="mi">1250</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;total_query_hits&#34;</span><span class="p">:</span> <span class="mi">15420</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;cache_hit_ratio&#34;</span><span class="p">:</span> <span class="mf">0.98</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;last_refresh&#34;</span><span class="p">:</span> <span class="s2">&#34;2026-01-24T10:30:00Z&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;next_refresh&#34;</span><span class="p">:</span> <span class="s2">&#34;2026-01-24T11:30:00Z&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;storage_mb&#34;</span><span class="p">:</span> <span class="mf">45.2</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="system-statistics" class="position-relative d-flex align-items-center group"> <span>System Statistics</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="system-statistics" aria-haspopup="dialog" aria-label="Share link: System Statistics"> <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><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">Get</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">views</span><span class="w"> </span><span class="py">overview</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CALL</span><span class="w"> </span><span class="py">db</span><span class="err">.</span><span class="py">view</span><span class="err">.</span><span class="py">list</span><span class="p">()</span><span class="w"> </span></span></span></code></pre></div><p><strong>Output</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;total_views&#34;</span><span class="p">:</span> <span class="mi">12</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;active_refreshes&#34;</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;total_storage_gb&#34;</span><span class="p">:</span> <span class="mf">2.4</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;average_cache_hit_ratio&#34;</span><span class="p">:</span> <span class="mf">0.95</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;refresh_success_rate&#34;</span><span class="p">:</span> <span class="mf">0.992</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="performance-metrics" class="position-relative d-flex align-items-center group"> <span>Performance 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="performance-metrics" aria-haspopup="dialog" aria-label="Share link: Performance 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><strong>Collected Metrics</strong>:</p> <ul> <li><strong>total_refreshes</strong>: Lifetime refresh count</li> <li><strong>successful_refreshes</strong>: Successful refresh operations</li> <li><strong>failed_refreshes</strong>: Failed refresh attempts</li> <li><strong>average_refresh_time_ms</strong>: Mean refresh duration</li> <li><strong>total_query_hits</strong>: View usage count</li> <li><strong>last_query_hit_timestamp</strong>: Most recent query</li> <li><strong>cache_hit_ratio</strong>: Queries served from view vs re-executed</li> <li><strong>storage_efficiency</strong>: Compression ratio vs raw data</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="view-manager-settings" class="position-relative d-flex align-items-center group"> <span>View Manager Settings</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="view-manager-settings" aria-haspopup="dialog" aria-label="Share link: View Manager Settings"> <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><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># config/views.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">materialized_views</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">max_views</span><span class="p">:</span><span class="w"> </span><span class="m">1000</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">max_view_size_mb</span><span class="p">:</span><span class="w"> </span><span class="m">1024</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">default_refresh_interval_seconds</span><span class="p">:</span><span class="w"> </span><span class="m">3600</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enable_auto_refresh</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">enable_incremental_refresh</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_concurrent_refreshes</span><span class="p">:</span><span class="w"> </span><span class="m">4</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">refresh_timeout_seconds</span><span class="p">:</span><span class="w"> </span><span class="m">1800</span><span class="w"> </span></span></span></code></pre></div><p><strong>Options Explained</strong>:</p> <ul> <li><strong>max_views</strong>: Maximum concurrent materialized views</li> <li><strong>max_view_size_mb</strong>: Per-view storage limit</li> <li><strong>default_refresh_interval_seconds</strong>: Default auto-scheduled interval</li> <li><strong>enable_auto_refresh</strong>: Global auto-refresh toggle</li> <li><strong>enable_incremental_refresh</strong>: Enable incremental refresh capability</li> <li><strong>max_concurrent_refreshes</strong>: Parallel refresh limit</li> <li><strong>refresh_timeout_seconds</strong>: Refresh operation timeout</li> </ul> <h4 id="refresh-priority" class="position-relative d-flex align-items-center group"> <span>Refresh Priority</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="refresh-priority" aria-haspopup="dialog" aria-label="Share link: Refresh Priority"> <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><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="kr">pub</span><span class="w"> </span><span class="kr">const</span><span class="w"> </span><span class="n">RefreshPriority</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">enum</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">immediate</span><span class="p">,</span><span class="w"> </span><span class="c1">// &lt;1 minute </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="n">high</span><span class="p">,</span><span class="w"> </span><span class="c1">// &lt;15 minutes </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="n">normal</span><span class="p">,</span><span class="w"> </span><span class="c1">// &lt;1 hour </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="n">low</span><span class="p">,</span><span class="w"> </span><span class="c1">// &lt;24 hours </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="n">background</span><span class="p">,</span><span class="w"> </span><span class="c1">// Best effort </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>Priority Queue</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">Immediate → High → Normal → Low → Background </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl">Scheduling: </span></span><span class="line"><span class="cl">- Immediate: Pre-empts normal operations </span></span><span class="line"><span class="cl">- High: Priority over normal queries </span></span><span class="line"><span class="cl">- Normal: Standard priority </span></span><span class="line"><span class="cl">- Low: Off-peak hours preferred </span></span><span class="line"><span class="cl">- Background: Idle time only </span></span></code></pre></div> <h3 id="advanced-features" class="position-relative d-flex align-items-center group"> <span>Advanced Features</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="advanced-features" aria-haspopup="dialog" aria-label="Share link: Advanced Features"> <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="partitioned-views" class="position-relative d-flex align-items-center group"> <span>Partitioned Views</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="partitioned-views" aria-haspopup="dialog" aria-label="Share link: Partitioned Views"> <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><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">Create</span><span class="w"> </span><span class="py">partitioned</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="py">by</span><span class="w"> </span><span class="py">date</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">sales_by_date</span><span class="w"> </span><span class="py">PARTITION</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">date</span><span class="w"> </span><span class="py">AS</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">s</span><span class="p">:</span><span class="nc">Sale</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">date</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">created_date</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">sale_date</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">s</span><span class="err">.</span><span class="py">region</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">amount</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">revenue</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">incremental</span><span class="w"> </span></span></span></code></pre></div><p><strong>Benefits</strong>:</p> <ul> <li>Refresh only affected partitions</li> <li>Parallel partition processing</li> <li>Efficient data pruning</li> <li>Better compression</li> </ul> <h4 id="view-chaining" class="position-relative d-flex align-items-center group"> <span>View Chaining</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="view-chaining" aria-haspopup="dialog" aria-label="Share link: View Chaining"> <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><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">Base</span><span class="w"> </span><span class="py">view</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">hourly_metrics</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="kd">...</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">Derived</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="p">(</span><span class="py">uses</span><span class="w"> </span><span class="py">base</span><span class="w"> </span><span class="py">view</span><span class="p">)</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">daily_summary</span><span class="w"> </span><span class="py">AS</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">h</span><span class="p">:</span><span class="nc">hourly_metrics</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">date</span><span class="p">(</span><span class="py">h</span><span class="err">.</span><span class="py">timestamp</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">metric_date</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">avg</span><span class="p">(</span><span class="py">h</span><span class="err">.</span><span class="py">value</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_daily_value</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_scheduled</span><span class="w"> </span><span class="py">INTERVAL</span><span class="w"> </span><span class="py">86400</span><span class="w"> </span></span></span></code></pre></div><p><strong>Benefits</strong>:</p> <ul> <li>Compose complex analytics pipelines</li> <li>Reuse intermediate results</li> <li>Optimize storage (base view can be pruned)</li> </ul> <h4 id="custom-refresh-logic" class="position-relative d-flex align-items-center group"> <span>Custom Refresh Logic</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="custom-refresh-logic" aria-haspopup="dialog" aria-label="Share link: Custom Refresh Logic"> <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><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zig" data-lang="zig"><span class="line"><span class="cl"><span class="c1">// Custom refresh trigger </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">refreshOnThreshold</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">view_name</span><span class="o">:</span><span class="w"> </span><span class="p">[]</span><span class="kr">const</span><span class="w"> </span><span class="kt">u8</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">threshold_rows</span><span class="o">:</span><span class="w"> </span><span class="kt">u32</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 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="kr">const</span><span class="w"> </span><span class="n">change_count</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">getChangeCount</span><span class="p">(</span><span class="n">view_name</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">change_count</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">threshold_rows</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">try</span><span class="w"> </span><span class="n">refreshView</span><span class="p">(</span><span class="n">view_name</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></code></pre></div> <h3 id="use-cases" class="position-relative d-flex align-items-center group"> <span>Use Cases</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="use-cases" aria-haspopup="dialog" aria-label="Share link: Use Cases"> <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="real-time-dashboards" class="position-relative d-flex align-items-center group"> <span>Real-Time Dashboards</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="real-time-dashboards" aria-haspopup="dialog" aria-label="Share link: Real-Time Dashboards"> <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><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">Active</span><span class="w"> </span><span class="py">users</span><span class="w"> </span><span class="py">dashboard</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">active_users_now</span><span class="w"> </span><span class="py">AS</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">SESSION</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">s</span><span class="p">:</span><span class="nc">Session</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">s</span><span class="err">.</span><span class="py">last_seen</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">datetime</span><span class="p">()</span><span class="err">.</span><span class="py">subtract</span><span class="p">(</span><span class="py">PT15M</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">count</span><span class="p">(</span><span class="py">DISTINCT</span><span class="w"> </span><span class="py">u</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">active_users</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">s</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">total_sessions</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">avg</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">duration_seconds</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_session_duration</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_immediate</span><span class="w"> </span></span></span></code></pre></div><p><strong>Dashboard Integration</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="c1">// Frontend refreshes every 30 seconds </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">setInterval</span><span class="p">(</span><span class="kr">async</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">metrics</span> <span class="o">=</span> <span class="kr">await</span> <span class="nx">query</span><span class="p">(</span><span class="s1">&#39;MATCH (v:active_users_now) RETURN v&#39;</span><span class="p">);</span> </span></span><span class="line"><span class="cl"> <span class="nx">updateDashboard</span><span class="p">(</span><span class="nx">metrics</span><span class="p">);</span> </span></span><span class="line"><span class="cl"><span class="p">},</span> <span class="mi">30000</span><span class="p">);</span> </span></span></code></pre></div> <h4 id="analytical-reporting" class="position-relative d-flex align-items-center group"> <span>Analytical Reporting</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="analytical-reporting" aria-haspopup="dialog" aria-label="Share link: Analytical Reporting"> <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><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">Monthly</span><span class="w"> </span><span class="py">sales</span><span class="w"> </span><span class="py">report</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">monthly_sales_report</span><span class="w"> </span><span class="py">AS</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">s</span><span class="p">:</span><span class="nc">Sale</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">SOLD_BY</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">rep</span><span class="p">:</span><span class="nc">SalesRep</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">s</span><span class="err">.</span><span class="py">created_date</span><span class="w"> </span><span class="err">&gt;</span><span class="p">=</span><span class="w"> </span><span class="py">startOfMonth</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">rep</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">rep</span><span class="err">.</span><span class="py">region</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">s</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">deals_closed</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">amount</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">total_revenue</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">avg</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">amount</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_deal_size</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">percentile</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">amount</span><span class="p">,</span><span class="w"> </span><span class="py">0</span><span class="mf">.5</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">median_deal</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_scheduled</span><span class="w"> </span><span class="py">INTERVAL</span><span class="w"> </span><span class="py">3600</span><span class="w"> </span></span></span></code></pre></div> <h4 id="customer-segmentation" class="position-relative d-flex align-items-center group"> <span>Customer Segmentation</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="customer-segmentation" aria-haspopup="dialog" aria-label="Share link: Customer Segmentation"> <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><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">Customer</span><span class="w"> </span><span class="py">lifetime</span><span class="w"> </span><span class="py">value</span><span class="w"> </span><span class="py">segments</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">customer_segments</span><span class="w"> </span><span class="py">AS</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">c</span><span class="p">:</span><span class="nc">Customer</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">PLACED</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">o</span><span class="p">:</span><span class="nc">Order</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">c</span><span class="p">,</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">o</span><span class="err">.</span><span class="py">total</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">ltv</span><span class="p">,</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">o</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">order_count</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">CASE</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">WHEN</span><span class="w"> </span><span class="py">ltv</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">10000</span><span class="w"> </span><span class="py">THEN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">VIP</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">WHEN</span><span class="w"> </span><span class="py">ltv</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">5000</span><span class="w"> </span><span class="py">THEN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">High</span><span class="w"> </span><span class="py">Value</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">WHEN</span><span class="w"> </span><span class="py">ltv</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">1000</span><span class="w"> </span><span class="py">THEN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Medium</span><span class="w"> </span><span class="py">Value</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">ELSE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">New</span><span class="w"> </span><span class="py">Customer</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">END</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">segment</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">count</span><span class="p">(</span><span class="py">c</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">customer_count</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">avg</span><span class="p">(</span><span class="py">ltv</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_ltv</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">avg</span><span class="p">(</span><span class="py">order_count</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg_orders</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_scheduled</span><span class="w"> </span><span class="py">INTERVAL</span><span class="w"> </span><span class="py">86400</span><span class="w"> </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="refresh-failures" class="position-relative d-flex align-items-center group"> <span>Refresh Failures</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="refresh-failures" aria-haspopup="dialog" aria-label="Share link: Refresh Failures"> <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>Issue</strong>: View refresh fails with timeout</p> <p><strong>Diagnosis</strong>:</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">view</span><span class="w"> </span><span class="py">status</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CALL</span><span class="w"> </span><span class="py">db</span><span class="err">.</span><span class="py">view</span><span class="err">.</span><span class="py">status</span><span class="p">(</span><span class="err">&#39;</span><span class="py">slow_view</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span></span></span></code></pre></div><p><strong>Solution</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Increase refresh timeout</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">materialized_views</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">refresh_timeout_seconds</span><span class="p">:</span><span class="w"> </span><span class="m">3600</span><span class="w"> </span><span class="c"># 1 hour</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="c"># Or optimize source query</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># Add indexes on frequently joined columns</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># Reduce aggregation complexity</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># Consider partitioning</span><span class="w"> </span></span></span></code></pre></div><hr> <p><strong>Issue</strong>: Incremental refresh not working</p> <p><strong>Diagnosis</strong>:</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">Verify</span><span class="w"> </span><span class="py">change</span><span class="w"> </span><span class="py">tracking</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CALL</span><span class="w"> </span><span class="py">db</span><span class="err">.</span><span class="py">view</span><span class="err">.</span><span class="py">changes</span><span class="p">(</span><span class="err">&#39;</span><span class="py">view_name</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span></span></span></code></pre></div><p><strong>Solution</strong>:</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">Rebuild</span><span class="w"> </span><span class="py">view</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">change</span><span class="w"> </span><span class="py">tracking</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">DROP</span><span class="w"> </span><span class="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">old_view</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">new_view</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="kd">...</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">incremental</span><span class="w"> </span><span class="py">ENABLE_CHANGE_TRACKING</span><span class="w"> </span><span class="py">true</span><span class="w"> </span></span></span></code></pre></div> <h4 id="performance-issues" class="position-relative d-flex align-items-center group"> <span>Performance 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="performance-issues" aria-haspopup="dialog" aria-label="Share link: Performance 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>Issue</strong>: View queries slower than expected</p> <p><strong>Analysis</strong>:</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">v</span><span class="p">:</span><span class="nc">product_sales</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">v</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">v</span><span class="w"> </span></span></span></code></pre></div><p><strong>Solutions</strong>:</p> <ol> <li> <p><strong>Add indexes on view columns</strong>:</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">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">view_category_idx</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">product_sales</span><span class="w"> </span><span class="p">(</span><span class="py">category</span><span class="p">)</span><span class="w"> </span></span></span></code></pre></div></li> <li> <p><strong>Partition large views</strong>:</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">CREATE</span><span class="w"> </span><span class="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">partitioned_sales</span><span class="w"> </span><span class="py">PARTITION</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">region</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="kd">...</span><span class="w"> </span></span></span></code></pre></div></li> <li> <p><strong>Prune old data</strong>:</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">ALTER</span><span class="w"> </span><span class="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">sales_view</span><span class="w"> </span><span class="py">SET</span><span class="w"> </span><span class="py">RETENTION</span><span class="w"> </span><span class="py">P90D</span><span class="w"> </span></span></span></code></pre></div></li> </ol> <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="view-design" class="position-relative d-flex align-items-center group"> <span>View Design</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="view-design" aria-haspopup="dialog" aria-label="Share link: View Design"> <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><ol> <li> <p><strong>Appropriate Granularity</strong>:</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">Good</span><span class="p">:</span><span class="w"> </span><span class="nc">Aggregate</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">useful</span><span class="w"> </span><span class="py">level</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">daily_sales</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="kd">...</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Daily</span><span class="w"> </span><span class="py">granularity</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">Bad</span><span class="p">:</span><span class="w"> </span><span class="nc">Too</span><span class="w"> </span><span class="py">granular</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="py">MATERIALIZED</span><span class="w"> </span><span class="py">VIEW</span><span class="w"> </span><span class="py">second_by_second</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="kd">...</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Too</span><span class="w"> </span><span class="py">detailed</span><span class="w"> </span></span></span></code></pre></div></li> <li> <p><strong>Include Filtering Columns</strong>:</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">Good</span><span class="p">:</span><span class="w"> </span><span class="nc">Include</span><span class="w"> </span><span class="py">common</span><span class="w"> </span><span class="py">filter</span><span class="w"> </span><span class="py">columns</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">sale_date</span><span class="p">,</span><span class="w"> </span><span class="py">region</span><span class="p">,</span><span class="w"> </span><span class="py">category</span><span class="p">,</span><span class="w"> </span><span class="py">revenue</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">Bad</span><span class="p">:</span><span class="w"> </span><span class="nc">Missing</span><span class="w"> </span><span class="py">important</span><span class="w"> </span><span class="py">dimensions</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">revenue</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Can</span><span class="err">&#39;</span><span class="py">t</span><span class="w"> </span><span class="py">filter</span><span class="w"> </span><span class="py">by</span><span class="w"> </span><span class="py">date</span><span class="err">/</span><span class="py">region</span><span class="w"> </span></span></span></code></pre></div></li> <li> <p><strong>Balance Freshness vs Cost</strong>:</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">Dashboard</span><span class="p">:</span><span class="w"> </span><span class="nc">Immediate</span><span class="w"> </span><span class="py">refresh</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_immediate</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">Reports</span><span class="p">:</span><span class="w"> </span><span class="nc">Scheduled</span><span class="w"> </span><span class="py">refresh</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">auto_scheduled</span><span class="w"> </span><span class="py">INTERVAL</span><span class="w"> </span><span class="py">3600</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">Archives</span><span class="p">:</span><span class="w"> </span><span class="nc">Manual</span><span class="w"> </span><span class="py">refresh</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">REFRESH</span><span class="w"> </span><span class="py">STRATEGY</span><span class="w"> </span><span class="py">manual</span><span class="w"> </span></span></span></code></pre></div></li> </ol> <h4 id="refresh-strategy-selection" class="position-relative d-flex align-items-center group"> <span>Refresh Strategy Selection</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="refresh-strategy-selection" aria-haspopup="dialog" aria-label="Share link: Refresh Strategy Selection"> <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><table> <thead> <tr> <th>Use Case</th> <th>Strategy</th> <th>Interval</th> <th>Notes</th> </tr> </thead> <tbody> <tr> <td>Live dashboards</td> <td>auto_immediate</td> <td>N/A</td> <td>Always current</td> </tr> <tr> <td>Hourly reports</td> <td>auto_scheduled</td> <td>3600</td> <td>Predictable</td> </tr> <tr> <td>Daily analytics</td> <td>auto_scheduled</td> <td>86400</td> <td>Overnight refresh</td> </tr> <tr> <td>Large aggregations</td> <td>incremental</td> <td>3600</td> <td>Process deltas only</td> </tr> <tr> <td>Archive reports</td> <td>manual</td> <td>N/A</td> <td>On-demand</td> </tr> <tr> <td>Real-time feeds</td> <td>streaming</td> <td>N/A</td> <td>Continuous updates</td> </tr> </tbody> </table> <h4 id="monitoring" class="position-relative d-flex align-items-center group"> <span>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="monitoring" aria-haspopup="dialog" aria-label="Share link: 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><strong>Automated Checks</strong>:</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"># Cron job: Check view health</span> </span></span><span class="line"><span class="cl">*/15 * * * * geode query <span class="s2">&#34;CALL db.view.health_check()&#34;</span> <span class="p">|</span> mail -s <span class="s2">&#34;View Status&#34;</span> [email protected] </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Alert on refresh failures</span> </span></span><span class="line"><span class="cl">geode query <span class="s2">&#34;CALL db.view.failed_refreshes()&#34;</span> <span class="p">|</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> jq <span class="s1">&#39;select(.failed_count &gt; 0)&#39;</span> <span class="p">|</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> mail -s <span class="s2">&#34;ALERT: View refresh failures&#34;</span> [email protected] </span></span></code></pre></div> <h3 id="references" class="position-relative d-flex align-items-center group"> <span>References</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="references" aria-haspopup="dialog" aria-label="Share link: References"> <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="documentation" class="position-relative d-flex align-items-center group"> <span>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="documentation" aria-haspopup="dialog" aria-label="Share link: 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> </h4><ul> <li><strong>Implementation</strong>: <code>src/query/enhanced_materialized_views.zig</code></li> <li><strong>Tests</strong>: <code>tests/test_materialized_views_enhanced.zig</code></li> <li><strong>Integration</strong>: <code>tests/test_materialized_views_enhanced_integration.zig</code></li> <li><strong>Source Docs</strong>: <code>docs/MATERIALIZED_VIEWS.md</code></li> </ul> <h4 id="related-topics" class="position-relative d-flex align-items-center group"> <span>Related Topics</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-topics" aria-haspopup="dialog" aria-label="Share link: Related Topics"> <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><a href="/docs/query/performance-tuning/" >Query Optimization</a> - EXPLAIN and PROFILE</li> <li><a href="/docs/query/indexing-and-optimization/" >Indexing Guide</a> - Index strategies</li> <li><a href="/docs/analytics/real-time-analytics/" >Real-Time Analytics</a> - Streaming integration</li> <li><a href="/docs/architecture/distributed-architecture/" >Distributed Architecture</a> - Federated views</li> </ul> <h3 id="next-steps" class="position-relative d-flex align-items-center group"> <span>Next Steps</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="next-steps" aria-haspopup="dialog" aria-label="Share link: Next Steps"> <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><strong>For New Users</strong>:</p> <ul> <li><a href="/docs/query/indexing-and-optimization/" >Indexing Guide</a> - Foundation for view optimization</li> <li><a href="/docs/query/performance-tuning/" >Query Performance</a> - Query optimization basics</li> <li><a href="/docs/gql/guide/" >GQL Guide</a> - Query language fundamentals</li> </ul> <p><strong>For Advanced Users</strong>:</p> <ul> <li><a href="/docs/analytics/real-time-analytics/" >Real-Time Analytics</a> - Streaming view integration</li> <li><a href="/docs/architecture/distributed-architecture/" >Distributed Coordination</a> - Cross-shard views</li> <li><a href="/docs/guides/performance-benchmarking/" >Performance Benchmarking</a> - View performance testing</li> </ul> <p><strong>For Administrators</strong>:</p> <ul> <li><a href="/docs/ops/observability/" >Monitoring</a> - View health monitoring</li> <li><a href="/docs/configuration/server-configuration/" >Performance Tuning</a> - System optimization</li> <li><a href="/docs/guides/backup-automation/" >Backup &amp; Recovery</a> - View backup strategies</li> </ul> <hr> <p><strong>Document Version</strong>: 1.0 <strong>Last Updated</strong>: January 24, 2026 <strong>Status</strong>: Production Ready <strong>Test Coverage</strong>: 23 tests (15 unit + 8 integration) <strong>Concurrency</strong>: Tested with 50+ concurrent views</p>