Skip to content

Commit 93282b5

Browse files
authored
adding refs + validating
1 parent b57e178 commit 93282b5

3 files changed

Lines changed: 76 additions & 7 deletions

File tree

tool/README.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,19 @@ Last updated: 2025-06-20
1414
1515
<details>
1616
<summary><b>List of References</b> (Click to expand)</summary>
17-
18-
- [Azure Databases Overview](https://azure.microsoft.com/en-us/products/category/databases/?msockid=38ec3806873362243e122ce086486339)
19-
- [Azure Database Architecture Guide](https://learn.microsoft.com/en-us/azure/architecture/databases/)
20-
- [Microsoft Sales and Support](https://support.microsoft.com/contactus?ContactUsExperienceEntryPointAssetId=S.HP.SMC-HOME)
17+
18+
- [Azure Storage Scalability Targets](https://learn.microsoft.com/en-us/azure/architecture/best-practices/data-partitioning#scalability-targets)
19+
- [Types of Data in Azure](https://learn.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-overview)
20+
- [Performance best practices for Azure SQL Database and Azure SQL Managed Instance](https://learn.microsoft.com/en-us/azure/azure-sql/database/performance-guidance-overview)
21+
- [Global Distribution with Azure Cosmos DB](https://learn.microsoft.com/en-us/azure/cosmos-db/distribute-data-globally)
22+
- [Consistency Levels in Azure Cosmos DB](https://learn.microsoft.com/en-us/azure/cosmos-db/consistency-levels)
23+
- [Introduction to Azure Data Factory](https://learn.microsoft.com/en-us/azure/data-factory/introduction)
24+
- [Security overview for Azure SQL Database and Azure SQL Managed Instance](https://learn.microsoft.com/en-us/azure/azure-sql/database/security-overview)
25+
- [Azure Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/)
26+
- [OLTP and OLAP in Azure SQL Database](https://learn.microsoft.com/en-us/azure/azure-sql/database/oltp-olap-overview)
27+
- [Azure Backup and Disaster Recovery](https://learn.microsoft.com/en-us/azure/backup/backup-overview)
28+
- [Query Performance Insight](https://learn.microsoft.com/en-us/azure/azure-sql/database/query-performance-insight-use)
29+
- [Data retention and deletion in Microsoft Azure](https://learn.microsoft.com/en-us/azure/compliance/offerings/offering-data-retention)
2130

2231
</details>
2332

@@ -102,6 +111,10 @@ The tool now includes the following questions to refine recommendations:
102111
- **Data Retention Policy**: Retention period for data.
103112
- Options: `Short-term`, `Medium-term`, `Long-term`.
104113

114+
## Advanced Settings
115+
116+
If the "Advanced Settings" button is not working, please refer to [Advanced Configuration for Azure Databases](https://learn.microsoft.com/en-us/azure/azure-sql/database/advanced-configuration) for more information.
117+
105118
## Example Recommendation Flow
106119

107120
1. User selects **structured data** with **global distribution** and **high throughput**.

tool/web-app/index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ <h2 id="form-title">Select Your Database Preferences</h2>
140140
<h3>Live Summary</h3>
141141
<ul id="summary-list"></ul>
142142
</div>
143+
<!-- Advanced Settings Button Note -->
144+
<div id="advanced-settings-note" style="color:#c62828; margin-bottom:1em; display:none;">
145+
<strong>Note:</strong> If the Advanced Settings button is not working, see <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/advanced-configuration" target="_blank" rel="noopener">Advanced Configuration for Azure Databases</a>.
146+
</div>
143147
<div id="recommendation-panel">
144148
<div id="loading-spinner" style="display:none;">Loading...</div>
145149
<div id="recommendation-result" aria-live="polite"></div>

tool/web-app/script.js

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,16 +128,31 @@ const summaryIcons = {
128128
'query-complexity': '🧩',
129129
'data-retention': '⏳'
130130
};
131+
const docLinks = {
132+
'data-volume': 'https://learn.microsoft.com/en-us/azure/architecture/best-practices/data-partitioning#scalability-targets',
133+
'data-type': 'https://learn.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-overview',
134+
'latency': 'https://learn.microsoft.com/en-us/azure/azure-sql/database/performance-guidance-overview',
135+
'scalability': 'https://learn.microsoft.com/en-us/azure/cosmos-db/distribute-data-globally',
136+
'consistency': 'https://learn.microsoft.com/en-us/azure/cosmos-db/consistency-levels',
137+
'integration-needs': 'https://learn.microsoft.com/en-us/azure/data-factory/introduction',
138+
'security': 'https://learn.microsoft.com/en-us/azure/azure-sql/database/security-overview',
139+
'budget': 'https://azure.microsoft.com/en-us/pricing/calculator/',
140+
'use-case': 'https://learn.microsoft.com/en-us/azure/azure-sql/database/oltp-olap-overview',
141+
'backup-recovery': 'https://learn.microsoft.com/en-us/azure/backup/backup-overview',
142+
'query-complexity': 'https://learn.microsoft.com/en-us/azure/azure-sql/database/query-performance-insight-use',
143+
'data-retention': 'https://learn.microsoft.com/en-us/azure/compliance/offerings/offering-data-retention'
144+
};
131145
function updateSummary() {
132146
const ul = document.getElementById('summary-list');
133147
ul.innerHTML = '';
134148
formFields.forEach(id => {
135149
const el = document.getElementById(id);
136150
if (el) {
137151
const label = document.querySelector(`label[for="${id}"]`);
138-
const li = document.createElement('li');
139152
const icon = summaryIcons[id] || '';
140-
li.innerHTML = `<span class="summary-icon">${icon}</span><span class="summary-label">${label ? label.childNodes[0].textContent.trim() : id}:</span> <span>${el.value}</span>`;
153+
const doc = docLinks[id] ? `<a href="${docLinks[id]}" target="_blank" class="doc-link" title="Microsoft documentation" style="margin-left:0.4em;font-size:1.1em;">🔗</a>` : '';
154+
const li = document.createElement('li');
155+
li.innerHTML = `<span class="summary-icon">${icon}</span><span class="summary-label">${label ? label.childNodes[0].textContent.trim() : id}:</span> <span>${el.value}</span>${doc}`;
141156
ul.appendChild(li);
142157
}
143158
});
@@ -297,10 +312,47 @@ document.getElementById('advisor-form').addEventListener('submit', async (event)
297312
function showJustification(justification, confidence) {
298313
const justDiv = document.getElementById('recommendation-justification');
299314
const confDiv = document.getElementById('confidence-score');
300-
document.getElementById('justification-text').textContent = justification;
315+
// Extended technical definition and disclaimer
316+
const extendedDef = `<div style="margin-bottom:0.7em;">
317+
<strong>About this Azure Service:</strong><br>
318+
<span id="extended-service-def"></span>
319+
</div>
320+
<div style="font-size:0.97em;color:#b71c1c;margin-bottom:0.5em;">
321+
<strong>Disclaimer:</strong> This tool is an advisor only. For official guidance, support, or more detailed information, please refer to <a href='https://support.microsoft.com/contactus?ContactUsExperienceEntryPointAssetId=S.HP.SMC-HOME' target='_blank' rel='noopener'>Microsoft Sales and Support</a> or the official Microsoft documentation.
322+
</div>`;
323+
document.getElementById('justification-text').innerHTML = extendedDef + justification;
301324
justDiv.style.display = 'block';
302325
document.getElementById('confidence-value').textContent = confidence + '%';
303326
confDiv.style.display = 'block';
327+
// Try to show a broad technical definition for the recommended service
328+
const recDiv = document.getElementById('recommendation-result');
329+
let rec = '';
330+
if (recDiv) {
331+
const match = recDiv.innerHTML.match(/<strong>([\w\s\-\/]+)<\/strong>/i);
332+
if (match) {
333+
rec = match[1].trim();
334+
}
335+
}
336+
const defs = {
337+
'Azure SQL Database': `Azure SQL Database is a fully managed platform as a service (PaaS) database engine that handles most of the database management functions such as upgrading, patching, backups, and monitoring without user involvement. It provides built-in high availability, scalability, and security. Learn more at <a href='https://learn.microsoft.com/en-us/azure/azure-sql/database/' target='_blank'>Azure SQL Database documentation</a>.`,
338+
'Azure Cosmos DB': `Azure Cosmos DB is a globally distributed, multi-model database service designed for mission-critical applications. It offers turnkey global distribution, elastic scaling of throughput and storage, multi-model support (including document, key-value, graph, and column-family), and guarantees single-digit millisecond latencies at the 99th percentile. Learn more at <a href='https://learn.microsoft.com/en-us/azure/cosmos-db/introduction' target='_blank'>Azure Cosmos DB documentation</a>.`,
339+
'Azure SQL Managed Instance': `Azure SQL Managed Instance is a fully managed SQL Server database engine instance hosted in Azure cloud. It provides near 100% compatibility with the latest SQL Server (Enterprise Edition) database engine, making it easy to migrate SQL Server workloads to Azure. Learn more at <a href='https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/managed-instance-overview' target='_blank'>Azure SQL Managed Instance documentation</a>.`,
340+
'Azure Database for PostgreSQL': `Azure Database for PostgreSQL is a managed database service for app development and deployment that provides built-in high availability, automated backups, scaling, and security. It supports community PostgreSQL and offers flexible server and hyperscale (Citus) deployment options. Learn more at <a href='https://learn.microsoft.com/en-us/azure/postgresql/' target='_blank'>Azure Database for PostgreSQL documentation</a>.`,
341+
'Azure Database for MySQL': `Azure Database for MySQL is a managed database service for app development and deployment with built-in high availability, security, and scaling. It supports community MySQL and offers flexible server deployment. Learn more at <a href='https://learn.microsoft.com/en-us/azure/mysql/' target='_blank'>Azure Database for MySQL documentation</a>.`,
342+
'Azure Synapse Analytics': `Azure Synapse Analytics is an integrated analytics service that accelerates time to insight across data warehouses and big data systems. It brings together big data and data warehousing into a single service for end-to-end analytics. Learn more at <a href='https://learn.microsoft.com/en-us/azure/synapse-analytics/' target='_blank'>Azure Synapse Analytics documentation</a>.`,
343+
'Azure Databricks': `Azure Databricks is an Apache Spark-based analytics platform optimized for the Microsoft Azure cloud. It provides collaborative notebooks, integrated workflows, and enterprise-grade security for big data analytics and AI. Learn more at <a href='https://learn.microsoft.com/en-us/azure/databricks/' target='_blank'>Azure Databricks documentation</a>.`,
344+
'Azure Cache for Redis': `Azure Cache for Redis is a fully managed, in-memory cache that enables high-performance and scalable architectures. It is based on the popular open-source Redis cache and provides sub-millisecond data access to power fast, scalable applications. Learn more at <a href='https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/' target='_blank'>Azure Cache for Redis documentation</a>.`,
345+
'SQL Server on Azure Virtual Machines': `SQL Server on Azure Virtual Machines enables you to use full versions of SQL Server in the cloud without having to manage any on-premises hardware. It provides full control over the SQL Server instance and operating system. Learn more at <a href='https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/sql-server-on-azure-vm-iaas-overview' target='_blank'>SQL Server on Azure VM documentation</a>.`,
346+
'MongoDB Atlas on Azure (SaaS)': `MongoDB Atlas on Azure is a fully managed MongoDB service that automates deployment, scaling, and management of MongoDB clusters on Azure. Learn more at <a href='https://www.mongodb.com/atlas/azure' target='_blank'>MongoDB Atlas on Azure documentation</a>.`,
347+
'Oracle Database on Azure (IaaS)': `Oracle Database on Azure enables you to run Oracle Database workloads on Azure infrastructure, providing high availability, security, and integration with Azure services. Learn more at <a href='https://learn.microsoft.com/en-us/azure/architecture/example-scenario/oracle/oracle-db-migration-azure/' target='_blank'>Oracle Database on Azure documentation</a>.`,
348+
'Azure Managed Instance for Apache Cassandra': `Azure Managed Instance for Apache Cassandra is a managed service that provides scalability and high availability for Cassandra workloads, with automated patching, scaling, and hybrid deployment support. Learn more at <a href='https://learn.microsoft.com/en-us/azure/managed-instance-apache-cassandra/' target='_blank'>Azure Managed Instance for Apache Cassandra documentation</a>.`,
349+
'Azure Cosmos DB for MongoDB': `Azure Cosmos DB for MongoDB is a fully managed, scalable, and highly available database service that supports MongoDB workloads with global distribution and low-latency access. Learn more at <a href='https://learn.microsoft.com/en-us/azure/cosmos-db/mongodb/mongodb-introduction' target='_blank'>Azure Cosmos DB for MongoDB documentation</a>.`
350+
};
351+
if (rec && defs[rec]) {
352+
document.getElementById('extended-service-def').innerHTML = defs[rec];
353+
} else {
354+
document.getElementById('extended-service-def').innerHTML = 'For more information about this Azure service, please refer to the <a href="https://azure.microsoft.com/en-us/products/category/databases/" target="_blank">official Azure documentation</a>.';
355+
}
304356
}
305357

306358
// --- Reset Button Logic ---

0 commit comments

Comments
 (0)