<!-- 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">-></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">'</span><span class="py">Q4</span><span class="err">-</span><span class="py">2025</span><span class="err">'</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">></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">-></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">></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">-></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">></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"><</span><span class="py">GQL</span><span class="w"> </span><span class="kd">query</span><span class="err">></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"><</span><span class="py">strategy</span><span class="err">></span><span class="w"> </span><span class="p">[</span><span class="py">INTERVAL</span><span class="w"> </span><span class="err"><</span><span class="py">seconds</span><span class="err">></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"><-</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">-></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">-></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">></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">></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">'</span><span class="py">Electronics</span><span class="err">'</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’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"><-</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">'</span><span class="py">Electronics</span><span class="err">'</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">'</span><span class="py">Electronics</span><span class="err">'</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"><-</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’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"><-</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">-></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">-></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">'</span><span class="py">product_sales</span><span class="err">'</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">"total_refreshes"</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">"successful_refreshes"</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">"failed_refreshes"</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">"average_refresh_time_ms"</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">"total_query_hits"</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">"cache_hit_ratio"</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">"last_refresh"</span><span class="p">:</span> <span class="s2">"2026-01-24T10:30:00Z"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"next_refresh"</span><span class="p">:</span> <span class="s2">"2026-01-24T11:30:00Z"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"storage_mb"</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">"total_views"</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">"active_refreshes"</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">"total_storage_gb"</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">"average_cache_hit_ratio"</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">"refresh_success_rate"</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">// <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">// <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">// <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">// <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">>=</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">-></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">></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">=></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">'MATCH (v:active_users_now) RETURN v'</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">-></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">></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">-></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">></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">'</span><span class="py">VIP</span><span class="err">'</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">></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">'</span><span class="py">High</span><span class="w"> </span><span class="py">Value</span><span class="err">'</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">></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">'</span><span class="py">Medium</span><span class="w"> </span><span class="py">Value</span><span class="err">'</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">'</span><span class="py">New</span><span class="w"> </span><span class="py">Customer</span><span class="err">'</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">'</span><span class="py">slow_view</span><span class="err">'</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">'</span><span class="py">view_name</span><span class="err">'</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">'</span><span class="py">Electronics</span><span class="err">'</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">'</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">"CALL db.view.health_check()"</span> <span class="p">|</span> mail -s <span class="s2">"View Status"</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">"CALL db.view.failed_refreshes()"</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">'select(.failed_count > 0)'</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">"ALERT: View refresh failures"</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 & 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>
Materialized Views System
Enterprise materialized views in Geode with automatic refresh strategies, dependency tracking, and query acceleration for complex analytical queries.