forked from diegoecab/oci-deal-accelerator
Lookup speed (78s → 1s) + drawio ADB-S/RC alias coverage
Two persistent fixes flagged from a Codex session:
1. ``archcenter_pattern_lookup`` ran in 78 s on WSL2 because:
- ``_cached_assets`` did ``iterdir`` + recursive ``rglob`` over the
whole 113-folder cache for EVERY catalog entry (123x).
- ``_patterns_for`` reloaded ``reference-patterns.yaml`` for every
match (125 reloads = ~5 s).
- Description text from disk was read for every entry, even those
that wouldn't make the top-K.
Now: one-shot scan of the cache dir cached in-memory AND persisted
to ``kb/diagram/assets/archcenter-refs-index.json`` keyed by mtime;
patterns YAML loaded once and indexed by URL; a two-pass scoring
pipeline that only reads description text + cached_assets +
visual_patterns for the top-K candidates instead of every entry.
Result: cold run 14 s (one-time index build), warm run 1.1 s.
2. The drawio renderer had no alias for ``adb_s`` / ``adb_serverless``
/ ``autonomous_database_serverless`` / ``refreshable_clone`` —
Codex's spec used ``type: adb_s`` and the icon never resolved.
Mapped them to ``autonomous_database`` (the canonical 7-cell
stencil shipped by the OCI Toolkit), with ``adb_d`` as fallback.
Same proactive expansion in the drawio side that the PPTX side
already got (oci_goldengate, dynamic_routing_gateway, atp/adw,
kms/secret, identity/iam, iac/terraform, oac/oic, kafka).
The persisted lookup index is committed so a fresh clone hits warm
performance on first ``make diagram-lookup``.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
460
kb/diagram/assets/archcenter-refs-index.json
Normal file
460
kb/diagram/assets/archcenter-refs-index.json
Normal file
@@ -0,0 +1,460 @@
|
||||
{
|
||||
"cache_dir_mtime": 1777161774.8360987,
|
||||
"entries": {
|
||||
"active-data-guard-far-sync-dba-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.svg"
|
||||
},
|
||||
"active-data-guard-far-sync-oracle-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.svg"
|
||||
},
|
||||
"ai-fraud-detection": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/ai-fraud-detection/ai-fraud-detection-flow-oracle/ai-fraud-detection-flow.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/ai-fraud-detection/ai-fraud-detection-flow-oracle/ai-fraud-detection-flow.svg"
|
||||
},
|
||||
"analytics-pipeline-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/analytics-pipeline-db-at-azure/data-lake-db-at-azure-medallion-oracle/data-lake-db-at-azure-medallion.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/analytics-pipeline-db-at-azure/data-lake-db-at-azure-medallion-oracle/data-lake-db-at-azure-medallion.svg"
|
||||
},
|
||||
"autonomous-database-db-at-azure-diagram-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.svg"
|
||||
},
|
||||
"azure-pipeline-exacs-dbazure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/exadata-database-service-oracle/exadata-database-service.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/exadata-database-service-oracle/exadata-database-service.svg"
|
||||
},
|
||||
"back-up-base-database-zero-data-loss-recovery": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.svg"
|
||||
},
|
||||
"back-up-exadata-dedicated-zero-data-loss-recovery": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.svg"
|
||||
},
|
||||
"bread-multicloud-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/peoplesoft-migration-process-oracle/peoplesoft-migration-process.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/peoplesoft-migration-process-oracle/peoplesoft-migration-process.svg"
|
||||
},
|
||||
"cicd-pipeline-oci-functions": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cicd-pipeline-oci-functions/cicd-deploy-oci-functions-oracle/cicd-deploy-oci-functions.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cicd-pipeline-oci-functions/cicd-deploy-oci-functions-oracle/cicd-deploy-oci-functions.svg"
|
||||
},
|
||||
"cis-oci-benchmark": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cis-oci-benchmark/oci-core-landingzone-oracle/oci-core-landingzone.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cis-oci-benchmark/oci-core-landingzone-oracle/oci-core-landingzone.svg"
|
||||
},
|
||||
"cloud-native-dicom-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cloud-native-dicom-on-oci/oci-dicom-store-oracle/oci-dicom-store.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cloud-native-dicom-on-oci/oci-dicom-store-oracle/oci-dicom-store.svg"
|
||||
},
|
||||
"cloud-native-ecommerce": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cloud-native-ecommerce/mushop-infrastructure-expand-oracle/mushop-infrastructure-expand.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cloud-native-ecommerce/mushop-infrastructure-expand-oracle/mushop-infrastructure-expand.svg"
|
||||
},
|
||||
"config-jde-dr-fsdr": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/config-jde-dr-fsdr/jde-dr-fsdr/jde-dr-fsdr.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/config-jde-dr-fsdr/jde-dr-fsdr/jdr-dr-fsdr.svg"
|
||||
},
|
||||
"connect-azure-kube-with-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/connect-azure-kube-with-oracle/azure-kube-with-exadata-db-oracle/azure-kube-with-exadata-db.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/connect-azure-kube-with-oracle/azure-kube-with-exadata-db-oracle/azure-kube-with-exadata-db.svg"
|
||||
},
|
||||
"cross-az-dr-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/cross-az-dr.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/cross-az-dr.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/cross-az-dr.svg"
|
||||
},
|
||||
"cross-region-dr-essbase-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cross-region-dr-essbase-oci/essbase-oci-cross-region-dr-oracle/essbase-oci-cross-region-dr.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cross-region-dr-essbase-oci/essbase-oci-cross-region-dr-oracle/essbase-oci-cross-region-dr.svg"
|
||||
},
|
||||
"data-application-integration-workloads": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-application-integration-workloads/integration-architecture-pattern-1-oracle/integration-architecture-pattern-1.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-application-integration-workloads/integration-architecture-pattern-1-oracle/integration-architecture-pattern-1.svg"
|
||||
},
|
||||
"data-platform-decentralized": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-platform-decentralized/decentralized-data-platform-logical-oracle/decentralized-data-platform-logical.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-platform-decentralized/decentralized-data-platform-logical-oracle/decentralized-data-platform-logical.svg"
|
||||
},
|
||||
"data-platform-lakehouse": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-platform-lakehouse/lakehouse-architecture-oracle/lakehouse-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-platform-lakehouse/lakehouse-architecture-oracle/lakehouse-architecture.svg"
|
||||
},
|
||||
"data-safe-exadata-adb": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-safe-exadata-adb/data-safe-for-exa-adb/data-safe-for-exa-adb-old.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-safe-exadata-adb/data-safe-for-exa-adb/data-safe-for-exa-adb.svg"
|
||||
},
|
||||
"data-safe-multicloud-ods-hybrid": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-safe-multicloud-ods-hybrid/datasafe-multi-odsa-01/datasafe-multi-odsa-01.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-safe-multicloud-ods-hybrid/datasafe-multi-odsa-01/datasafe-multi-odsa-01.svg"
|
||||
},
|
||||
"dataguard-exadata-dedicated-infrastructure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.svg"
|
||||
},
|
||||
"deploy-adb-db-at-google-cloud": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-adb-db-at-google-cloud/adb-oracle-db-at-google-cloud-region-oracle/adb-oracle-db-at-google-cloud-region.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-adb-db-at-google-cloud/adb-oracle-db-at-google-cloud-region-oracle/adb-oracle-db-at-google-cloud-region.svg"
|
||||
},
|
||||
"deploy-agentic-ai-agent-platform": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-agentic-ai-agent-platform/agentic-ai-oci-ai-agent-arch-oracle/agentic-ai-oci-ai-agent-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-agentic-ai-agent-platform/agentic-ai-oci-ai-agent-arch-oracle/agentic-ai-oci-ai-agent-arch.svg"
|
||||
},
|
||||
"deploy-ai-powered-chatbot": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-ai-powered-chatbot/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/deploy-ai-powered-chatbot/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch.png"
|
||||
},
|
||||
"deploy-autonomous-database-and-app": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-and-app/apex-app-adb-oracle/apex-app-adb.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-and-app/apex-app-adb-oracle/apex-app-adb.svg"
|
||||
},
|
||||
"deploy-autonomous-database-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-db-at-azure/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-db-at-azure/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.svg"
|
||||
},
|
||||
"deploy-data-rcvy-oci-api-gateway": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-data-rcvy-oci-api-gateway/apigw-oci-customer-managed-dr-topology-oracle/apigw-oci-customer-managed-dr-topology.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-data-rcvy-oci-api-gateway/apigw-oci-customer-managed-dr-topology-oracle/apigw-oci-customer-managed-dr-topology.svg"
|
||||
},
|
||||
"deploy-ebs-on-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-ebs-on-db-at-azure/ebs-on-db-at-azure-arch-oracle/ebs-on-db-at-azure-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-ebs-on-db-at-azure/ebs-on-db-at-azure-arch-oracle/ebs-on-db-at-azure-arch.svg"
|
||||
},
|
||||
"deploy-gitops-argocd-oke": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-gitops-argocd-oke/argocd/argocd.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-gitops-argocd-oke/argocd/argocd.svg"
|
||||
},
|
||||
"deploy-hybrid-dr-wls-fmw": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-hybrid-dr-wls-fmw/maa-wls-hybrid-dr-tool-highlights-oracle/maa-wls-hybrid-dr-tool-highlights.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-hybrid-dr-wls-fmw/maa-wls-hybrid-dr-tool-highlights-oracle/maa-wls-hybrid-dr-tool-highlights.svg"
|
||||
},
|
||||
"deploy-key-vault-database-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-azure/key-vault-database-at-azure-diagram-oracle/key-vault-database-at-azure-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-azure/key-vault-database-at-azure-diagram-oracle/key-vault-database-at-azure-diagram.svg"
|
||||
},
|
||||
"deploy-key-vault-database-at-google": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-google/key-vault-database-google/key-vault-database-google/key-vault-database-google.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-google/key-vault-database-google/key-vault-database-google/key-vault-database-google.png"
|
||||
},
|
||||
"deploy-lustre-file-systems": {
|
||||
"png": "kb/diagram/assets/archcenter-refs/deploy-lustre-file-systems/lustre-file-system-oci-arch/lustre-file-system-oci-arch/lustre-file-system-oci-arch.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-lustre-file-systems/lustre-file-system-oci-arch/lustre-file-system-oci-arch/lustre-file-system-oci-arch.svg"
|
||||
},
|
||||
"deploy-maa-for-peoplesoft-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-maa-for-peoplesoft-on-oci/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-maa-for-peoplesoft-on-oci/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.svg"
|
||||
},
|
||||
"deploy-oke-with-bastion-and-github": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-oke-with-bastion-and-github/oke-bastion-deployment-diagram-oracle/oke-bastion-deployment-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-oke-with-bastion-and-github/oke-bastion-deployment-diagram-oracle/oke-bastion-deployment-diagram.svg"
|
||||
},
|
||||
"deploy-oracle-database-at-google-cloud": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.svg"
|
||||
},
|
||||
"deploy-oracle-db-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-oracle-db-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-oracle-db-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.svg"
|
||||
},
|
||||
"deploy-tcs-banc-oci-exa": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-tcs-banc-oci-exa/bancs-ref-architecture-no-fd-oracle/bancs-ref-architecture-no-fd.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-tcs-banc-oci-exa/bancs-ref-architecture-no-fd-oracle/bancs-ref-architecture-no-fd.svg"
|
||||
},
|
||||
"deploy-wls-on-oke": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-wls-on-oke/weblogic-oke-oracle/weblogic-oke.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-wls-on-oke/weblogic-oke-oracle/weblogic-oke.svg"
|
||||
},
|
||||
"deploy-xstore-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-xstore-oci/deploy-xstore-on-oci/deploy-xstore-on-oci.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-xstore-oci/deploy-xstore-on-oci/deploy-xstore-on-oci.svg"
|
||||
},
|
||||
"dns-resolution-oracle-db-at-google-cloud": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/dns-resolution-oracle-db-at-google-cloud/resolve-dns-oci-google-cloud-oracle/resolve-dns-oci-google-cloud.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/dns-resolution-oracle-db-at-google-cloud/resolve-dns-oci-google-cloud-oracle/resolve-dns-oci-google-cloud.svg"
|
||||
},
|
||||
"dr-active-dg-farsync-db-at-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/dr-active-dg-farsync-db-at-aws/cross-region-dr-activedg-farsync-oracle/cross-region-dr-activedg-farsync.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/dr-active-dg-farsync-db-at-aws/cross-region-dr-activedg-farsync-oracle/cross-region-dr-activedg-farsync.svg"
|
||||
},
|
||||
"dr-local-regional-standby-db-at-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/dr-local-regional-standby-db-at-aws/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/dr-local-regional-standby-db-at-aws/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.svg"
|
||||
},
|
||||
"ebs-logging-analytics-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/ebs-logging-analytics-oci/ebs-logging-analytics-on-oci-oracle/ebs-logging-analytics-on-oci.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/ebs-logging-analytics-oci/ebs-logging-analytics-on-oci-oracle/ebs-logging-analytics-on-oci.svg"
|
||||
},
|
||||
"ebs-on-db-at-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/ebs-on-db-at-aws/ebs-db-at-aws-architecture-oracle/ebs-db-at-aws-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/ebs-on-db-at-aws/ebs-db-at-aws-architecture-oracle/ebs-db-at-aws-architecture.svg"
|
||||
},
|
||||
"exadata-dedicated-cross-region-dataguard": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard-uncompressed.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.svg"
|
||||
},
|
||||
"exadata-dedicated-in-region-dataguard": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/exadata-dedicated-in-region-dataguard.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/exadata-dedicated-in-region-dataguard.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/exadata-dedicated-in-region-dataguard.svg"
|
||||
},
|
||||
"exadb-dbaws-dr-arch-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.svg"
|
||||
},
|
||||
"exadb-dr-on-db-at-azure-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.svg"
|
||||
},
|
||||
"exadb-dr-on-db-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-azure/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-azure/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.svg"
|
||||
},
|
||||
"hub-spoke-network": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/hub-spoke-network/hub-spoke-oci.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/hub-spoke-network/hub-spoke-oci.svg"
|
||||
},
|
||||
"hub-spoke-network-drg": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/hub-spoke-network-drg/hub-and-spoke-drg-oracle/hub-and-spoke-drg.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/hub-spoke-network-drg/hub-and-spoke-drg-oracle/hub-and-spoke-drg.svg"
|
||||
},
|
||||
"implement-goldengate-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/goldengate-dbatazure-integration/goldengate-dbatazure-integration/goldengate-dbatazure-integration.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/goldengate-dbatazure-integration/goldengate-dbatazure-integration/goldengate-dbatazure-integration.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/goldengate-dbatazure-integration/goldengate-dbatazure-integration/goldengate-dbatazure-integration.svg"
|
||||
},
|
||||
"implement-rag-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/implement-rag-oci/rag-oic-aug-gen-oracle/rag-oic-aug-gen.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/implement-rag-oci/rag-oic-aug-gen-oracle/rag-oic-aug-gen.svg"
|
||||
},
|
||||
"implement-recovery-service-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/implement-recovery-service-db-at-azure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/implement-recovery-service-db-at-azure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure.svg"
|
||||
},
|
||||
"integration-access-control": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/integration-access-control/oracle-integration-rest-oauth-diagram-oracle/oracle-integration-rest-oauth-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/integration-access-control/oracle-integration-rest-oauth-diagram-oracle/oracle-integration-rest-oauth-diagram.svg"
|
||||
},
|
||||
"kubernetes-artifact-snapshot-dr": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/kubernetes-artifact-snapshot-dr/kubernetes-multiregion-dr-oracle/kubernetes-multiregion-dr.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/kubernetes-artifact-snapshot-dr/kubernetes-multiregion-dr-oracle/kubernetes-multiregion-dr.svg"
|
||||
},
|
||||
"kubernetes-oke-logging-analytics": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/kubernetes-oke-logging-analytics/k8s-oke-monitoring-oracle/k8s-oke-monitoring.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/kubernetes-oke-logging-analytics/k8s-oke-monitoring-oracle/k8s-oke-monitoring.svg"
|
||||
},
|
||||
"learn-about-drg-solutions": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/learn-about-drg-solutions/drg-routing-operation-oracle/drg-routing-operation.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/learn-about-drg-solutions/drg-routing-operation-oracle/drg-routing-operation.svg"
|
||||
},
|
||||
"learn-about-maa-for-peoplesoft": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/learn-about-maa-for-peoplesoft/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/learn-about-maa-for-peoplesoft/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.svg"
|
||||
},
|
||||
"local-regional-standby-dr-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/local-regional-standby-dr-db-at-azure/local-regional-standby-dr-db-azure-arch-oracle/local-regional-standby-dr-db-azure-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/local-regional-standby-dr-db-at-azure/local-regional-standby-dr-db-azure-arch-oracle/local-regional-standby-dr-db-azure-arch.svg"
|
||||
},
|
||||
"mid-tier-replication-oci-dr-arch": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mid-tier-replication-oci-dr-arch/active-passive-dr-mid-tier-oracle/active-passive-dr-mid-tier.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mid-tier-replication-oci-dr-arch/active-passive-dr-mid-tier-oracle/active-passive-dr-mid-tier.svg"
|
||||
},
|
||||
"migrate-apps-to-apex": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/migrate-apps-to-apex/forms-apps-to-apex-oracle/forms-apps-to-apex.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/migrate-apps-to-apex/forms-apps-to-apex-oracle/forms-apps-to-apex.svg"
|
||||
},
|
||||
"migrate-ebs-with-cloudmanager": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/migrate-ebs-with-cloudmanager/migrate-ebs-env-prod-oracle/migrate-ebs-env-prod.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/migrate-ebs-with-cloudmanager/migrate-ebs-env-prod-oracle/migrate-ebs-env-prod.svg"
|
||||
},
|
||||
"migrate-to-atp": {
|
||||
"png": "kb/diagram/assets/archcenter-refs/migrate-to-atp/favicon-128.png"
|
||||
},
|
||||
"modern-platform-oracle-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/modern-platform-oracle-db-at-azure/oracle-database-at-azure-services-platform-oracle/oracle-database-at-azure-services-platform.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/modern-platform-oracle-db-at-azure/oracle-database-at-azure-services-platform-oracle/oracle-database-at-azure-services-platform.svg"
|
||||
},
|
||||
"modernize-app-dev-oci-postgresql-redis-opensearch": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/modernize-app-dev-oci-postgresql-redis-opensearch/dr-architecture-diagram-oracle/dr-architecture-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/modernize-app-dev-oci-postgresql-redis-opensearch/dr-architecture-diagram-oracle/dr-architecture-diagram.svg"
|
||||
},
|
||||
"mongodb-to-atp": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-atp/mongodb-atp-s-arch-variant-oracle/mongodb-atp-s-arch-variant.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-atp/mongodb-atp-s-arch-variant-oracle/mongodb-atp-s-arch-variant.svg"
|
||||
},
|
||||
"mongodb-to-atp-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant.svg"
|
||||
},
|
||||
"mongodb-to-atp-google": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant.svg"
|
||||
},
|
||||
"mongodb-to-auto-json-db": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-auto-json-db/mongodb-json-arch-variant-oracle/mongdb-json-arch-variant.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-auto-json-db/mongodb-json-arch-variant-oracle/mongodb-json-arch-variant.svg"
|
||||
},
|
||||
"mongodb-to-exadata-machine": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-exadata-machine/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/mongodb-to-exadata-machine/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch.png"
|
||||
},
|
||||
"multi-region-standby-dr-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-at-azure/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-at-azure/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.svg"
|
||||
},
|
||||
"multi-region-standby-dr-db-azure-arch-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.svg"
|
||||
},
|
||||
"multi-tenant-app-deploy": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/multi-tenant-app-deploy/multi-tenant-app-oci-oracle/multi-tenant-app-oci.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/multi-tenant-app-deploy/multi-tenant-app-oci-oracle/multi-tenant-app-oci.svg"
|
||||
},
|
||||
"network-topology-oracle-database-at-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.svg"
|
||||
},
|
||||
"network-topology-oracle-database-at-google-cloud": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.svg"
|
||||
},
|
||||
"oci-ai-healthcare": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-ai-healthcare/oci-ai-healthcare_arch-oracle/oci-ai-healthcare-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-ai-healthcare/oci-ai-healthcare_arch-oracle/oci-ai-healthcare-arch.svg"
|
||||
},
|
||||
"oci-azure-multicloud-data-solution": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-azure-multicloud-data-solution/oci-azure-multicloud-data-solution-diagram-oracle/oci-azure-multicloud-data-solution-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-azure-multicloud-data-solution/oci-azure-multicloud-data-solution-diagram-oracle/oci-azure-multicloud-data-solution-diagram.svg"
|
||||
},
|
||||
"oci-best-practices-networking": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-best-practices-networking/multi-region-deployment-full-arch-oracle/multi-region-deployment-full-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-best-practices-networking/multi-region-deployment-full-arch-oracle/multi-region-deployment-full-arch.svg"
|
||||
},
|
||||
"oci-cpu-inference-ollama": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-cpu-inference-ollama/ollama-blueprint-architecture-oracle/ollama-blueprint-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-cpu-inference-ollama/ollama-blueprint-architecture-oracle/ollama-blueprint-architecture.svg"
|
||||
},
|
||||
"oci-genai-enterprise": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-genai-enterprise/oci-genai-enterprise-arch-oracle/oci-genai-enterprise-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-genai-enterprise/oci-genai-enterprise-arch-oracle/oci-genai-enterprise-arch.svg"
|
||||
},
|
||||
"oci-generative-ai-llm-platforms": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-generative-ai-llm-platforms/ai-llm-workflow-architecture-oracle/ai-llm-workflow-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-generative-ai-llm-platforms/ai-llm-workflow-architecture-oracle/ai-llm-workflow-architecture.svg"
|
||||
},
|
||||
"oci-multicloud-datalake": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-multicloud-datalake/oci-multicloud-datalake-flow-oracle/oci_multicloud_datalake_flow.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-multicloud-datalake/oci-multicloud-datalake-flow-oracle/oci_multicloud_datalake_flow.svg"
|
||||
},
|
||||
"oci-multicloud-genai-rag": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-multicloud-genai-rag/multicloud-genai-rag-architecture-oracle/multicloud-genai-rag-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-multicloud-genai-rag/multicloud-genai-rag-architecture-oracle/multicloud-genai-rag-architecture.svg"
|
||||
},
|
||||
"oci-nlb-palo-alto-active-active": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-nlb-palo-alto-active-active/oci-nlb-palo-alto-active-active-arch-oracle/oci-nlb-palo-alto-active-active-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-nlb-palo-alto-active-active/oci-nlb-palo-alto-active-active-arch-oracle/oci-nlb-palo-alto-active-active-arch.svg"
|
||||
},
|
||||
"oci-oad-kafka-oi": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-oad-kafka-oi/oci-oad-kafka-oi-oracle/oci-oad-kafka-oi.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-oad-kafka-oi/oci-oad-kafka-oi-oracle/oci-oad-kafka-oi.svg"
|
||||
},
|
||||
"oci-object-storage-modernization": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-object-storage-modernization/oci-object-storage-modernization-arch-after-oracle/oci-object-storage-modernization-arch-after.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-object-storage-modernization/oci-object-storage-modernization-arch-after-oracle/oci-object-storage-modernization-arch-after.svg"
|
||||
},
|
||||
"oci-ops-insights-and-em-bridge": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-ops-insights-and-em-bridge/oci-ops-insights-diagram-oracle/oci-ops-insights-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-ops-insights-and-em-bridge/oci-ops-insights-diagram-oracle/oci-ops-insights-diagram.svg"
|
||||
},
|
||||
"oci-security-zones": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-security-zones/MSZ-01-oracle/MSZ-01.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-security-zones/MSZ-01-oracle/MSZ-01.svg"
|
||||
},
|
||||
"oci-speech-meeting-insights-genai": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-speech-meeting-insights-genai/oci-speech-adb-ai-arch-oracle/oci-speech-adb-ai-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-speech-meeting-insights-genai/oci-speech-adb-ai-arch-oracle/oci-speech-adb-ai-arch.svg"
|
||||
},
|
||||
"ocvs-vsan-stretched-cluster": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/ocvs-vsan-stretched-cluster/ocvs-vsan-stretched-cluster-oracle/ocvs-vsan-stretched-cluster.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/ocvs-vsan-stretched-cluster/ocvs-vsan-stretched-cluster-oracle/ocvs-vsan-stretched-cluster.svg"
|
||||
},
|
||||
"oracle-adb-jde-exadata": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.svg"
|
||||
},
|
||||
"oracle-adb-jde-exadata-arch-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/rendered.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.svg"
|
||||
},
|
||||
"oracle-db-at-azure-migration": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-migration/oracle-db-at-azure-zdm-oracle/oracle-db-at-azure-zdm.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-migration/oracle-db-at-azure-zdm-oracle/oracle-db-at-azure-zdm.svg"
|
||||
},
|
||||
"oracle-db-at-azure-streaming": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-streaming/oracle-db-at-azure-streaming-oracle/oracle-db-at-azure-streaming.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-streaming/oracle-db-at-azure-streaming-oracle/oracle-db-at-azure-streaming.svg"
|
||||
},
|
||||
"oracle-db-at-google-cloud-migration": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-db-at-google-cloud-migration/oracle_database_at_google_cloud_w_zdm-oracle/oracle_database_at_google_cloud_w_zdm.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-db-at-google-cloud-migration/oracle_database_at_google_cloud_w_zdm-oracle/oracle_database_at_google_cloud_w_zdm.svg"
|
||||
},
|
||||
"oracle-maa-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-maa-db-at-azure/cross-az-dr-oracle/cross-az-dr.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-maa-db-at-azure/cross-az-dr-oracle/cross-az-dr.svg"
|
||||
},
|
||||
"phased-migration-to-oracle-dba": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/phased-migration-to-oracle-dba/logical-architecture-diagram-oracle/logical-architecture-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/phased-migration-to-oracle-dba/logical-architecture-diagram-oracle/logical-architecture-diagram.svg"
|
||||
},
|
||||
"private-dns": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns.png"
|
||||
},
|
||||
"remote-synchronous-block-replication-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/remote-synchronous-block-replication-oci/remote-synchronous-block-replication-diagram-oracle/remote-synchronous-block-replication-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/remote-synchronous-block-replication-oci/remote-synchronous-block-replication-diagram-oracle/remote-synchronous-block-replication-diagram.svg"
|
||||
},
|
||||
"rep-fusion-saas-third-party-dw": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/rep-fusion-saas-third-party-dw/fusion-saas-to-snowflake-arch-oracle/fusion-saas-to-snowflake-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/rep-fusion-saas-third-party-dw/fusion-saas-to-snowflake-arch-oracle/fusion-saas-to-snowflake-arch.svg"
|
||||
},
|
||||
"run-quantized-gguf-llm-ampere-cluster": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch.svg"
|
||||
},
|
||||
"secure-backup-oci-object-storage": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/secure-backup-oci-object-storage/secure-backup-oci-object-storage-oracle/secure-backup-oci-object-storage.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/secure-backup-oci-object-storage/secure-backup-oci-object-storage-oracle/secure-backup-oci-object-storage.svg"
|
||||
},
|
||||
"select-ai-apex-framework": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/select-ai-apex-framework/hallucination-reduction-workflow-oracle/hallucination-reduction-workflow.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/select-ai-apex-framework/hallucination-reduction-workflow-oracle/hallucination-reduction-workflow.svg"
|
||||
},
|
||||
"takamol-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/takamol-on-oci/takamol-on-oci-arch-oracle/takamol-on-oci-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/takamol-on-oci/takamol-on-oci-arch-oracle/takamol-on-oci-arch.svg"
|
||||
},
|
||||
"tharseo-data-platform-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/tharseo-data-platform-on-oci/tharseo-data-platform-on-oci-arch-oracle/tharseo-data-platform-on-oci-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/tharseo-data-platform-on-oci/tharseo-data-platform-on-oci-arch-oracle/tharseo-data-platform-on-oci-arch.svg"
|
||||
},
|
||||
"wls-on-oke-marketplace": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/wls-on-oke-marketplace/wls-oke-marketplace-oracle/wls-oke-marketplace.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/wls-on-oke-marketplace/wls-oke-marketplace-oracle/wls-oke-marketplace.svg"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -206,15 +206,70 @@ def _score(query_tokens: set[str], entry: dict, description: str = "") -> float:
|
||||
return score
|
||||
|
||||
|
||||
_CACHE_DIR_INDEX: dict[str, dict[str, str]] | None = None
|
||||
CACHE_INDEX_FILE = PROJECT_ROOT / "kb" / "diagram" / "assets" / "archcenter-refs-index.json"
|
||||
|
||||
|
||||
def _build_cache_dir_index() -> dict[str, dict[str, str]]:
|
||||
"""Scan of CACHE_DIR. Returns {folder_name: {ext: relpath}}.
|
||||
|
||||
The previous implementation called ``iterdir()`` + ``rglob`` for
|
||||
EVERY catalog entry the scorer touched (123 times) — on WSL2 this
|
||||
pushed a single lookup to 75+ seconds. Now:
|
||||
1. In-memory cache for the duration of the process.
|
||||
2. Persisted JSON index next to the assets, refreshed only when
|
||||
CACHE_DIR's mtime changes — so a fresh process reads the
|
||||
index in milliseconds instead of walking 113 subdirs through
|
||||
WSL2's /mnt/c (~16 s on a typical laptop).
|
||||
"""
|
||||
global _CACHE_DIR_INDEX
|
||||
if _CACHE_DIR_INDEX is not None:
|
||||
return _CACHE_DIR_INDEX
|
||||
if not CACHE_DIR.exists():
|
||||
_CACHE_DIR_INDEX = {}
|
||||
return _CACHE_DIR_INDEX
|
||||
|
||||
cache_mtime = CACHE_DIR.stat().st_mtime
|
||||
if CACHE_INDEX_FILE.exists():
|
||||
try:
|
||||
payload = json.loads(CACHE_INDEX_FILE.read_text(encoding="utf-8"))
|
||||
if payload.get("cache_dir_mtime") == cache_mtime:
|
||||
_CACHE_DIR_INDEX = payload.get("entries") or {}
|
||||
return _CACHE_DIR_INDEX
|
||||
except (OSError, ValueError):
|
||||
pass # fall through and rebuild
|
||||
|
||||
index: dict[str, dict[str, str]] = {}
|
||||
for sub in CACHE_DIR.iterdir():
|
||||
if not sub.is_dir():
|
||||
continue
|
||||
bucket: dict[str, str] = {}
|
||||
for ext in ("drawio", "png", "svg"):
|
||||
for path in sub.rglob(f"*.{ext}"):
|
||||
bucket[ext] = str(path.relative_to(PROJECT_ROOT))
|
||||
break # only the first hit per ext is enough
|
||||
if bucket:
|
||||
index[sub.name] = bucket
|
||||
|
||||
try:
|
||||
CACHE_INDEX_FILE.write_text(
|
||||
json.dumps({"cache_dir_mtime": cache_mtime, "entries": index},
|
||||
indent=2),
|
||||
encoding="utf-8",
|
||||
)
|
||||
except OSError:
|
||||
pass # index is still useful in-memory even if we can't persist
|
||||
|
||||
_CACHE_DIR_INDEX = index
|
||||
return index
|
||||
|
||||
|
||||
def _cached_assets(entry: dict) -> dict:
|
||||
"""Find .drawio / .png / .svg if a matching folder is cached locally.
|
||||
|
||||
Oracle's zips often nest the assets one level deep (e.g.
|
||||
``deploy-oracle-db-aws/db-at-aws-main-arch-oracle/main.drawio``),
|
||||
so we scan recursively. The folder match is by URL slug or by
|
||||
folder-name containment in the title slug.
|
||||
"""
|
||||
if not CACHE_DIR.exists():
|
||||
Served from the one-shot in-memory index built by
|
||||
``_build_cache_dir_index``."""
|
||||
cache_index = _build_cache_dir_index()
|
||||
if not cache_index:
|
||||
return {}
|
||||
title_slug = re.sub(r"[^a-z0-9]+", "-", entry.get("title", "").lower()).strip("-")
|
||||
url_slug = ""
|
||||
@@ -222,30 +277,41 @@ def _cached_assets(entry: dict) -> dict:
|
||||
m = re.search(r"/solutions/([^/]+)/", entry["url"])
|
||||
if m:
|
||||
url_slug = m.group(1)
|
||||
found: dict[str, str] = {}
|
||||
for sub in CACHE_DIR.iterdir():
|
||||
if not sub.is_dir():
|
||||
continue
|
||||
if (url_slug and (url_slug == sub.name or url_slug in sub.name)) or (sub.name in title_slug):
|
||||
for ext in ("drawio", "png", "svg"):
|
||||
hits = list(sub.rglob(f"*.{ext}"))
|
||||
if hits:
|
||||
found[ext] = str(hits[0].relative_to(PROJECT_ROOT))
|
||||
if found:
|
||||
return found
|
||||
for name, bucket in cache_index.items():
|
||||
if (url_slug and (url_slug == name or url_slug in name)) or (name in title_slug):
|
||||
return bucket
|
||||
return {}
|
||||
|
||||
|
||||
_PATTERNS_BY_URL: dict[str, list[str]] | None = None
|
||||
|
||||
|
||||
def _build_patterns_index() -> dict[str, list[str]]:
|
||||
"""Load reference-patterns.yaml ONCE and index by entry URL.
|
||||
Was being reloaded for every match (125x per lookup = 5s wasted)."""
|
||||
global _PATTERNS_BY_URL
|
||||
if _PATTERNS_BY_URL is not None:
|
||||
return _PATTERNS_BY_URL
|
||||
index: dict[str, list[str]] = {}
|
||||
if not PATTERNS.exists():
|
||||
_PATTERNS_BY_URL = index
|
||||
return index
|
||||
try:
|
||||
patterns_doc = yaml.safe_load(PATTERNS.read_text(encoding="utf-8")) or {}
|
||||
except yaml.YAMLError:
|
||||
_PATTERNS_BY_URL = index
|
||||
return index
|
||||
for pname, pdata in (patterns_doc.get("patterns") or {}).items():
|
||||
url = (pdata or {}).get("source")
|
||||
if url:
|
||||
index.setdefault(url, []).append(pname)
|
||||
_PATTERNS_BY_URL = index
|
||||
return index
|
||||
|
||||
|
||||
def _patterns_for(entry: dict) -> list[str]:
|
||||
"""Surface visual-convention names that apply to this entry."""
|
||||
if not PATTERNS.exists():
|
||||
return []
|
||||
patterns_doc = yaml.safe_load(PATTERNS.read_text(encoding="utf-8"))
|
||||
out: list[str] = []
|
||||
for pname, pdata in (patterns_doc.get("patterns") or {}).items():
|
||||
if pdata.get("source") == entry.get("url"):
|
||||
out.append(pname)
|
||||
return out
|
||||
return _build_patterns_index().get(entry.get("url", ""), [])
|
||||
|
||||
|
||||
def lookup(query: str, top: int = 5, expand_synonyms: bool = True) -> list[dict]:
|
||||
@@ -255,13 +321,35 @@ def lookup(query: str, top: int = 5, expand_synonyms: bool = True) -> list[dict]
|
||||
if expand_synonyms:
|
||||
qt = _expand_query_tokens(qt)
|
||||
scored = []
|
||||
# Two-pass scoring: cheap fields first (title/tags/services/summary),
|
||||
# then enrich the top-K with expensive fields (description text from
|
||||
# disk, cached_assets, visual_patterns). Previously _cached_assets
|
||||
# ran for every entry whose tokens overlapped at all — 121 of 123
|
||||
# entries on a typical query — pushing the lookup to 75s+ on WSL2.
|
||||
light: list[dict] = []
|
||||
for e in entries:
|
||||
description = _description_text(e)
|
||||
s = _score(qt, e, description=description)
|
||||
if s <= 0:
|
||||
s_light = _score(qt, e, description="")
|
||||
if s_light <= 0:
|
||||
continue
|
||||
light.append({"_entry": e, "_score_light": s_light})
|
||||
|
||||
# Re-rank the candidate set with description text for tie-breaking
|
||||
# accuracy, then keep ``top`` * 2 to leave room for description
|
||||
# bumps to reorder.
|
||||
pool_size = max(top * 3, 10)
|
||||
light.sort(key=lambda r: -r["_score_light"])
|
||||
candidates = light[:pool_size]
|
||||
for c in candidates:
|
||||
e = c["_entry"]
|
||||
description = _description_text(e)
|
||||
c["_description"] = description
|
||||
c["_score_full"] = _score(qt, e, description=description)
|
||||
candidates.sort(key=lambda r: -r["_score_full"])
|
||||
|
||||
for c in candidates[:top]:
|
||||
e = c["_entry"]
|
||||
scored.append({
|
||||
"score": round(s, 1),
|
||||
"score": round(c["_score_full"], 1),
|
||||
"title": e.get("title"),
|
||||
"url": e.get("url"),
|
||||
"tags": e.get("tags", []),
|
||||
@@ -269,10 +357,9 @@ def lookup(query: str, top: int = 5, expand_synonyms: bool = True) -> list[dict]
|
||||
"summary": (e.get("summary", "") or "").strip().split("\n")[0],
|
||||
"cached_assets": _cached_assets(e),
|
||||
"visual_patterns": _patterns_for(e),
|
||||
"has_description": bool(description),
|
||||
"has_description": bool(c.get("_description")),
|
||||
})
|
||||
scored.sort(key=lambda r: -r["score"])
|
||||
return scored[:top]
|
||||
return scored
|
||||
|
||||
|
||||
def _print_results(query: str, results: list[dict]) -> None:
|
||||
|
||||
@@ -808,18 +808,54 @@ class OCIDiagramGenerator:
|
||||
ICON_TYPE_ALIASES = {
|
||||
"database_system": ["db_system", "dbcs"],
|
||||
"base_db": ["db_system", "dbcs"],
|
||||
"base_database": ["db_system", "dbcs"],
|
||||
"virtual_machine": ["compute", "vm"],
|
||||
"compute_instance": ["compute", "vm"],
|
||||
"oci_functions": ["functions"],
|
||||
"function": ["functions"],
|
||||
# ADB family — drawio toolkit ships ``autonomous_database`` (the
|
||||
# canonical generic icon, 7 cells) and ``adb_d`` (Dedicated, 28
|
||||
# cells with the wider footprint). There is NO separate
|
||||
# ``adb_s`` stencil — Serverless is rendered with the canonical
|
||||
# ``autonomous_database`` icon. Map every ADB-S synonym to that
|
||||
# entry first, falling back to ``adb_d`` only if the canonical
|
||||
# is absent. Diego flagged 2026-04-25: "el icono de ADB-S no se
|
||||
# genero en drawio" because the renderer had no alias for it.
|
||||
"adb_s": ["autonomous_database", "autonomous_db", "adb_d"],
|
||||
"adb_serverless": ["autonomous_database", "autonomous_db", "adb_d"],
|
||||
"autonomous_database_serverless": ["autonomous_database", "autonomous_db", "adb_d"],
|
||||
"autonomous_database": ["autonomous_database", "autonomous_db"],
|
||||
"refreshable_clone": ["autonomous_database", "autonomous_db", "adb_d"],
|
||||
"adb_clone": ["autonomous_database", "autonomous_db", "adb_d"],
|
||||
"adb_d": ["adb_d", "adb", "autonomous_db"],
|
||||
"adb_dedicated": ["adb_d", "adb", "autonomous_db"],
|
||||
"autonomous_database_dedicated": ["adb_d", "adb", "autonomous_db"],
|
||||
"adw_d": ["adw", "autonomous_db"],
|
||||
"adw": ["adw", "autonomous_db"],
|
||||
"atp_d": ["atp", "autonomous_db"],
|
||||
"atp": ["atp", "autonomous_db"],
|
||||
# GoldenGate aliases — same rule that fixes the PPTX side.
|
||||
"oci_goldengate": ["goldengate"],
|
||||
"ogg": ["goldengate"],
|
||||
"oracle_goldengate": ["goldengate"],
|
||||
# DRG variants
|
||||
"dynamic_routing_gateway": ["drg"],
|
||||
# Misc
|
||||
"block_volume": ["block_storage"],
|
||||
"oci_streaming": ["streaming", "kafka"],
|
||||
"kafka": ["streaming"],
|
||||
"web_application_firewall": ["waf"],
|
||||
"network_firewall": ["network_firewall"],
|
||||
"queue": ["queue", "oci_queue"],
|
||||
"kms": ["vault"],
|
||||
"secret": ["vault"],
|
||||
"secrets_manager": ["vault"],
|
||||
"identity": ["oracle_identity"],
|
||||
"iam": ["oracle_identity"],
|
||||
"iac": ["resource_manager"],
|
||||
"terraform": ["resource_manager"],
|
||||
"oac": ["analytics"],
|
||||
"oic": ["integration"],
|
||||
}
|
||||
|
||||
@classmethod
|
||||
|
||||
Reference in New Issue
Block a user