DynamoDB indexes, streams และการปรับแต่งประสิทธิภาพ

การใช้งาน Data Stores บน AWS

Dunieski Otano

AWS Solutions Architect

Query ที่ทำไม่ได้

  • ตาราง: userId (partition key), orderDate (sort key)
  • ความต้องการ: ค้นหาคำสั่งซื้อด้วยอีเมล
  • ปัญหา: ไม่สามารถ query บน attribute ที่ไม่ใช่ key
  • วิธีแก้: Global Secondary Index
    • Index รองรับรูปแบบการเข้าถึงข้อมูลได้หลายแบบ

gsi

การใช้งาน Data Stores บน AWS

Global Secondary Index (GSI)

  • partition key ต่างจากตารางหลัก
  • เพิ่มได้ทุกเมื่อหลังสร้างตาราง
  • รองรับเฉพาะ eventually consistent reads
  • กรณีใช้งาน: Query บน attribute ที่ไม่ใช่ primary key

gsi_1

การใช้งาน Data Stores บน AWS

Local Secondary Index (LSI)

  • partition key เดียวกัน แต่ sort key ต่างกัน
  • ต้องสร้างพร้อมกับตาราง
  • รองรับ strongly consistent reads
  • กรณีใช้งาน: จัดเรียงข้อมูลใน partition แบบอื่น

lsi

การใช้งาน Data Stores บน AWS

GSI vs LSI — เลือกใช้เมื่อไหร่

  • GSI: partition key ต่างกัน เพิ่มได้ทุกเมื่อ ใช้ eventual consistency
  • LSI: partition key เดียวกัน สร้างพร้อมตาราง ใช้ strong consistency
  • ที่นิยมสุด: GSI สำหรับรูปแบบการเข้าถึงข้อมูลที่ยืดหยุ่น

gsi_or_lsi

การใช้งาน Data Stores บน AWS

การ serialization ข้อมูลสำหรับ DynamoDB

  • ปัญหา: DynamoDB ไม่รองรับการจัดเก็บ Python objects โดยตรง
  • วิธีแก้: แปลงเป็น JSON หรือ binary
  • JSON: ข้อมูลทั่วไป (dict, list) — json.dumps()
  • Base64: ข้อมูล binary (รูปภาพ, token)

serialization

การใช้งาน Data Stores บน AWS

DynamoDB Streams สำหรับการจับการเปลี่ยนแปลงข้อมูล

  • Streams: บันทึกการเปลี่ยนแปลงทั้งหมดของตารางตามลำดับ
  • จับเหตุการณ์: Insert, Update, Delete
  • กรณีใช้งาน: Audit log, replication, trigger
  • ประมวลผลร่วมกับ Lambda เพื่อตอบสนองแบบ real-time

streams

การใช้งาน Data Stores บน AWS

Time-to-Live สำหรับการหมดอายุอัตโนมัติ

  • TTL: ลบ item อัตโนมัติเมื่อหมดอายุ
  • กำหนด Unix timestamp ใน TTL attribute
  • เหมาะสำหรับ: Session, token ชั่วคราว, cache
  • ไม่มีค่าใช้จ่ายสำหรับการลบด้วย TTL

ttl

การใช้งาน Data Stores บน AWS

ประเภทของ index projection และประสิทธิภาพ query

  • KEYS_ONLY: เฉพาะ key attribute ขนาดเล็กที่สุด
  • INCLUDE: Key + attribute ที่ระบุ
  • ALL: ทุก attribute ขนาดใหญ่สุด ไม่ต้อง fetch เพิ่ม
  • ต้องแลก: ต้นทุนพื้นที่จัดเก็บ vs ประสิทธิภาพ query

index

การใช้งาน Data Stores บน AWS

Batch operations และ transactions

  • BatchGetItem: อ่านได้สูงสุด 100 item, ไม่เกิน 16MB
  • BatchWriteItem: เขียนได้สูงสุด 25 item
  • TransactWriteItems: ACID ครอบคลุมสูงสุด 100 item
  • ใช้เพื่อ: ประสิทธิภาพ (batch) หรือความสอดคล้อง (transaction)

batch

การใช้งาน Data Stores บน AWS

มาฝึกกันเถอะ!

การใช้งาน Data Stores บน AWS

Preparing Video For Download...