// ═══════════════════════════════════════════════════════════════════════════ // ADB COMPARISON TOOL — EXTERNAL DATA FILE (v2 — 5 flavors) // ═══════════════════════════════════════════════════════════════════════════ // // Two deployment worlds, five flavors: // // SERVERLESS (Oracle-managed shared infrastructure) // [0] Serverless — standalone pay-per-use // [1] Elastic Pool — pooled compute, shared infra // [2] Ded. Elastic Pool — pooled compute+storage, co-located infra // // DEDICATED (Customer-exclusive Exadata infrastructure) // [3] ADB Dedicated — standalone Exadata // [4] Dedicated EP (Exa) — elastic pool on Exadata // // Every array in this file follows this 5-element order: // [Serverless, Elastic Pool, Ded.EP(Svl), ADB Dedicated, Ded.EP(Exa)] // // ═══════════════════════════════════════════════════════════════════════════ const FLAVORS = [ { name: "Serverless", cls: "shared", short: "Serverless", group: "serverless" }, { name: "Elastic Pool", cls: "spool", short: "Elastic Pool", group: "serverless" }, { name: "Ded. Elastic Pool", cls: "pool", short: "Ded. EP (Svl)", group: "serverless" }, { name: "ADB Dedicated", cls: "dedicated", short: "ADB Dedicated", group: "dedicated" }, { name: "Elastic Pool (Dedicated)", cls: "dedpool", short: "EP (Dedicated)", group: "dedicated" } ]; const DOC_LINKS = { shared: "https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/autonomous-features-billing.html", spool: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/elastic-pools-about.html", pool: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/dedicated-elastic-pools.html", dedicated: "https://docs.oracle.com/en/cloud/paas/autonomous-database/dedicated/adbd-index.html", dedpool: "https://docs.oracle.com/en/cloud/paas/autonomous-database/dedicated/catiu/index.html" }; // ═══════════════════════════════════════════════════════════════════════════ // INFO TOOLTIPS — (i) button per criterion // ═══════════════════════════════════════════════════════════════════════════ // flavors: [Serverless, Elastic Pool, Ded.EP(Svl), ADB Dedicated, Ded.EP(Exa)] // ═══════════════════════════════════════════════════════════════════════════ const INFO = { "Consistency": { desc: "Likelihood that performance remains stable under load and over time (reduced variance/jitter).", flavors: [ "Good, but shared multi-tenant platform can imply higher variance; potential light noisy-neighbor impact.", "Better than standalone Serverless: pool-level resource management reduces per-DB variance, but still on shared infrastructure.", "Higher: tenant-dedicated platform reduces noisy-neighbor risk, but internal contention can occur if pool overcommitted.", "Highest: dedicated Exadata infrastructure provides the strongest predictability for mission-critical workloads.", "High: dedicated Exadata with pool-level resource management. Predictable infra but pool contention possible if overcommitted." ] }, "Isolation": { desc: "Degree of separation from other tenants and workloads — security, blast radius, compliance (LGPD/GDPR, data sovereignty).", flavors: [ "Good (OCI standards), but multi-tenant shared resources. Suitable for non-regulated workloads.", "Same shared infrastructure as Serverless but pool provides a logical grouping boundary for your DBs.", "Excellent: fully dedicated single-tenant (compute, storage, network isolated). Ideal for LGPD/GDPR, data sovereignty.", "Highest: dedicated Exadata infrastructure; strongest isolation for regulated industries and compliance mandates.", "Very high: Exadata-level isolation with pool members co-located on same infrastructure. Strong compliance posture." ] }, "List-cost fit": { desc: "Fixed/minimum cost you incur even at low utilization (cost floor / baseline commitment).", flavors: [ "Lowest: pure pay-per-use, no fixed infra. Auto-pause saves 100% compute when idle. Free developer tier.", "Low pool shapes (128 ECPUs min). No dedicated infra floor. Storage billed per-DB.", "Higher: pool minimums apply (256 ECPUs / 256 TB base), plus dedicated tenancy overhead.", "Highest: dedicated Exadata infrastructure baseline; justified by risk/SLAs/compliance.", "High: Exadata infra cost + pool shape minimum (128 ECPUs). Pool billing can reduce compute costs vs standalone Dedicated." ] }, "Fully managed": { desc: "Degree of operational automation — patching, backup, scaling, provisioning.", flavors: [ "Fully autonomous: Oracle manages everything, auto-patching on Oracle schedule. Zero admin.", "Fully managed like Serverless. Pool leader/member operations are simple join/leave.", "Mostly managed: you can control patching windows (pause up to 4 weeks) and custom maintenance schedules.", "Fleet admin manages Exadata infra, AVMCs, and ACDs. More operational responsibility but full control.", "Fleet admin manages Exadata; pool leader manages pool membership. Patching control + pool simplicity." ] }, "Elasticity": { desc: "Ability to dynamically scale compute and storage without downtime or re-provisioning.", flavors: [ "Excellent: auto-scaling up to 3× base ECPUs. Scale-to-zero with auto-pause. Instant provisioning.", "Good: pool can burst to 4× pool shape. Individual DBs can be 1 ECPU min. No per-DB auto-scaling.", "Good: pool can burst to 4× shape. Additionally pool leader can scale both compute and storage shapes.", "Manual ECPU scaling per AVM cluster. No auto-scaling. Adding servers requires infrastructure change.", "Good: pool can burst to 4× shape on Exadata. Better elasticity than standalone Dedicated." ] }, "Consolidation TCO": { desc: "Total cost of ownership when consolidating 25+ databases under a single billing umbrella.", flavors: [ "Weak: each DB billed independently; costs scale linearly. No consolidation discount mechanism.", "Best: pool absorbs per-DB minimums. Up to 87% compute savings. 1 ECPU min/DB vs 2 ECPU standalone.", "Excellent: compute + storage consolidated to leader. Single bill. Ideal for SaaS with many small DBs.", "Moderate: compute billed per-AVMC aggregate. Infra costs amortized over more DBs but high floor.", "Strong: pool billing on Exadata — up to 87% compute savings same as Serverless EP. Infra costs still apply." ] }, "Portability": { desc: "Ease of moving databases between pools, regions, or deployment models.", flavors: [ "Excellent: clone, move between regions. Simple scale up/down. No pool dependencies.", "Excellent: easy join/leave pool. Clone in/out. Pool members don't need same infrastructure.", "Good: pool members must be on same infrastructure. Join/leave operations available. Cross-region limited.", "Moderate: databases tied to Exadata infrastructure. Cross-region requires Data Guard setup.", "Moderate: pool members co-located on same Exadata. Join/leave pool available. Infrastructure-bound." ] }, "Governance": { desc: "Administrative control over patching schedules, maintenance windows, access policies, and fleet operations.", flavors: [ "Limited: Oracle controls patching schedule. No custom maintenance windows. Basic IAM integration.", "Limited: same as Serverless. Pool leader can manage membership. Custom maintenance with 1024+ pool shape.", "Good: custom patching windows. Pause updates up to 4 weeks. Dedicated maintenance scheduling.", "Full: fleet admin controls patching, maintenance, and lifecycle for all infra components.", "Strong: fleet admin controls Exadata + pool leader manages pool. Custom patching + pool governance." ] }, }; // ═══════════════════════════════════════════════════════════════════════════ // DECISION MATRIX — 8 pre-built scenarios // ═══════════════════════════════════════════════════════════════════════════ // scores: [Serverless, Elastic Pool, Ded.EP(Svl), ADB Dedicated, Ded.EP(Exa)] // ═══════════════════════════════════════════════════════════════════════════ const matrices = { small: { title: "Small — 5 DBs, low steady usage", desc: "Cost-sensitive; fast time-to-value; minimal admin overhead", criteria: [ { name: "List-cost fit", weight: 95, scores: [5, 4, 2, 2, 2] }, { name: "Fully managed", weight: 80, scores: [5, 5, 5, 4, 4] }, { name: "Elasticity", weight: 50, scores: [5, 4, 3, 3, 3] }, { name: "Portability", weight: 40, scores: [5, 5, 5, 3, 3] }, { name: "Consolidation TCO", weight: 10, scores: [3, 4, 3, 2, 3] }, { name: "Consistency", weight: 30, scores: [3, 3, 4, 5, 4] }, { name: "Isolation", weight: 15, scores: [2, 2, 4, 5, 5] }, { name: "Governance", weight: 10, scores: [2, 2, 3, 5, 4] }, ], weights: [95, 80, 50, 40, 10, 30, 15, 10, 10, 5] }, consolidated: { title: "Consolidated — ~25 medium DBs", desc: "Pooling compute savings; reduce per-DB billing overhead", criteria: [ { name: "Consolidation TCO", weight: 95, scores: [2, 5, 5, 3, 4] }, { name: "List-cost fit", weight: 70, scores: [4, 4, 3, 2, 3] }, { name: "Portability", weight: 60, scores: [5, 5, 5, 3, 3] }, { name: "Fully managed", weight: 50, scores: [5, 5, 5, 4, 4] }, { name: "Elasticity", weight: 45, scores: [5, 4, 4, 3, 4] }, { name: "Consistency", weight: 40, scores: [3, 3, 4, 5, 4] }, { name: "Governance", weight: 25, scores: [2, 2, 4, 5, 4] }, { name: "Isolation", weight: 20, scores: [2, 2, 4, 5, 5] }, ], weights: [95, 70, 60, 50, 45, 40, 25, 20, 15, 10] }, saas: { title: "High-consolidation SaaS — ~200 tenants", desc: "SaaS provider; per-tenant DB; cost efficiency + perception", criteria: [ { name: "Consolidation TCO", weight: 95, scores: [2, 5, 5, 2, 4] }, { name: "Portability", weight: 60, scores: [5, 5, 4, 3, 3] }, { name: "Isolation", weight: 55, scores: [2, 2, 4, 5, 5] }, { name: "Governance", weight: 50, scores: [2, 2, 4, 5, 4] }, { name: "Elasticity", weight: 40, scores: [5, 4, 4, 3, 4] }, { name: "Fully managed", weight: 35, scores: [5, 5, 5, 4, 4] }, { name: "Consistency", weight: 30, scores: [3, 3, 4, 5, 4] }, { name: "List-cost fit", weight: 20, scores: [3, 3, 2, 1, 2] } ], weights: [95, 80, 60, 55, 50, 40, 35, 30, 25, 20] }, large: { title: "Large workloads — ~10 DBs, >100 ECPUs", desc: "Performance-intensive; high ECPU + storage per DB", criteria: [ { name: "Consistency", weight: 90, scores: [3, 3, 4, 5, 4] }, { name: "Isolation", weight: 70, scores: [2, 2, 4, 5, 5] }, { name: "Elasticity", weight: 55, scores: [5, 4, 4, 3, 4] }, { name: "Governance", weight: 50, scores: [2, 2, 4, 5, 4] }, { name: "Fully managed", weight: 40, scores: [5, 5, 5, 4, 4] }, { name: "Consolidation TCO", weight: 35, scores: [2, 4, 4, 3, 4] }, { name: "List-cost fit", weight: 30, scores: [3, 3, 2, 2, 2] }, { name: "Portability", weight: 15, scores: [5, 5, 4, 3, 3] } ], weights: [90, 80, 70, 55, 50, 40, 35, 30, 20, 15] }, ultra: { title: "SaaS Ultra Multi-Tenant — ~1,000 DBs", desc: "Massive scale; per-DB minimums dominate cost; pool is essential", criteria: [ { name: "Consolidation TCO", weight: 100, scores: [1, 5, 5, 1, 4] }, { name: "List-cost fit", weight: 70, scores: [1, 4, 3, 1, 2] }, { name: "Elasticity", weight: 60, scores: [4, 5, 4, 2, 4] }, { name: "Fully managed", weight: 50, scores: [5, 5, 5, 3, 4] }, { name: "Portability", weight: 45, scores: [5, 5, 4, 2, 3] }, { name: "Consistency", weight: 25, scores: [3, 3, 4, 5, 4] }, { name: "Isolation", weight: 20, scores: [2, 2, 4, 5, 5] }, { name: "Governance", weight: 15, scores: [2, 2, 4, 5, 4] }, ], weights: [100, 70, 60, 50, 45, 40, 25, 20, 15, 10] }, crit_low: { title: "Low Impact — Dev/test, PoC, sandbox", desc: "Non-critical; minutes-to-hours RTO acceptable; cost is king", criteria: [ { name: "List-cost fit", weight: 100, scores: [5, 4, 2, 1, 2] }, { name: "Fully managed", weight: 80, scores: [5, 5, 5, 3, 4] }, { name: "Elasticity", weight: 60, scores: [5, 4, 3, 3, 3] }, { name: "Portability", weight: 40, scores: [5, 5, 5, 3, 3] }, { name: "Consolidation TCO", weight: 30, scores: [3, 5, 4, 2, 3] }, { name: "Consistency", weight: 10, scores: [3, 3, 4, 5, 4] }, { name: "Isolation", weight: 5, scores: [2, 2, 4, 5, 5] }, { name: "Governance", weight: 5, scores: [2, 2, 3, 5, 4] }, ], weights: [100, 80, 60, 40, 30, 10, 5, 5, 5, 5] }, crit_medium: { title: "Medium Impact — Departmental apps, reporting", desc: "Hours RTO; some compliance needs; balance cost vs. risk", criteria: [ { name: "Consistency", weight: 70, scores: [3, 3, 4, 5, 4] }, { name: "Consolidation TCO", weight: 65, scores: [2, 5, 5, 3, 4] }, { name: "Governance", weight: 55, scores: [2, 2, 4, 5, 4] }, { name: "Isolation", weight: 50, scores: [2, 2, 4, 5, 5] }, { name: "Fully managed", weight: 50, scores: [5, 5, 5, 4, 4] }, { name: "List-cost fit", weight: 45, scores: [5, 4, 3, 2, 3] }, { name: "Elasticity", weight: 40, scores: [5, 4, 4, 3, 4] }, { name: "Portability", weight: 30, scores: [5, 5, 5, 3, 3] }, ], weights: [70, 65, 55, 50, 50, 45, 40, 35, 30, 20] }, crit_high: { title: "High Impact — Mission-critical (ERP, banking)", desc: "Minutes RTO; strict SLAs; isolation + control dominate", criteria: [ { name: "Isolation", weight: 95, scores: [2, 2, 4, 5, 5] }, { name: "Consistency", weight: 90, scores: [3, 3, 4, 5, 4] }, { name: "Governance", weight: 85, scores: [2, 2, 4, 5, 4] }, { name: "Fully managed", weight: 40, scores: [5, 5, 5, 4, 4] }, { name: "Elasticity", weight: 30, scores: [5, 4, 4, 3, 4] }, { name: "Consolidation TCO", weight: 20, scores: [2, 4, 4, 3, 4] }, { name: "Portability", weight: 15, scores: [5, 5, 4, 3, 3] }, { name: "List-cost fit", weight: 10, scores: [5, 4, 3, 1, 2] } ], weights: [100, 95, 90, 85, 60, 40, 30, 20, 15, 10] } }; // Pre-populate origScores for reset Object.keys(matrices).forEach(k => { matrices[k].origWeights = [...matrices[k].weights]; matrices[k].criteria.forEach(c => { c.origScores = [...c.scores]; }); }); // ═══════════════════════════════════════════════════════════════════════════ // OVERVIEW CARDS — "When to Choose" tab (star ratings + descriptions) // ═══════════════════════════════════════════════════════════════════════════ // stars: [Serverless, Elastic Pool, Ded.EP(Svl), ADB Dedicated, Ded.EP(Exa)] // descs: same order // ═══════════════════════════════════════════════════════════════════════════ const OVERVIEW_CARDS = [ { title: "Cost Fit", icon: "💰", stars: [5, 4, 2, 2, 2], descs: [ "Lowest cost floor: pure pay-per-use; auto-pause = $0 compute. Free tier for dev/test.", "Pool shapes start at 128 ECPUs. Pay for pool — not per-DB provisioned. Up to 87% savings.", "Pool min 256 ECPUs / 256 TB. Higher cost floor but consolidation offsets for large estates.", "Highest cost floor: Exadata infra (DB + Storage servers) + ECPU compute. Justified by SLAs.", "Exadata infra floor + pool shape min 128 ECPUs. Pool billing reduces compute vs standalone." ] }, { title: "Performance Consistency", icon: "⚡", stars: [3, 3, 4, 5, 4], descs: [ "Good — shared platform may show slight variance under peak multi-tenant load.", "Better than standalone: pool-level management. Still shared infrastructure.", "High — dedicated tenancy reduces noisy-neighbor. Internal pool contention possible.", "Highest — dedicated Exadata; strongest predictability for critical workloads.", "High — Exadata predictability with pool resource sharing among your own DBs." ] }, { title: "Isolation", icon: "🔒", stars: [2, 2, 4, 5, 5], descs: [ "OCI security standards with multi-tenant shared resources. Suitable for most workloads.", "Same shared infra as Serverless. Pool is logical grouping, not physical isolation.", "Dedicated single-tenant. Compute, storage, network isolated. LGPD/GDPR ready.", "Strongest: customer-exclusive Exadata. No resource sharing with other customers.", "Exadata-level isolation. Pool members co-located on same private infrastructure." ] }, { title: "Consolidation Efficiency", icon: "📦", stars: [2, 5, 5, 3, 4], descs: [ "Weak — each DB billed independently. Costs scale linearly with DB count.", "Best — pool absorbs per-DB mins. 1 ECPU/DB in pool vs 2 standalone. Massive savings at scale.", "Excellent — compute + storage to leader. Single bill. Best for SaaS with 100s of DBs.", "Moderate — compute per AVMC aggregate. Infra amortized but high floor.", "Strong — pool billing on Exadata (up to 87% compute savings). Infra costs remain." ] }, { title: "Elasticity & Scaling", icon: "📈", stars: [5, 4, 4, 3, 4], descs: [ "Excellent — auto-scale 3× base. Auto-pause/resume. Scale-to-zero. Instant provisioning.", "Good — pool bursts to 4× shape. No per-DB auto-scaling. 1 ECPU minimum per member.", "Good — pool bursts to 4× shape. Leader can scale both compute and storage shapes.", "Manual — ECPU scaling per AVMC. No auto-scaling. Server additions require infra changes.", "Good — pool bursts to 4× shape on Exadata. Better elasticity than standalone Dedicated." ] }, { title: "Operational Simplicity", icon: "🤖", stars: [5, 5, 4, 3, 3], descs: [ "Zero admin: Oracle manages everything. Auto-patching on Oracle schedule.", "Same zero admin + simple pool join/leave operations. Leader manages membership.", "Mostly managed: custom patching windows available. Pause updates up to 4 weeks.", "Fleet admin manages Exadata infra, AVMCs, ACDs. More operational responsibility.", "Fleet admin manages Exadata; pool leader manages pool. Mix of infra + pool ops." ] }, { title: "Governance & Control", icon: "🏛️", stars: [2, 2, 4, 5, 4], descs: [ "Limited — Oracle controls patching. No custom maintenance windows. Basic IAM.", "Same as Serverless. Custom windows with 1024+ ECPUs pool shape.", "Good — custom patching, pause updates. Dedicated maintenance scheduling.", "Full — fleet admin controls all infra lifecycle, patching, and maintenance.", "Strong — fleet admin + pool leader governance. Custom patching + pool control." ] }, ]; // ═══════════════════════════════════════════════════════════════════════════ // PRICING — OCI list prices (BYOL, Feb 2026) // ═══════════════════════════════════════════════════════════════════════════ const PRICING = { ecpuHr: 0.0807, hrsMonth: 744, storageGbMo: 0.1156, backupGbMo: 0.0244, objStorageGbMo: 0.0255, x11mDbSrvHr: 2.8978, x11mStSrvHr: 2.8978, dbSrvEcpuCap: 760, stSrvStorCap: 80, poolMinEcpu: 256, poolMinStorTB: 256, minDbServers: 2, minStServers: 3, }; const COST_PRESETS = { small: { dbs: 5, ecpuPerDb: 16, storPerDb: 5, usagePct: 100 }, consolidated: { dbs: 25, ecpuPerDb: 8, storPerDb: 2, usagePct: 100 }, saas: { dbs: 200, ecpuPerDb: 2, storPerDb: 1, usagePct: 100 }, large: { dbs: 10, ecpuPerDb: 64, storPerDb: 20, usagePct: 100 }, ultra: { dbs: 1000, ecpuPerDb: 2, storPerDb: 0.5, usagePct: 8 }, }; // ═══════════════════════════════════════════════════════════════════════════ // SCENARIO ANALYSIS — "Scenarios" tab tables // ═══════════════════════════════════════════════════════════════════════════ // flavors: [Serverless, Elastic Pool, Ded.EP(Svl), ADB Dedicated, Ded.EP(Exa)] // ═══════════════════════════════════════════════════════════════════════════ const SCENARIOS = [ { title: "By Scale", firstCol: "Scenario", rows: [ { label: "Small", sub: "5 DBs; low steady usage", flavors: [ "Best TCO and fastest time-to-value (no cost floor).", "Viable if DBs are bursty and can share pool compute; but pool minimum shapes may over-provision.", "Usually not economical due to pool minimums (256 ECPUs/256 TB).", "Usually not economical unless strict regulatory/isolation requirements.", "Over-engineered: Exadata infra + pool overhead not justified for small estates." ], takeaway: "Choose Serverless when cost and agility dominate." }, { label: "Consolidated", sub: "~25 medium DBs", flavors: [ "Viable, but cost grows with aggregated consumption.", "Sweet spot: pooling compute savings up to 87%; storage billed per-DB. Easy join/leave.", "Best when you also want storage consolidated to the leader with dedicated tenancy.", "Justify when risk/SLAs/compliance dominate beyond consolidation economics.", "Good option if you need Exadata isolation + pool compute savings for 25+ DBs." ], takeaway: "Elastic Pool for compute savings; Ded. Pool for full consolidation." }, { label: "High-consolidation SaaS", sub: "~200 tenants / many DBs", flavors: [ "Risk of linear cost growth and multi-tenant perception concerns.", "Strong: pooled compute, per-tenant storage isolation, easy portability.", "Best: dedicated tenancy + pooling + both compute & storage consolidated.", "For premium/regulated tenants needing strongest isolation boundaries.", "Strong: Exadata isolation + pool billing. Good for regulated SaaS at scale." ], takeaway: "EP for mainstream; Ded. EP for tenancy; Dedicated/Ded.EP(Exa) for premium." }, { label: "Large workloads", sub: "~10 DBs, >100 ECPUs + >100 TB", flavors: [ "Viable; auto scaling up to 3\u00d7. Evaluate multi-tenant risk.", "Good when multiple large workloads can share peak capacity.", "Best when large workloads amortize pool floor; portability helps tuning.", "Best for single large critical workload where predictability/isolation is top driver.", "Good for multiple large workloads on Exadata needing pool compute efficiency." ], takeaway: "1 large critical \u2192 Dedicated; several large \u2192 Pools." }, { label: "SaaS Ultra Multi-Tenant", sub: "~1,000 DBs; 150 ECPU real usage", flavors: [ "2 ECPU min/DB forces 2,000 ECPUs despite 150 real; cost explodes.", "Best fit: pool absorbs 1,000 DBs with 1 ECPU min; bills on real aggregate peak. Massive savings.", "Same compute savings + storage consolidation to leader. Requires min 256 ECPUs/256 TB.", "2 ECPU min/DB + infrastructure floor = most expensive at this scale.", "Pool on Exadata: 1 ECPU min/DB helps but infra floor remains. Better than standalone Dedicated." ], takeaway: "Elastic Pools dominate when per-DB minimums exceed real usage." } ] }, { title: "\uD83C\uDFAF By Business Criticality (Impact Level)", firstCol: "Impact Level", rows: [ { label: "\uD83D\uDFE2 Low Impact", sub: "Dev/test, sandbox, PoC, internal tools; minutes-to-hours RTO acceptable", flavors: [ "Best fit: zero management, auto-pause saves cost, free tier for dev. Fast provisioning for PoCs.", "Good if many dev DBs benefit from shared compute pool with 1 ECPU min.", "Over-engineered for this tier. Pool minimums waste budget.", "Over-engineered. Exadata infra floor unjustified for non-critical workloads.", "Over-engineered. Exadata + pool overhead not justified for dev/test." ], takeaway: "Serverless is the default for low-impact. Pool only if you have many dev DBs." }, { label: "\uD83D\uDFE1 Medium Impact", sub: "Departmental apps, reporting, staging; hours RTO; some compliance needs", flavors: [ "Viable for most medium-impact workloads with auto-scaling up to 3\u00d7.", "Strong: pooled compute handles burst demand; per-DB storage isolation aligns with department boundaries.", "Best when compliance or data sovereignty requires dedicated tenancy + you have 25+ DBs to amortize floor.", "Justified if specific regulatory requirements (LGPD/GDPR) mandate Exadata-level isolation.", "Good if compliance requires Exadata + you want pool billing for cost efficiency." ], takeaway: "Elastic Pool is the sweet spot. Ded. Pool or Dedicated only if compliance forces it." }, { label: "\uD83D\uDD34 High Impact", sub: "Mission-critical: ERP, core banking, e-commerce, telecom; minutes RTO; strict SLAs", flavors: [ "Risky: shared multi-tenant adds performance variance. No custom patching control. Not recommended.", "Acceptable only with careful pool capacity planning. No tenancy-level isolation from other OCI customers.", "Strong: dedicated tenancy eliminates noisy-neighbor. Custom patching windows. Pause updates up to 4 weeks.", "Gold standard: dedicated Exadata, maximum isolation, predictability, and control for mission-critical SLAs.", "Excellent: Exadata isolation + pool compute savings. Best of both worlds for mission-critical fleets." ], takeaway: "Dedicated or Ded. Pool for mission-critical. Ded.EP(Exa) for fleets." } ] } ]; // ═══════════════════════════════════════════════════════════════════════════ // FEATURE MATRIX — capabilities by flavor and DB version // ═══════════════════════════════════════════════════════════════════════════ // // availability per flavor: // [Serverless, Elastic Pool, Ded.EP(Svl), ADB Dedicated, EP(Dedicated)] // // version: "any" (19c+26ai), "26ai" (26ai only), "19c" (19c only) // // category: "AI & Vectors", "HA & DR", "Security", "Performance", // "Management", "Developer", "Data Integration" // // When a user checks a feature as "required", flavors that don't support it // get visually disabled in the Decision Matrix and Cost Estimator. // // ═══════════════════════════════════════════════════════════════════════════ const FEATURES = [ // ═══════════════════════════════════════════════════════════════════════════ // Features shown here have at least ONE meaningful difference: // • Across flavors (available on some but not all), OR // • Across versions (26ai-only, not available on 19c) // // Universal features available on ALL flavors AND BOTH versions are excluded: // Database Vault, Data Safe, APEX, Refreshable Clones, Auto-Indexing, // Autonomous Data Guard (Local + Cross-Region), Application Continuity, // Private Endpoints, Customer-Managed Encryption Keys, GoldenGate, // Data Transforms (ETL), Real-Time SQL Plan Management, Spatial, JSON. // ═══════════════════════════════════════════════════════════════════════════ // // avail: [Serverless, Elastic Pool, Ded.EP(Svl), ADB Dedicated, EP(Dedicated)] // version: "both" (19c & 26ai), "26ai" (26ai only) // // ── AI & Vectors (26ai only — not available on 19c) ── { name: "AI Vector Search", category: "AI & Vectors", version: "26ai", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en/database/oracle/oracle-database/26/vecse/" }, { name: "Select AI (Natural Language SQL)", category: "AI & Vectors", version: "26ai", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/sql-generation-ai-autonomous-database.html" }, { name: "Select AI Agent (Agentic AI)", category: "AI & Vectors", version: "26ai", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/select-ai-agent.html" }, { name: "Built-in MCP Server", category: "AI & Vectors", version: "both", avail: [true, true, true, false, false], doc: "https://docs.oracle.com/en-us/iaas/releasenotes/autonomous-database-serverless/2025-12-mcp-server-for-autonomous-ai-database.htm" }, { name: "Data Lake Accelerator", category: "AI & Vectors", version: "26ai", avail: [true, true, true, false, false], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/data-lake-accelerator.html" }, // ── Developer (26ai only — not available on 19c) ── { name: "JSON Relational Duality Views", category: "Developer", version: "26ai", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en/database/oracle/oracle-database/26/jsnvu/index.html" }, { name: "SQL/PGQ Property Graph Queries", category: "Developer", version: "26ai", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en/database/oracle/property-graph/25.3/spgdg/sql-property-graphs.html" }, { name: "JavaScript in DB (MLE)", category: "Developer", version: "26ai", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en/database/oracle/oracle-database/26/mlejs/" }, { name: "Lock-Free Reservations", category: "Developer", version: "26ai", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en/database/oracle/oracle-database/26/adfns/using-lock-free-reservation.html" }, { name: "Kafka APIs for TxEventQ", category: "Developer", version: "26ai", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en/database/oracle/oracle-database/26/adque/" }, { name: "Boolean Data Type in SQL", category: "Developer", version: "26ai", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en/database/oracle/oracle-database/26/sqlrf/Data-Types.html" }, // ── Data Integration (26ai only — not available on 19c) ── { name: "Cloud Links (Data Sharing)", category: "Data Integration", version: "26ai", avail: [true, true, true, false, false], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/cloud-links.html" }, { name: "External Table Cache", category: "Data Integration", version: "26ai", avail: [true, true, true, false, false], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/external-table-cache.html" }, { name: "Apache Iceberg Support", category: "Data Integration", version: "both", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/autonomous-iceberg.html" }, // ── HA & DR (both versions, flavor differences) ── { name: "Active Data Guard (Read-Only Standby)", category: "HA & DR", version: "both", avail: [false, false, false, true, true], doc: "https://www.oracle.com/database/data-guard/" }, { name: "Multi-Cloud DR", category: "HA & DR", version: "both", avail: [false, false, false, true, true], doc: "https://docs.oracle.com/en/cloud/paas/autonomous-database/dedicated/adbau/" }, { name: "Custom Patching Schedule", category: "HA & DR", version: "both", avail: [false, false, true, true, true], doc: "https://docs.oracle.com/en/cloud/paas/autonomous-database/dedicated/adbdp/" }, { name: "Pause Patching (up to 4 weeks)", category: "HA & DR", version: "both", avail: [false, false, true, true, true], doc: "https://docs.oracle.com/en/cloud/paas/autonomous-database/dedicated/adbdp/" }, // ── Security (both versions, flavor differences) ── { name: "DB Vault Operations Control", category: "Security", version: "both", avail: [false, false, false, true, true], doc: "https://docs.oracle.com/en/cloud/paas/autonomous-database/dedicated/adbdv/" }, { name: "Dedicated Exadata Isolation", category: "Security", version: "both", avail: [false, false, true, true, true], doc: "https://docs.oracle.com/en/cloud/paas/autonomous-database/dedicated/adbd-index.html" }, // ── Performance (both versions, flavor differences) ── { name: "Compute Auto-Scaling (3×)", category: "Performance", version: "both", avail: [true, false, false, true, false], doc: "https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/autonomous-auto-scale.html" }, { name: "Elastic Pool Burst (up to 4×)", category: "Performance", version: "both", avail: [false, true, true, false, true], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/elastic-pools-create-manage.html" }, // ── Operational (both versions, flavor differences) ── { name: "Elastic Pool (Compute Billing)", category: "Operational", version: "both", avail: [false, true, true, false, true], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/elastic-pools-create-manage.html" }, { name: "Fleet Admin (Infra Control)", category: "Operational", version: "both", avail: [false, false, false, true, true], doc: "https://docs.oracle.com/en/cloud/paas/autonomous-database/dedicated/fleet-admin.html" }, { name: "Scale-to-Zero / Auto-Pause", category: "Operational", version: "both", avail: [true, false, false, false, false], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/autonomous-auto-pause.html" }, { name: "Developer Database (Free Tier)", category: "Operational", version: "both", avail: [true, false, false, false, false], doc: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/autonomous-always-free.html" }, ]; // ═══════════════════════════════════════════════════════════════════════════ // CLOUD PLATFORM AVAILABILITY — where each flavor can run // ═══════════════════════════════════════════════════════════════════════════ // avail: [Serverless, Elastic Pool, Ded.EP(Svl), ADB Dedicated, EP(Dedicated)] // // Sources: // - Serverless: OCI native + Oracle Database@Azure (ADB Serverless on Azure) + Database@Google Cloud // - Dedicated: OCI + Database@AWS + Database@Azure + Database@Google Cloud // - Elastic Pool flavors inherit from their parent deployment model // const CLOUD_PLATFORMS = [ { name: "OCI", icon: "☁️", avail: [true, true, true, true, true], doc: "" }, { name: "AWS", icon: "🟠", avail: [false, false, false, true, true], doc: "https://docs.oracle.com/en-us/iaas/Content/database-at-aws/oaaws-regions.htm" }, { name: "Azure", icon: "🔵", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en-us/iaas/Content/multicloud/regions.htm" }, { name: "Google Cloud", icon: "🟢", avail: [true, true, true, true, true], doc: "https://docs.oracle.com/en-us/iaas/Content/multicloud/regions.htm" }, ];