Complete breakdown of all recommendation paths. Use this to understand exactly how the wizard makes its recommendations.
| Conditions | Database Choice | Reason Code | Key Features |
|---|---|---|---|
|
Q18 Advanced Features: AI/Vector Search selected Q20 Vector Scale: Billions+ vectors |
Vector Search Engine + MongoDB (Operational) | vector-search-massive |
β’ Specialized vector DB β’ Billions of embeddings β’ MongoDB for metadata β’ Hybrid architecture |
|
Q18 Advanced Features: AI/Vector Search selected (Standard scale or not specified) |
MongoDB Atlas (Vector Search) | vector-search-standard |
β’ Atlas Vector Search β’ Semantic search β’ RAG applications β’ ML embeddings storage |
| Conditions | Database Choice | Reason Code | Key Features |
|---|---|---|---|
|
Q18 Advanced Features: Full-Text Search selected Q19 Search Scale: Petabyte-Scale |
Search Engine + MongoDB (Operational) | fulltext-search-petabyte |
β’ Petabyte-scale search β’ Log analytics optimized β’ MongoDB for operational β’ Dedicated search cluster |
|
Q18 Advanced Features: Full-Text Search selected (Moderate scale or not specified) |
MongoDB Atlas (Atlas Search) | fulltext-search-moderate |
β’ Atlas Search β’ Lucene-based indexing β’ Fuzzy search, autocomplete β’ Single platform |
getSQLConstraints() with three tiers: isStrong (SQL-first + DB logic or heavy ACID + rigid) β RDBMS primary; hasSignificantSQLSignals (SQL-first + heavy ACID or rigid, but not strong) β both suggested; isModerate (SQL-first only) β MongoDB primary.Technical reference for the data-driven recommendation logic.
The system consists of two main components:
Each rule is an object with the following properties:
{
id: 'unique-rule-id',
conditions: {
[Q.USE_CASE]: 'iot',
[Q.TRAFFIC_PATTERN]: ['large', 'massive']
},
result: { db: "MongoDB Atlas" }
}
Conditions can also be a function for complex logic:
conditions: (answers) => {
return answers[Q.USE_CASE] === 'iot' && someComplexCheck(answers);
}
After rule evaluation, the system adds optional enhancements based on answered questions:
Many rules use getSQLConstraints(answers) to determine the appropriate recommendation tier. This returns an object with three key tiers:
| Property | Condition | Recommendation |
|---|---|---|
isStrong |
SQL-first AND (DB logic OR (heavy ACID + rigid schema)) | RDBMS primary |
hasSignificantSQLSignals |
SQL-first AND (heavy ACID OR rigid) but NOT isStrong | Both suggested (MongoDB listed first) |
isModerate |
SQL-first only (no strong data-model signals) | MongoDB primary |
Rules that use this system: sql-moderate, timeseries-universal, analytical-shallow-graph,
analytical-realtime-*, transactional-shallow-graph, iot-massive, default,
and the determinePrimaryDB fallbacks.
matrix.htmlDECISION_RULES array (search for "DECISION_RULES = [")showRecommendationDirect() for the new rule's id.showRecommendationDirect(). Without it, the rule's reason code won't generate proper architecture/reasoning output.
These rules adapt recommendations based on Q11 (Traffic Pattern):
| Massive (PB) | Tiered architecture required. No single DB handles PB efficiently. |
| Large (TB) | Option 1/2 pattern: Scale RDBMS vs Modernize to MongoDB. |
| Small/Medium | Standard recommendations. New apps: RDBMS or MongoDB both valid. |
| Question | ID | Purpose | Impact |
|---|---|---|---|
| Use Case | Q0 |
Primary use case selection | π΄ High - triggers IoT, Logs, Mobile, SaaS, E-commerce rules |
| Workload Type | Q1 |
Transactional vs Analytical | π΄ High - determines workload path |
| Analytical Nuance | Q2 |
Warehouse vs Real-time analytics | π Medium - determines DW vs operational analytics |
| Team Skillset | Q5 |
SQL-first vs Code-first | π΄π΄ Critical - key input to getSQLConstraints() |
| Migration Status | Q6 |
New app vs Modernization | π΄ High - triggers AMP features, new app options |
| Business Logic | Q8 |
App-tier vs Database (stored procs) | π΄ High - input to isStrong; triggers sql-database-logic rules |
| ACID Needs | Q9 |
Transaction requirements | π΄ High - input to isStrong + hasSignificantSQLSignals |
| Normalization | Q10 |
Rigid / Flexible / Optimizable schema | π΄ High - input to isStrong + hasSignificantSQLSignals |
| Traffic Pattern | Q11 |
Scale: Very Small β Massive | π΄π΄ Critical - determines tiered architecture |
| Distribution | Q13 |
Sharding strategy | π’ Enhancement - adds sharding guidance |
| Data Structure | Q14 |
Document / Graph / Rigid | π Medium - triggers graph + codefirst rules |
| Graph Depth | Q15 |
Shallow (β€5 hops) vs Deep (>5 hops) | π Medium - deep β Graph DB; shallow β $graphLookup |
| Access Pattern | Q16 |
Simple lookups vs Complex queries | π’ Enhancement - adds caching options |
| Latency | Q17 |
Sub-millisecond requirement | π’ Enhancement - adds Redis caching layer |
| Advanced Features | Q18 |
Vector, Search, Streams, Time Series | π΄ High - triggers specialized rules |
| Search Scale | Q19 |
Full-text search workload size | π Medium - petabyte β dedicated search engine |
| Vector Scale | Q20 |
Vector embedding count | π Medium - >100M β dedicated vector DB |
| Deployment | Q21 |
Cloud vs On-premise | π Medium - affects Atlas vs Enterprise naming |
| Security | Q22 |
Standard vs Strict compliance | π’ Enhancement - adds encryption features |
| Mobile Offline | Q23 |
Offline-first requirements | π΄ High - triggers mobile-offline rule |