# DynamoDB (Amazon DynamoDB)

Adres: https://softwaredictionary.org/tr/terimler/dynamodb
Kategori: Veritabanları
Son güncelleme: 2026-10-03
Okunuşu: daynemo di bi

Kısaca: Amazon DynamoDB, öğeleri anahtarla saklayan, otomatik ölçeklenen ve sorguları tek haneli milisaniyelerde yanıtlayan, AWS'de tam yönetilen NoSQL veritabanıdır.

## DynamoDB nedir?

AWS, DynamoDB'yi Amazon'un daha önceki iç sistemi Dynamo'nun fikirleri üzerine kurarak 2012'de başlattı. Çalıştıracağınız sunucu yoktur: bir tablo oluşturur, kapasite için nasıl ödeyeceğinizi seçersiniz; ya istek başına isteğe bağlı (on demand) ya da önceden ayrılmış (provisioned); depolamayı, erişilebilirlik bölgeleri arasında replikasyonu, yedekleri ve ölçeklemeyi AWS üstlenir.

Her öğe birincil anahtarıyla bulunur. Basit bir anahtar yalnızca bir bölüm anahtarıdır (partition key), `userId` gibi; bileşik bir anahtar buna `orderDate` gibi bir sıralama anahtarı (sort key) ekler, böylece tek bir bölüm birbiriyle ilgili birçok öğeyi sıralı tutabilir. DynamoDB bölümleri bölüm anahtarının hash'ine göre birçok makineye dağıtır; aramaları hızlı tutarken devasa boyutlara büyüyebilmesini sağlayan budur.

Sorgular en iyi anahtarlar boyunca çalışır: tek bir öğeyi almak ya da tek bir bölümdeki bir öğe aralığını okumak. Global ve yerel ikincil indeksler başka erişim kalıpları ekler; DynamoDB Streams tetikleyiciler ve hatlar için bir değişiklik akışı yayar; global tablolar da veriyi bölgeler arasında çoğaltır. Birden çok öğe üzerinde transaction'lar desteklenir.

Sık yapılan bir yanlış, DynamoDB'nin ilişkisel bir veritabanı gibi tasarlanabileceğini düşünmektir. Join yoktur ve plansız sorgular pahalıdır; bu yüzden tabloları ihtiyaç duyacağınızı bildiğiniz sorgular etrafında tasarlarsınız, çoğu zaman birkaç varlık türünü tek bir tabloda saklayarak. Çok sayıda farklı değeri olan bir bölüm anahtarı seçmek de önemlidir, çünkü trafiğin çoğunu alan sıcak (hot) bir anahtar kısıtlanabilir.

## Önemli noktalar

- DynamoDB, AWS üzerinde tamamen yönetilen bir key-value ve doküman veritabanıdır.
- Öğeler bir bölüm anahtarıyla, isteğe bağlı olarak bir sıralama anahtarıyla bulunur.
- Bölümleri birçok makineye dağıtarak yatay ölçeklenir.
- İkincil indeksler, stream'ler, global tablolar ve transaction'lar yerleşiktir.
- Tablolar erişim kalıplarına göre tasarlanır; join yoktur.

## Örnek: AWS SDK ile öğe yazmak ve sorgulamak (Node.js)

```javascript
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { DynamoDBDocumentClient, PutCommand, QueryCommand } from "@aws-sdk/lib-dynamodb";

const db = DynamoDBDocumentClient.from(new DynamoDBClient({ region: "eu-central-1" }));

// Partition key: userId, sort key: orderDate
await db.send(new PutCommand({
  TableName: "Orders",
  Item: { userId: "u42", orderDate: "2026-10-03", total: 49 },
}));

// All of one user's orders since October, in date order
const { Items } = await db.send(new QueryCommand({
  TableName: "Orders",
  KeyConditionExpression: "userId = :u AND orderDate >= :d",
  ExpressionAttributeValues: { ":u": "u42", ":d": "2026-10-01" },
}));
```

## Sık sorulan sorular

**DynamoDB SQL mi, NoSQL mi?**

NoSQL. Bir key-value ve doküman deposudur. AWS onun için PartiQL adlı SQL uyumlu bir sorgu dili sunar, ama veri modeli ve performans yine ilişkisel tabloları değil anahtarları izler.

**DynamoDB ile MongoDB arasındaki fark nedir?**

İkisi de doküman saklar. MongoDB'nin plansız sorguları ve toplamaları daha zengindir ve her yerde çalışabilir. DynamoDB ise yalnızca AWS'de vardır ve tamamen sunucusuzdur; sorgular tasarladığınız anahtarları ve indeksleri izlediği sürece performansı öngörülebilirdir.

**Tek tablo tasarımı (single-table design) nedir?**

Müşteriler ve siparişleri gibi birbiriyle ilgili birkaç varlık türünün tek bir tabloyu paylaştığı ve anahtarlarıyla ayırt edildiği bir DynamoDB kalıbıdır; böylece ilgili veriler tek bir sorguda okunabilir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
