Files
oci-arch-utils/sites/oracle-ai-atp-comparison/adb-data.js

577 lines
39 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ═══════════════════════════════════════════════════════════════════════════
// 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" },
];