Last refreshed: loading…
eggs
new hatch queue
ducklings
registered users
spaceducks
bonded agents
certs
birth certificates
audit_log
total events
🔄 Loading database health from /beak/system/status…
DynamoDB Cost Estimator

Consumed Capacity & Monthly Cost

Calculating…

Estimated WCU/RCU per 24h based on live row counts, then priced at PAY_PER_REQUEST rates.

Assumptions: 1 WCU/new egg · 2 RCU/peck · 1 RCU/status check every 30s · 1 WCU/audit event · PAY_PER_REQUEST pricing
Est. WCU / 24h write capacity units
Est. RCU / 24h read capacity units
Est. Monthly Cost USD at PAY_PER_REQUEST
WCU rate$1.25 per million WCU (us-east-1)
RCU rate$0.25 per million RCU (us-east-1)
Status checks / day
Peck ops / day (est.)
Break-even for provisioned mode
Provisioned recommendation
Backend: GET /beak/system/status · Fields: database.{eggs,ducklings,birth_certificates,connections,audit_log}

⚠️ Capacity Alert Thresholds

Set warning (amber) and critical (red) row-count thresholds per DynamoDB table. Thresholds saved to sd_ddb_alert_thresholds localStorage.

📊 GSI Index Efficiency

Global Secondary Index analysis — read/write ratios, hot partition risk, and optimisation recommendations.

DC-260
email_index
eggs table Hot partition risk: Low–Medium
Partition key: email (high cardinality) · Projection: ALL · Billing: PAY_PER_REQUEST
Estimated read/write ratio: 8:1 (query-heavy on email lookup at hatch)
Read utilisation — healthy
💡 Recommendation: email is high-cardinality (unique per user) — low hot partition risk. Consider sparse projection (KEYS_ONLY or INCLUDE specific attrs) if storage cost is a concern. No structural change needed at current scale.
fields @timestamp, @message, requestId | filter ispresent(key.email_index) | stats count(*) as accessCount by bin(1h) | sort @timestamp desc | limit 100
owner_index
connections table Hot partition risk: Medium–High
Partition key: owner_id (medium cardinality) · Projection: ALL · Billing: PAY_PER_REQUEST
Estimated read/write ratio: 4:1 (moderate write load from connection updates)
Moderate utilisation — monitor growth
Hot partition risk: If a small number of owner_ids hold many connections, those partitions will receive disproportionate WCU traffic. Monitor per-partition WCU in CloudWatch. Mitigation: add a sort key suffix (shard key pattern) or use write sharding if connection fan-out grows. Consider sparse GSI if most items don't need owner_index.
fields @timestamp, @message | filter @message like /owner_index/ | stats count() as writes by bin(5m) | sort @timestamp desc | limit 200
duck_id_index
audit_log table Hot partition risk: Low
Partition key: duck_id (high cardinality) · Sort key: created_at · Projection: KEYS_ONLY (recommended)
Estimated read/write ratio: 2:1 (write-heavy — every peck/auth event writes)
Write-heavy index — optimise projection
💡 Recommendation: Use KEYS_ONLY or INCLUDE only queried attributes to reduce GSI replication write cost. audit_log grows fastest of all tables — each write replicates to this GSI. Add TTL on created_at to expire old records and reduce index size over time.
fields @timestamp, @message, duck_id | filter @message like /ConditionalCheckFailed/ or @message like /ProvisionedThroughputExceeded/ | stats count() by duck_id, bin(5m) | sort count desc | limit 50
cert_id_index
birth_certificates table Hot partition risk: Low
Partition key: cert_id (UUID — very high cardinality) · Projection: ALL · Billing: PAY_PER_REQUEST
Estimated read/write ratio: 12:1 (read-heavy — certs read on every verification)
Read-dominant — healthy for PAY_PER_REQUEST
Healthy pattern: UUID partition key ensures uniform distribution. High read:write ratio is expected for cert verification. Consider DAX (DynamoDB Accelerator) if verification requests spike at hatch bursts.
fields @timestamp, requestId | filter @message like /cert_id_index/ | stats count() as lookups by bin(1h) | sort @timestamp desc | limit 100