Skip to content

Aws Dynamodb

DodaTech 2 min read

title: "Cum să lucrezi cu DynamoDB în AWS — Ghid rapid" description: "Creare tabele DynamoDB, inserare itemi, interogări și gestionare indexuri în AWS" weight: 818 date: 2025-01-15 draft: false tags: [aws, dynamodb, nosql, baze-de-date, quick-fix]

Amazon DynamoDB este un serviciu de baze de date NoSQL complet gestionat, care oferă performanță la nivel de milisecunde la orice scară, ideal pentru aplicații web, mobile și IoT.

Problema

Bazele de date relaționale tradiționale au dificultăți cu scalarea orizontală și performanța la volume mari de date. Administrarea clusterelor și optimizarea interogărilor devin complexe pe măsură ce aplicația crește.

Abordarea Greșită

-- Interogare lentă pe MySQL cu milioane de rânduri
SELECT * FROM users WHERE email = 'test@example.com';
-- Index lipsă → full table scan (secunde)

Abordarea Corectă

Creează un tabel DynamoDB și interoghează-l:

# Creare tabel
aws dynamodb create-table \
  --table-name Users \
  --attribute-definitions AttributeName=UserId,AttributeType=S \
  --key-schema AttributeName=UserId,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST

# Verificare tabel
aws dynamodb describe-table --table-name Users

Output:

{
    "Table": {
        "TableName": "Users",
        "TableStatus": "ACTIVE",
        "ItemCount": 0
    }
}

Operațiuni CRUD

# Inserare item
aws dynamodb put-item \
  --table-name Users \
  --item '{
    "UserId": {"S": "user-1"},
    "Nume": {"S": "Popescu"},
    "Email": {"S": "popescu@example.com"},
    "Varsta": {"N": "30"}
  }'

# Citire item după cheie
aws dynamodb get-item \
  --table-name Users \
  --key '{"UserId": {"S": "user-1"}}'

# Interogare
aws dynamodb query \
  --table-name Users \
  --key-condition-expression "UserId = :uid" \
  --expression-attribute-values '{":uid": {"S": "user-1"}}'

# Scanare (evită în producție)
aws dynamodb scan --table-name Users --limit 10

Indexuri Secundare

# Creare GSI pentru interogări după Email
aws dynamodb update-table \
  --table-name Users \
  --attribute-definitions AttributeName=Email,AttributeType=S \
  --global-secondary-index-updates '[{
    "Create": {
      "IndexName": "EmailIndex",
      "KeySchema": [{"AttributeName": "Email", "KeyType": "HASH"}],
      "Projection": {"ProjectionType": "ALL"}
    }
  }]'

Greșeli Comune

  1. Scan în loc de Queryscan citește tot tabelul; folosește query cu cheia primară.
  2. Fără GSI pentru pattern-uri de acces — proiectează tabelele pe baza modului în care interoghezi.
  3. Throughput provisionat ineficient — folosește PAY_PER_REQUEST pentru trafic imprevizibil.
  4. Item-uri prea mari — DynamoDB limitează item-urile la 400 KB.
  5. Fără TTL — setează Time-to-Live pentru ștergerea automată a datelor vechi.

FAQ

### Ce este DynamoDB?

DynamoDB este o bază de date NoSQL cheie-valoare și document, complet gestionată, cu performanță constantă la orice scară.

Care e diferența dintre DynamoDB și RDS?

DynamoDB este NoSQL, serverless și scalează automat. RDS este relațional, gestionat, dar cu scalare verticală.

Ce este un Global Secondary Index (GSI)?

Un GSI permite interogări pe alte atribute decât cheia primară, cu propriul set de throughput și proiecții.

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. DodaTech integrează securitatea în fiecare soluție cloud.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro