การดำเนินการ CRUD ใน DynamoDB และ Query vs Scan

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

Dunieski Otano

AWS Solutions Architect

ความผิดพลาดที่แพงมาก

  • นักพัฒนาใช้ Scan เพื่อค้นหาผู้ใช้หนึ่งคน
  • อ่านข้อมูลทั้งตาราง 1 ล้านรายการ
  • ค่าใช้จ่าย: $500 สำหรับการค้นหาครั้งเดียว
  • ถ้าใช้ Query จะเสียเพียง $0.01

ความผิดพลาด

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

การดำเนินการ CRUD ใน DynamoDB

  • PutItem: สร้างหรือแทนที่รายการ
  • GetItem: อ่านรายการด้วย primary key
  • UpdateItem: แก้ไข attribute ที่ต้องการ
  • DeleteItem: ลบรายการ
  • Query: ดึงข้อมูลด้วย partition key (มีประสิทธิภาพ)
  • Scan: อ่านทั้งตาราง (มีค่าใช้จ่ายสูง)

ops

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

Query vs Scan: ความแตกต่างที่สำคัญ

  • Query: ต้องระบุ partition key อ่านเฉพาะรายการที่ต้องการ
    • รวดเร็ว มีประสิทธิภาพ ต้นทุนต่ำ
  • Scan: อ่านทั้งตาราง แล้วจึงกรองข้อมูล
    • ช้า ค่าใช้จ่ายสูง ควรหลีกเลี่ยง
  • กฎ: ถ้ารู้ key ให้ใช้ Query ถ้าไม่รู้ ให้ทบทวนการออกแบบ

scan

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

ป้องกัน race condition ด้วย conditional expressions

  • ปัญหา: ผู้ใช้สองคนอัปเดตรายการเดียวกันพร้อมกัน
  • วิธีแก้: ใช้ conditional expressions
  • ตัวอย่าง: อัปเดตเฉพาะเมื่อค่าปัจจุบันตรงกับที่คาดไว้

race

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

UpdateItem expressions: การแก้ไข attribute

  • SET: กำหนดค่า attribute หรือสร้าง attribute ใหม่
  • ADD: เพิ่ม/ลดตัวเลข หรือเพิ่มสมาชิกใน set
  • REMOVE: ลบ attribute ออกจากรายการ
  • DELETE: ลบสมาชิกออกจาก set

expressions

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

Pagination ด้วย Query และ Scan

  • ปัญหา: ผลลัพธ์ขนาดใหญ่เกินขีดจำกัด 1MB
  • วิธีแก้: ใช้ pagination ด้วย LastEvaluatedKey
  • Limit: กำหนดจำนวนรายการต่อหน้า
  • ทำซ้ำจนกว่า LastEvaluatedKey จะเป็น null

pagination

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

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

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

Preparing Video For Download...