Drop DynamoDB from scope

Was originally a proof of concept in the PHP version. Dropped in
production as too expensive. Removed all references from docs.
Supported backends are MySQL/MariaDB and MongoDB only.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-31 11:06:20 -07:00
parent c87c3f1bac
commit 850993edb1
2 changed files with 9 additions and 10 deletions

View File

@@ -38,7 +38,7 @@ Client Request
NamasteCore Trait (unified CRUD interface) NamasteCore Trait (unified CRUD interface)
Database Adapter (MySQL · MongoDB · DynamoDB) Database Adapter (MySQL · MongoDB)
DBA-owned Schema (views · stored procedures · functions) DBA-owned Schema (views · stored procedures · functions)
@@ -51,7 +51,7 @@ Client Request
## Core Principles ## Core Principles
1. **AMQP-first** — all data access flows through the broker layer, no exceptions 1. **AMQP-first** — all data access flows through the broker layer, no exceptions
2. **Database agnostic** — MySQL/MariaDB, MongoDB, and DynamoDB behind a unified trait; no DB-specific logic leaks upward 2. **Database agnostic** — MySQL/MariaDB and MongoDB behind a unified trait; no DB-specific logic leaks upward
3. **DBA-owned schema** — all data access goes through named database objects; the application calls template names, not queries 3. **DBA-owned schema** — all data access goes through named database objects; the application calls template names, not queries
4. **Template-driven CRUD** — each data domain is a struct implementing `NamasteCore`; adding a domain means adding one file 4. **Template-driven CRUD** — each data domain is a struct implementing `NamasteCore`; adding a domain means adding one file
5. **Config-driven nodes** — all nodes run the same binary; role is determined entirely by startup config 5. **Config-driven nodes** — all nodes run the same binary; role is determined entirely by startup config
@@ -125,7 +125,7 @@ The `config` crate deep-merges these at startup. Only keys present in `env.toml`
| Structured logging (journald + console) | Done | | Structured logging (journald + console) | Done |
| Broker pool | Next | | Broker pool | Next |
| NamasteCore trait | Planned | | NamasteCore trait | Planned |
| Database adapters (MySQL, MongoDB, DynamoDB) | Planned | | Database adapters (MySQL, MongoDB) | Planned |
| Factory dispatch | Planned | | Factory dispatch | Planned |
| AI database object generation | Phase 2 | | AI database object generation | Phase 2 |

View File

@@ -18,7 +18,7 @@ This is not a greenfield project. The architecture is proven. The Rust rewrite e
**Never violate these — they are the product:** **Never violate these — they are the product:**
1. **AMQP-first** — all data access flows through RabbitMQ message brokers. No direct database connections from the application layer. Ever. 1. **AMQP-first** — all data access flows through RabbitMQ message brokers. No direct database connections from the application layer. Ever.
2. **Database agnostic** — the framework supports MySQL/MariaDB, MongoDB, and DynamoDB through a unified trait/factory pattern. No database-specific logic leaks into the broker or factory layers. 2. **Database agnostic** — the framework supports MySQL/MariaDB and MongoDB through a unified trait/factory pattern. No database-specific logic leaks into the broker or factory layers.
3. **DBA-owned schema** — developers never write queries. All data access goes through named database objects (views, stored procedures, functions). The application layer calls template names, not SQL. 3. **DBA-owned schema** — developers never write queries. All data access goes through named database objects (views, stored procedures, functions). The application layer calls template names, not SQL.
4. **Template-driven CRUD** — each data domain is a Rust struct implementing the `NamasteCore` trait. Adding a domain means adding a struct. Nothing else changes. 4. **Template-driven CRUD** — each data domain is a Rust struct implementing the `NamasteCore` trait. Adding a domain means adding a struct. Nothing else changes.
5. **Single codebase, config-driven nodes** — all service nodes run the same binary. Node role (appServer, admin, segundo, tercero) is determined entirely by startup configuration. 5. **Single codebase, config-driven nodes** — all service nodes run the same binary. Node role (appServer, admin, segundo, tercero) is determined entirely by startup configuration.
@@ -34,8 +34,7 @@ beds/
│ │ └── meta.rs # Request metadata parsing │ │ └── meta.rs # Request metadata parsing
│ ├── adapters/ │ ├── adapters/
│ │ ├── mysql.rs # gacPDO equivalent │ │ ├── mysql.rs # gacPDO equivalent
│ │ ── mongodb.rs # gacMongoDB equivalent │ │ ── mongodb.rs # gacMongoDB equivalent
│ │ └── dynamodb.rs # gacDdb equivalent
│ ├── brokers/ │ ├── brokers/
│ │ ├── pool.rs # Broker pool management │ │ ├── pool.rs # Broker pool management
│ │ └── broker.rs # Individual broker task │ │ └── broker.rs # Individual broker task
@@ -55,7 +54,7 @@ beds/
| PHP | Rust | | PHP | Rust |
|-----|------| |-----|------|
| `gaaNamasteCore` abstract class | `NamasteCore` trait | | `gaaNamasteCore` abstract class | `NamasteCore` trait |
| `gacMongoDB`, `gacPDO`, `gacDdb` | Structs implementing `NamasteCore` | | `gacMongoDB`, `gacPDO` | Structs implementing `NamasteCore` |
| `gacFactory::grabWidget()` | Match/dispatch returning `Box<dyn NamasteCore>` | | `gacFactory::grabWidget()` | Match/dispatch returning `Box<dyn NamasteCore>` |
| Broker process pool | `tokio::spawn` task pool | | Broker process pool | `tokio::spawn` task pool |
| SIGCHLD/planned obsolescence | Eliminated — Tokio tasks don't leak | | SIGCHLD/planned obsolescence | Eliminated — Tokio tasks don't leak |
@@ -84,13 +83,13 @@ tokio = { version = "1", features = ["full"] }
lapin = "2" # AMQP/RabbitMQ lapin = "2" # AMQP/RabbitMQ
sqlx = { version = "0.7", features = ["mysql", "runtime-tokio-native-tls"] } sqlx = { version = "0.7", features = ["mysql", "runtime-tokio-native-tls"] }
mongodb = "2" # MongoDB async driver mongodb = "2" # MongoDB async driver
aws-sdk-dynamodb = "1" # DynamoDB
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
serde_json = "1" serde_json = "1"
config = "0.14" # TOML config management config = "0.14" # TOML config management
thiserror = "1" thiserror = "1"
tracing = "1" tracing = "0.1"
tracing-subscriber = "1" tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing-journald = "0.3"
``` ```
## Service Nodes ## Service Nodes