ข้ามไปที่เนื้อหา

AWS Cloud Quest · แลป 1

First NoSQL Database — Amazon DynamoDB

เป้าหมายของแล็บ

ฝึกทำความเข้าใจและใช้งานฐานข้อมูล NoSQL แบบ managed service ของ AWS โดยสร้างหรือใช้งานตาราง เพิ่มข้อมูล (item) และเข้าใจ primary key ที่ใช้ระบุและค้นหาข้อมูล

Amazon DynamoDB คืออะไร

Amazon DynamoDB เป็นฐานข้อมูล NoSQL แบบ fully managed ที่รองรับรูปแบบข้อมูล key-value และ document สามารถขยายตามความต้องการและออกแบบให้ตอบสนองได้รวดเร็ว โดย AWS ดูแลโครงสร้างพื้นฐานของฐานข้อมูลให้

เหมาะกับงาน เช่น ประวัติการใช้งานของผู้ใช้ ตะกร้าสินค้า session เกม และแอปพลิเคชันที่ต้องรองรับการอ่าน/เขียนจำนวนมาก ไม่ใช่ฐานข้อมูลเชิงสัมพันธ์แบบตารางที่ต้องออกแบบ JOIN เป็นหลัก

คำศัพท์ที่ต้องจำ

  • Table: กลุ่มข้อมูลที่เก็บรายการประเภทเดียวกัน
  • Item: รายการข้อมูลหนึ่งรายการ คล้าย record แต่ไม่จำเป็นต้องมีชุด attribute เหมือนกันทุก item
  • Attribute: ฟิลด์หรือคุณสมบัติของ item เช่น userId, rating, lastDateWatched
  • Primary key: คีย์หลักที่ใช้ระบุ item อย่างเป็นเอกลักษณ์
  • Partition key: คีย์ที่ DynamoDB ใช้กระจายข้อมูลไปยังพาร์ทิชันภายใน
  • Sort key: คีย์เพิ่มเติมที่ช่วยจัดเรียงและค้นหารายการภายใต้ partition key เดียวกัน

Primary key มีรูปแบบหลัก 2 แบบ:

  1. Partition key อย่างเดียว (simple primary key): ค่า partition key ต้องไม่ซ้ำกันในแต่ละ item ของตาราง
  2. Partition key + sort key (composite primary key): สามารถมีหลาย item ที่ใช้ partition key เดียวกันได้ แต่คู่ค่าของ partition key และ sort key ต้องไม่ซ้ำกัน

ชนิดข้อมูลที่ใช้เป็น primary key ได้ ได้แก่ String (S), Number (N), Binary (B) ส่วน attribute ทั่วไปใช้ชนิดข้อมูลอื่นที่ DynamoDB รองรับได้ตามความเหมาะสม

แนวทางทำแล็บ

  1. เปิด AWS Console จากหน้าของ Cloud Quest และเข้า Amazon DynamoDB
  2. ตรวจสอบว่าต้องสร้าง table ใหม่หรือใช้ table ที่โจทย์เตรียมไว้
  3. หากโจทย์ให้สร้าง table ให้กรอกชื่อตารางและ key ตามที่ระบุอย่างตรงตัว
  4. หากมี partition key และ sort key ให้เลือกชนิดข้อมูลให้ถูกต้อง เช่น String หรือ Number
  5. สร้าง table แล้วเข้า Explore table items หรือหน้าจอสำหรับเพิ่ม/ดู item
  6. เพิ่ม item พร้อม attribute และชนิดข้อมูลที่ตรงกับโจทย์
  7. ตรวจสอบข้อมูลที่บันทึก และกลับไปให้ Cloud Quest ตรวจสอบภารกิจ

ตัวอย่างเพื่อเข้าใจแนวคิด: ตาราง UserVideoHistory อาจใช้ userId เป็น partition key และ lastDateWatched เป็น sort key ได้ในตัวอย่างหนึ่ง แต่ชื่อและชนิดข้อมูลจริงต้องตรวจจากโจทย์ในแล็บ อย่าคัดลอกตัวอย่างนี้ไปใช้โดยไม่ตรวจสอบ

จุดที่มักผิด

  • สะกดชื่อ table หรือ attribute ไม่ตรงตามโจทย์
  • เลือกชนิดข้อมูลผิด เช่น ต้องการ Number แต่บันทึกเป็น String
  • เข้าใจว่า partition key ต้องไม่ซ้ำแม้มี sort key: จริง ๆ แล้วเมื่อใช้ composite key ค่า partition key ซ้ำได้ แต่คู่ key ต้องไม่ซ้ำ
  • คิดว่า DynamoDB เป็น SQL database หรือรองรับการ JOIN แบบ relational database โดยตรง
  • คิดว่า NoSQL หมายถึงไม่มี schema เลย: DynamoDB มีข้อกำหนดเรื่อง key และชนิดข้อมูลของ key แม้ attribute ทั่วไปจะยืดหยุ่นกว่า

แนวคิดการอ่าน/เขียนและค่าใช้จ่าย

DynamoDB มีโหมด capacity ที่สำคัญ ได้แก่ On-demand ซึ่งเหมาะเมื่อรูปแบบการใช้งานไม่แน่นอนและต้องการให้ระบบจัดการ capacity และ Provisioned ซึ่งกำหนด read/write capacity และอาจใช้ Auto Scaling ปรับ capacity ตาม workload ได้ ค่าใช้จ่ายจริงขึ้นกับโหมด capacity, ขนาดข้อมูล, รูปแบบการอ่าน/เขียน และคุณสมบัติที่เปิดใช้ ควรตรวจราคา AWS ปัจจุบันก่อนประมาณการ

จำก่อนสอบ

  • DynamoDB = managed NoSQL แบบ key-value/document
  • Table ประกอบด้วย items และ attributes
  • Partition key ช่วยระบุตำแหน่งการกระจายข้อมูล
  • Composite key = partition key + sort key
  • ชื่อ attribute และชนิดข้อมูลต้องตรงกับโจทย์