การดำเนินการ CRUD ใน DynamoDB และ Query vs Scan
การใช้งาน Data Stores บน AWS
Dunieski Otano
AWS Solutions Architect
ความผิดพลาดที่แพงมาก
นักพัฒนาใช้ Scan เพื่อค้นหาผู้ใช้หนึ่งคน
อ่านข้อมูลทั้งตาราง 1 ล้านรายการ
ค่าใช้จ่าย: $500 สำหรับการค้นหาครั้งเดียว
ถ้าใช้ Query จะเสียเพียง $0.01
การดำเนินการ CRUD ใน DynamoDB
PutItem
: สร้างหรือแทนที่รายการ
GetItem
: อ่านรายการด้วย primary key
UpdateItem
: แก้ไข attribute ที่ต้องการ
DeleteItem
: ลบรายการ
Query
: ดึงข้อมูลด้วย partition key (มีประสิทธิภาพ)
Scan
: อ่านทั้งตาราง (มีค่าใช้จ่ายสูง)
Query vs Scan: ความแตกต่างที่สำคัญ
Query
: ต้องระบุ partition key อ่านเฉพาะรายการที่ต้องการ
รวดเร็ว มีประสิทธิภาพ ต้นทุนต่ำ
Scan
: อ่านทั้งตาราง แล้วจึงกรองข้อมูล
ช้า ค่าใช้จ่ายสูง ควรหลีกเลี่ยง
กฎ: ถ้ารู้ key ให้ใช้ Query ถ้าไม่รู้ ให้ทบทวนการออกแบบ
ป้องกัน race condition ด้วย conditional expressions
ปัญหา: ผู้ใช้สองคนอัปเดตรายการเดียวกันพร้อมกัน
วิธีแก้: ใช้ conditional expressions
ตัวอย่าง: อัปเดตเฉพาะเมื่อค่าปัจจุบันตรงกับที่คาดไว้
UpdateItem expressions: การแก้ไข attribute
SET
: กำหนดค่า attribute หรือสร้าง attribute ใหม่
ADD
: เพิ่ม/ลดตัวเลข หรือเพิ่มสมาชิกใน set
REMOVE
: ลบ attribute ออกจากรายการ
DELETE
: ลบสมาชิกออกจาก set
Pagination ด้วย Query และ Scan
ปัญหา
: ผลลัพธ์ขนาดใหญ่เกินขีดจำกัด 1MB
วิธีแก้
: ใช้ pagination ด้วย LastEvaluatedKey
Limit
: กำหนดจำนวนรายการต่อหน้า
ทำซ้ำจนกว่า LastEvaluatedKey จะเป็น null
มาฝึกกันเถอะ!
การใช้งาน Data Stores บน AWS
Preparing Video For Download...