Azure Cosmos DB: NoSQL ระดับโลก
สำรวจสถาปัตยกรรมหลายรูปแบบและหลายภูมิภาคของ Cosmos DB ทำความเข้าใจคีย์พาร์ติชัน และเลือกระดับความสอดคล้องที่เหมาะสมกับความต้องการของแอปพลิเคชัน
Azure Cosmos DB: NoSQL ระดับโลก เป็นบทเรียน Azure Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Azure Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Azure Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
Azure Cosmos DB คืออะไร
Azure Cosmos DB คือบริการฐานข้อมูล NoSQL แบบหลายโมเดลที่กระจายทั่วโลกของ Microsoft ออกแบบมาเพื่อให้มีความหน่วงในการอ่านและเขียนระดับมิลลิวินาทีหลักเดียวในทุกขนาดและทุกที่ทั่วโลก แตกต่างจากฐานข้อมูลแบบดั้งเดิมที่จำกัดอยู่ในภูมิภาคเดียว Cosmos DB สามารถจำลองข้อมูลไปยังภูมิภาค Azure หลายสิบแห่งพร้อมกันได้อย่างโปร่งใส
การรองรับ API หลายโมเดล
Cosmos DB รองรับ API ฐานข้อมูลหลายแบบผ่านบริการเดียว คุณสามารถใช้ NoSQL API ดั้งเดิม (เอกสาร JSON), MongoDB API สำหรับแอปที่สร้างด้วยไดรเวอร์ MongoDB, Apache Cassandra API สำหรับงานข้อมูลแบบคอลัมน์กว้าง, Gremlin API สำหรับข้อมูลกราฟ และ Table API สำหรับข้อมูลคีย์-ค่า แต่ละ API เปิดให้เข้าถึงกลไกพื้นฐานของ Cosmos DB ผ่านอินเทอร์เฟซที่คุ้นเคย
บัญชี ฐานข้อมูล และคอนเทนเนอร์
ลำดับชั้นทรัพยากรของ Cosmos DB มีสามระดับ บัญชี เป็นทรัพยากรระดับบนสุดที่กำหนดรายการภูมิภาคสำหรับการจำลองแบบและระดับความสอดคล้อง ภายในบัญชี คุณจะสร้าง ฐานข้อมูล เป็นเนมสเปซแบบตรรกะ ภายในฐานข้อมูลแต่ละชุด คุณจะสร้าง คอนเทนเนอร์ ซึ่งเป็นหน่วยที่เก็บ Items (เอกสาร) และเป็นตำแหน่งที่จัดสรรปริมาณงาน
# Create a Cosmos DB account with the NoSQL API
az cosmosdb create \
--name mycosmosaccount \
--resource-group myRG \
--kind GlobalDocumentDB \
--locations regionName=eastus failoverPriority=0 isZoneRedundant=true
# Create a database
az cosmosdb sql database create \
--account-name mycosmosaccount \
--resource-group myRG \
--name myDatabaseคีย์พาร์ติชัน: รากฐานของการปรับขนาด
คีย์พาร์ติชัน คือคุณสมบัติในทุก Item ที่ Cosmos DB ใช้กระจายข้อมูลไปยังพาร์ติชันจริง การเลือกคีย์พาร์ติชันที่เหมาะสมมีความสำคัญอย่างยิ่ง คีย์ควรมีจำนวนค่าที่แตกต่างกันสูง กระจายทราฟฟิกการเขียนอย่างสม่ำเสมอ และปรากฏอยู่ในคำค้นหาส่วนใหญ่ของคุณ การเลือกคีย์พาร์ติชันที่ไม่ดีจะทำให้เกิด พาร์ติชันร้อน ซึ่งจำกัดปริมาณงานและทำให้ประสิทธิภาพลดลง
// Example container with /userId as partition key
// Items in the container:
{
'id': 'order-001',
'userId': 'user-42',
'product': 'Widget',
'total': 29.99
}
// userId distributes orders across partitionsปริมาณงาน: โมเดล RU/s
Cosmos DB คิดค่าปริมาณงานเป็น หน่วยคำขอต่อวินาที (RU/s) โดยประมาณแล้ว 1 RU มีต้นทุนเทียบเท่ากับการอ่านเอกสารขนาด 1 KB ด้วย ID ของเอกสาร การเขียน คำค้นหา และการลบจะใช้ RU มากขึ้นตามขนาด Item และความซับซ้อนของดัชนี คุณสามารถจัดสรร RU/s ในระดับคอนเทนเนอร์ หรือใช้พูลร่วมกันกับคอนเทนเนอร์ทั้งหมดในฐานข้อมูล และเปลี่ยนเป็นโหมด ปรับขนาดอัตโนมัติ เพื่อให้ Cosmos DB ปรับปริมาณงานโดยอัตโนมัติ
# Create a container with 400 RU/s
az cosmosdb sql container create \
--account-name mycosmosaccount \
--resource-group myRG \
--database-name myDatabase \
--name orders \
--partition-key-path '/userId' \
--throughput 400การกระจายทั่วโลก
คุณลักษณะที่ทรงพลังที่สุดของ Cosmos DB คือความสามารถในการ จำลองข้อมูลทั่วโลก ได้ด้วยการคลิกเพียงไม่กี่ครั้ง คุณเพิ่มภูมิภาคลงในบัญชี แล้ว Cosmos DB จะซิงโครไนซ์การเขียนทั้งหมดข้ามทุกภูมิภาคโดยอัตโนมัติ แต่ละภูมิภาคสามารถให้บริการทั้งการอ่านและการเขียนพร้อมกันในรูปแบบการเขียนหลายตำแหน่ง (หลายมาสเตอร์) ช่วยลดความหน่วงสำหรับผู้ใช้ที่อยู่กระจายตามภูมิศาสตร์
# Add a second region to the Cosmos DB account
az cosmosdb update \
--name mycosmosaccount \
--resource-group myRG \
--locations regionName=eastus failoverPriority=0 \
regionName=westeurope failoverPriority=1ระดับความสอดคล้องห้าระดับ
Cosmos DB มี ระดับความสอดคล้องที่ปรับได้ห้าระดับ เรียงจากเข้มงวดที่สุดไปอ่อนที่สุด: Strong (การอ่านที่เป็นเชิงเส้น ความหน่วงสูงสุด), Bounded Staleness (การอ่านล้าหลังการเขียนภายในช่วงเวลาที่กำหนด), Session (ค่าเริ่มต้น — การอ่านการเขียนของคุณเองภายในเซสชันมีความสอดคล้องกัน), Consistent Prefix (การอ่านจะไม่เห็นการเขียนที่อยู่นอกลำดับ) และ Eventual (การอ่านเร็วที่สุดและมีการรับประกันน้อยที่สุด) เลือกตามระดับที่แอปพลิเคชันของคุณยอมรับข้อมูลล้าสมัยได้
การจัดทำดัชนีอัตโนมัติ
ตามค่าเริ่มต้น Cosmos DB จะ จัดทำดัชนีคุณสมบัติทุกอย่างโดยอัตโนมัติ ในทุก Item ที่คุณแทรก โดยไม่ต้องกำหนดสคีมาล่วงหน้า จึงรองรับคำค้นหาเฉพาะกิจที่ยืดหยุ่นได้โดยไม่ต้องดูแลดัชนี คุณสามารถปรับแต่งนโยบายการจัดทำดัชนีเพื่อแยกเส้นทางที่ไม่เคยใช้ค้นหาออก (ช่วยลดต้นทุนพื้นที่จัดเก็บ) หรือเพิ่มดัชนีผสมสำหรับคำค้นหา ORDER BY ที่ใช้คุณสมบัติหลายรายการ
// Custom indexing policy example
{
'indexingMode': 'consistent',
'includedPaths': [{ 'path': '/*' }],
'excludedPaths': [
{ 'path': '/largeTextBlob/?' },
{ 'path': '/_etag/?' }
]
}ฟีดการเปลี่ยนแปลงสำหรับแอปที่ขับเคลื่อนด้วยเหตุการณ์
ฟีดการเปลี่ยนแปลง คือบันทึกที่เรียงลำดับของการดำเนินการสร้างและอัปเดตทั้งหมดในคอนเทนเนอร์ Cosmos DB แอปพลิเคชันจะสมัครรับฟีดการเปลี่ยนแปลงเพื่อทริกเกอร์การประมวลผลต่อเนื่อง เช่น การอัปเดตดัชนีการค้นหา การส่งการแจ้งเตือน หรือการเขียนลงในมุมมองแบบทำให้เป็นรูปธรรม ฟีดการเปลี่ยนแปลงเป็นรากฐานของรูปแบบที่ขับเคลื่อนด้วยเหตุการณ์และ CQRS ในสถาปัตยกรรม Cosmos DB
Time-to-Live (TTL) สำหรับข้อมูลที่หมดอายุ
Cosmos DB รองรับ Time-to-Live (TTL) ซึ่งเป็นคุณสมบัติที่คุณกำหนดในคอนเทนเนอร์หรือ Item แต่ละรายการ เพื่อให้ลบรายการโดยอัตโนมัติหลังผ่านไปตามจำนวนวินาทีที่ระบุ เหมาะสำหรับข้อมูลเซสชัน รายการแคช บันทึกการตรวจสอบที่มีช่วงเวลาเก็บรักษาตามข้อกำหนด หรือข้อมูลใดก็ตามที่ทราบวันหมดอายุ การลบด้วย TTL จะดำเนินการเป็นงานเบื้องหลังและไม่ใช้ RU/s ที่จัดสรรไว้
// Enable TTL on a container (TTL in seconds)
az cosmosdb sql container update \
--account-name mycosmosaccount \
--resource-group myRG \
--database-name myDatabase \
--name sessions \
--ttl 3600ราคาและระดับ Serverless
Cosmos DB มีโหมดเรียกเก็บเงินสองแบบ ปริมาณงานที่จัดสรรไว้ คิดค่าบริการต่อ RU/s-ชั่วโมงโดยไม่ขึ้นกับการใช้งานจริง เหมาะกับงานที่มีปริมาณคงที่และคาดการณ์ได้ ส่วนโหมด Serverless คิดค่าบริการตาม RU ที่ใช้และ GB ที่จัดเก็บ โดยไม่มีค่าใช้จ่ายขั้นต่ำ จึงคุ้มค่าสำหรับการพัฒนา การสร้างต้นแบบ และช่วงทราฟฟิกพุ่งสูง ปัจจุบัน Cosmos DB แบบ Serverless จำกัดให้ใช้ได้ในภูมิภาคเดียว
ตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิด Microsoft Azure Fundamentals (AZ-900) จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า Cosmos DB เป็นบริการ NoSQL แบบหลายโมเดลที่กระจายอยู่ทั่วโลก คีย์พาร์ติชันกำหนดวิธีแบ่งข้อมูลออกเป็นส่วน ๆ และต้องเลือกอย่างรอบคอบ และ ระดับความสอดคล้องห้าระดับช่วยให้คุณสร้างสมดุลระหว่างเวลาแฝงกับความใหม่ของข้อมูล บทถัดไปเราจะสำรวจบริการที่ Azure จัดการให้สำหรับกลไกฐานข้อมูลโอเพนซอร์ส
คำถามที่พบบ่อย
บทเรียน “Azure Cosmos DB: NoSQL ระดับโลก” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Azure Cosmos DB: NoSQL ระดับโลก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Azure Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Azure Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Azure Cosmos DB: NoSQL ระดับโลก”
สำรวจสถาปัตยกรรมหลายรูปแบบและหลายภูมิภาคของ Cosmos DB ทำความเข้าใจคีย์พาร์ติชัน และเลือกระดับความสอดคล้องที่เหมาะสมกับความต้องการของแอปพลิเคชัน คุณปฏิบัติ Azure Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Azure Fundamentals หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Azure Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “Azure Cosmos DB: NoSQL ระดับโลก” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Azure Fundamentals นี้ได้ไหม
ได้ บทเรียน Azure Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Azure SQL Database
- Azure Cosmos DB: NoSQL ระดับโลก
- ฐานข้อมูล Azure สำหรับกลไกโอเพนซอร์ส
- การย้ายฐานข้อมูลไปยัง Azure