สถาปัตยกรรม Cosmos DB

พัฒนาแอปพลิเคชันบน Azure Storage

Shahzad Mian

Content developer, DataCamp

Azure Cosmos DB

Azure_Cosmos_DB.svg.png

พัฒนาแอปพลิเคชันบน Azure Storage

ปัญหาที่พบ

ปัญหาของ Cosmos DB

พัฒนาแอปพลิเคชันบน Azure Storage

Cosmos DB คืออะไร?

 

CosmosDB

  • ฐานข้อมูล NoSQL แบบ Multi-model กระจายทั่วโลก
  • NoSQL — จัดเก็บข้อมูลแบบยืดหยุ่น คล้ายโฟลเดอร์
  • รองรับหลาย API และหลายประเภทข้อมูล
  • เลือก API ที่เหมาะกับงานได้เลย:
    • SQL (Core) สำหรับเอกสาร JSON
    • MongoDB สำหรับนักพัฒนา Mongo
    • Cassandra สำหรับข้อมูลแบบ wide-column
    • Gremlin สำหรับความสัมพันธ์แบบกราฟ
    • Table API สำหรับจัดเก็บแบบ key-value
พัฒนาแอปพลิเคชันบน Azure Storage

Cosmos DB สำหรับนักพัฒนา

  • ออกแบบมาเพื่อนักพัฒนาโดยเฉพาะ
  • จัดทำดัชนีอัตโนมัติ ไม่ต้องจัดการสคีมา
  • คิวรีได้รวดเร็ว
  • ระดับ Consistency 5 แบบ: ตั้งแต่ Strong ถึง Eventual
  • ต้องเลือกสมดุลระหว่างประสิทธิภาพและความสอดคล้องของข้อมูล
    • Strong — ทุกคนเห็นข้อมูลเดียวกันทันที
    • Eventual — ข้อมูลอัปเดตตามมาทีหลัง

 

Strong และ Eventual Consistency

พัฒนาแอปพลิเคชันบน Azure Storage

การปรับขนาดและ Throughput (RU/s)

โหมด Provisioned

  • Request units per second (RU/s) = หน่วยวัดประสิทธิภาพของ Cosmos DB
  • การอ่าน เขียน หรือคิวรีแต่ละครั้งใช้ RU/s
  • เลือกได้ระหว่างการกำหนดค่าคงที่หรือ Autoscale
พัฒนาแอปพลิเคชันบน Azure Storage

การปรับขนาดและ Throughput (RU/s)

การปรับขนาด

  • Request units per second (RU/s) = หน่วยวัดประสิทธิภาพของ Cosmos DB
  • การอ่าน เขียน หรือคิวรีแต่ละครั้งใช้ RU/s
  • เลือกได้ระหว่างการกำหนดค่าคงที่หรือ Autoscale
  • Autoscale ปรับค่าอัตโนมัติตามความต้องการ
พัฒนาแอปพลิเคชันบน Azure Storage

Elastic Scale และการแบ่ง Partition

  • Cosmos DB ปรับขนาดด้วยการแบ่ง Partition
  • แต่ละ Container ใช้ Partition Key
  • Key ช่วยจัดกลุ่มข้อมูลที่เกี่ยวข้องไว้ด้วยกัน
  • ตัวอย่าง: Cipher Coffee ใช้ /customerId สำหรับคำสั่งซื้อ
  • คำสั่งซื้อทั้งหมดของลูกค้าจะอยู่ใน Partition เดียวกันเมื่อใช้ /customerId เป็น Partition Key
  • คิวรียังคงรวดเร็วแม้ข้อมูลจะเพิ่มขึ้น
  • Hot Partition: การกระจาย Partition ไม่สม่ำเสมอ ทำให้ประสิทธิภาพลดลง

การปรับขนาดแบบ Elastic และการแบ่ง Partition

พัฒนาแอปพลิเคชันบน Azure Storage

การกระจายข้อมูลทั่วโลก

  • จำลองข้อมูลไปยัง Azure Region ใดก็ได้อย่างง่ายดาย
  • เพียงติ๊กช่องเลือก ไม่ต้องตั้งค่าเพิ่มเติม
  • หาก Region ใดล้มเหลว การรับส่งข้อมูลจะเปลี่ยนเส้นทางอัตโนมัติ
  • ไม่มีเวลาหยุดทำงาน ไม่สูญเสียข้อมูล
  • พร้อมให้บริการได้ทันทีเสมอ

การกระจายข้อมูลทั่วโลก

พัฒนาแอปพลิเคชันบน Azure Storage

การ Monitoring และการเพิ่มประสิทธิภาพต้นทุน

  • ติดตามประสิทธิภาพได้ใน Azure Portal
  • ดู Metric ต่างๆ เช่น RU/s, Latency และค่าใช้จ่ายของ Request
  • เหมือนแดชบอร์ดรถยนต์ — เห็นความเร็วและการใช้เชื้อเพลิงได้ทันที
  • ทีมวิศวกรของ Cipher Coffee วิเคราะห์ Metric เหล่านี้
  • ลดต้นทุนด้วยการปรับ Throughput แบบ Dynamic

การ Monitoring

พัฒนาแอปพลิเคชันบน Azure Storage

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

พัฒนาแอปพลิเคชันบน Azure Storage

Preparing Video For Download...