DynamoDB dizinleri, akışlar ve optimizasyon

AWS'de Veri Depolarını Kullanma

Dunieski Otano

AWS Solutions Architect

Yapılamayan sorgu

  • Tablo: userId (bölüm anahtarı), orderDate (sıralama anahtarı)
  • İhtiyaç: E-postaya göre sipariş bul
  • Sorun: Anahtar olmayan alanlarda sorgu yok
  • Çözüm: Global Secondary Index
    • Dizinler birden çok erişim desenini sağlar

gsi

AWS'de Veri Depolarını Kullanma

Global Secondary Index (GSI)

  • Temel tablodan farklı bölüm anahtarı
  • Tablo oluşturulduktan sonra da eklenebilir
  • Yalnızca sonunda tutarlı okuma
  • Kullanım: Birincil anahtar olmayan alanlarda sorgu

gsi_1

AWS'de Veri Depolarını Kullanma

Local Secondary Index (LSI)

  • Aynı bölüm anahtarı, farklı sıralama anahtarı
  • Tablo oluşturulurken tanımlanmalıdır
  • Güçlü tutarlı okumayı destekler
  • Kullanım: Bölüm içinde alternatif sıralamalar

lsi

AWS'de Veri Depolarını Kullanma

GSI vs LSI - ne zaman hangisi

  • GSI: Farklı bölüm anahtarı, her zaman eklenir, sonunda tutarlılık
  • LSI: Aynı bölüm anahtarı, tablo oluşturulurken eklenir, güçlü tutarlılık
  • En yaygın: Esnek erişim desenleri için GSI

gsi_mi_lsi_mi

AWS'de Veri Depolarını Kullanma

DynamoDB için veri serileştirme

  • Sorun: DynamoDB Python nesnelerini saklamaz
  • Çözüm: JSON'a ya da ikili veriye serileştir
  • JSON: Basit veri (dict, list) - json.dumps()
  • Base64: İkili veri (görseller, jetonlar)

serileştirme

AWS'de Veri Depolarını Kullanma

Değişiklik verisi yakalama için DynamoDB Streams

  • Streams: Tüm tablo değişikliklerinin sıralı günlüğü
  • Yakalar: Ekleme, güncelleme, silme
  • Kullanım alanları: Denetim günlükleri, çoğaltma, tetikleyiciler
  • Gerçek zamanlı tepki için Lambda ile işle

akışlar

AWS'de Veri Depolarını Kullanma

Otomatik sona erme için Time-to-Live

  • TTL: Süre dolunca öğeleri otomatik siler
  • TTL alanına Unix zaman damgası koyun
  • Uygun: Oturumlar, geçici jetonlar, önbellek
  • TTL silmeleri için ek maliyet yok

ttl

AWS'de Veri Depolarını Kullanma

Dizin yansıtma türleri ve sorgu performansı

  • KEYS_ONLY: Yalnızca anahtarlar, en küçük boyut
  • INCLUDE: Anahtarlar + belirtilen alanlar
  • ALL: Tüm alanlar, en büyük boyut, ek getirime gerek yok
  • Ödünleşim: Depolama maliyeti vs sorgu performansı

dizin

AWS'de Veri Depolarını Kullanma

Toplu işlemler ve işlemsellik

  • BatchGetItem: En fazla 100 öğe okur, 16 MB sınır
  • BatchWriteItem: En fazla 25 öğe yazar
  • TransactWriteItems: En fazla 100 öğe üzerinde ACID
  • Kullanım: Verimlilik (toplu) veya tutarlılık (işlemler)

toplu

AWS'de Veri Depolarını Kullanma

Haydi pratik yapalım!

AWS'de Veri Depolarını Kullanma

Preparing Video For Download...