แชร์ผ่าน


การปรับขนาดปริมาณงานอัตโนมัติใน Cosmos DB ใน Microsoft Fabric

Cosmos DB ใน Microsoft Fabric รองรับปริมาณงานที่เตรียมใช้งานโดยอัตโนมัติ ปริมาณการประมวลผลที่จัดเตรียมไว้ปรับขนาดอัตโนมัติเหมาะอย่างยิ่งสําหรับปริมาณงานที่สําคัญต่อภารกิจที่มีรูปแบบการรับส่งข้อมูลที่แปรผันหรือคาดเดาไม่ได้ การปรับขนาดอัตโนมัติใน Cosmos DB ใน Microsoft Fabric จะปรับขนาดปริมาณงานตามพาร์ติชันที่ใช้งานมากที่สุด สําหรับปริมาณงานที่ไม่สม่ําเสมอซึ่งมีรูปแบบปริมาณงานที่แตกต่างกัน การปรับขนาดอัตโนมัติแบบไดนามิกเป็นการปรับปรุงการปรับขนาดอัตโนมัติที่จัดเตรียมไว้ตลอด ซึ่งช่วยปรับขนาดปริมาณงานที่ไม่สม่ําเสมอดังกล่าวอย่างอิสระตามการใช้งานในระดับต่อพาร์ติชัน การปรับขนาดแบบไดนามิกช่วยให้คุณประหยัดค่าใช้จ่ายหากคุณพบพาร์ติชันร้อนบ่อยครั้ง

Benefits

คอนเทนเนอร์ Cosmos DB ใน Microsoft Fabric ที่กําหนดค่าด้วยปริมาณงานที่เตรียมใช้งานตามการปรับขนาดอัตโนมัติมีประโยชน์ดังต่อไปนี้:

  • ง่าย: การปรับขนาดอัตโนมัติช่วยขจัดความซับซ้อนในการจัดการปริมาณงานหรือการปรับขนาดความจุด้วยตนเอง

  • ปรับขนาดได้: คอนเทนเนอร์จะปรับขนาดปริมาณงานที่เตรียมใช้งานโดยอัตโนมัติตามต้องการ ไม่มีการหยุดชะงักของแอปพลิเคชันไคลเอ็นต์

  • ทันที: คอนเทนเนอร์สามารถขยายขนาด ได้ทันที เมื่อจําเป็น ไม่มีช่วงอุ่นเครื่องเมื่อต้องการปริมาณงานเพิ่มเติมสําหรับการเพิ่มขึ้นอย่างกะทันหัน

  • คุ้มค่า: การปรับขนาดอัตโนมัติช่วยเพิ่มประสิทธิภาพการใช้งาน RU/s และการใช้ต้นทุนของคุณโดยการลดขนาดเมื่อไม่ได้ใช้งาน คุณจ่ายสําหรับทรัพยากรที่ปริมาณงานของคุณต้องการเป็นรายชั่วโมงเท่านั้น

  • มีความพร้อมใช้งานสูง: คอนเทนเนอร์ที่ใช้การปรับขนาดอัตโนมัติใช้แบ็กเอนด์ Azure Cosmos DB ที่ทนทานต่อข้อผิดพลาดและพร้อมใช้งานสูงเหมือนกัน เพื่อให้มั่นใจถึงความคงทนของข้อมูลและความพร้อมใช้งานสูง

ใช้กรณี

การปรับขนาดอัตโนมัติใน Cosmos DB อาจเป็นประโยชน์กับปริมาณงานที่หลากหลาย โดยเฉพาะปริมาณงานที่แปรผันหรือคาดเดาไม่ได้ เมื่อปริมาณงานของคุณมีการใช้งานที่แปรผันหรือคาดเดาไม่ได้ การปรับขนาดอัตโนมัติจะช่วยโดยการปรับขนาดขึ้นและลงโดยอัตโนมัติตามการใช้งาน ตัวอย่าง ได้แก่ :

  • รายงาน Power BI หรือสมุดบันทึกที่ดําเนินการโดยผู้ใช้ที่มีรูปแบบการใช้งานที่คาดเดาไม่ได้
  • ปริมาณงานการพัฒนาและทดสอบที่ใช้ในช่วงเวลาทํางานเป็นหลัก
  • งาน Spark ที่จัดกําหนดการไว้กับการดําเนินงาน หรือคิวรีที่คุณต้องการเรียกใช้ในช่วงเวลาที่ไม่ได้ใช้งาน
  • แอปพลิเคชันทางธุรกิจที่เห็นการใช้งานสูงสุดสองสามครั้งต่อเดือนหรือปี และอื่น ๆ

การสร้างโซลูชันแบบกําหนดเองสําหรับปัญหาเหล่านี้ไม่เพียงแต่ต้องใช้เวลามากแต่ยังทําให้เกิดความซับซ้อนในการกําหนดค่าหรือโค้ดของแอปพลิเคชันของคุณด้วย การปรับขนาดอัตโนมัติจะเปิดใช้งานสถานการณ์ข้างต้นนอกกรอบและขจัดความจําเป็นในการปรับมาตราส่วนแบบกําหนดเองหรือด้วยตนเองของความจุ

กําหนดค่าปริมาณงานปรับขนาดอัตโนมัติใน Cosmos DB ใน Microsoft Fabric

คอนเทนเนอร์ที่สร้างขึ้นใน Cosmos DB ใน Fabric จะถูกจัดเตรียมโดยอัตโนมัติด้วยปริมาณการประมวลผลการปรับขนาดอัตโนมัติ 5000 RU/s เมื่อสร้างขึ้นในพอร์ทัล Fabric สามารถอ่านและอัปเดตปริมาณการประมวลผลการปรับขนาดอัตโนมัติได้โดยใช้ Cosmos DB SDK สามารถตั้งค่าปริมาณงานอัตโนมัติขั้นต่ําเป็น 1000 RU/s สูงสุด 50000 RU/s สูงสุดนี้สามารถเพิ่มได้ผ่านตั๋วสนับสนุน

กําหนดค่าการปรับขนาดอัตโนมัติโดยใช้ Azure SDK

ใช้ Cosmos DB SDK เพื่อตั้งค่าการอ่านและอัปเดตปริมาณงานการปรับขนาดอัตโนมัติบนคอนเทนเนอร์ใน Cosmos DB ใน Microsoft Fabric

สําหรับตัวอย่างที่สมบูรณ์สําหรับการตั้งค่าปริมาณงาน Cosmos DB ภายในโน้ตบุ๊ก Fabric โปรดดู การดําเนินการการจัดการสําหรับ Cosmos DB ใน Fabric

database = client.get_database_client("<database-name>")
container = database.get_container_client("<container-name>")

# Get the current throughput on the container and increase it by 1000 RU/s
throughput_properties = await container.get_throughput()
autoscale_throughput = throughput_properties.auto_scale_max_throughput

print(print(f"Autoscale throughput: {autoscale_throughput}"))

new_throughput = autoscale_throughput + 1000

await container.replace_throughput(ThroughputProperties(auto_scale_max_throughput=new_throughput))

# Verify the updated throughput
updated_throughput_properties = await container.get_throughput()
print(f"Verified updated autoscale throughput: {updated_throughput_properties.auto_scale_max_throughput}")
const database = client.database('<database-name>');
const container = database.container('<container-name>');

// Get the current throughput on the container and increase it by 1000 RU/s
const { resource: throughputProperties } = await container.offer.read();
const autoscaleThroughput = throughputProperties?.autoscaleSettings?.maxThroughput;

console.log(`Autoscale throughput: ${autoscaleThroughput}`);

const newThroughput = autoscaleThroughput + 1000;

await container.offer.replace({
    offerThroughput: undefined,
    autoscaleSettings: {
        maxThroughput: newThroughput
    }
});

// Verify the updated throughput
const { resource: updatedThroughputProperties } = await container.offer.read();
console.log(`Verified updated autoscale throughput: ${updatedThroughputProperties?.autoscaleSettings?.maxThroughput}`);
Container container = client
    .GetDatabase("<database-name>")
    .GetContainer("<container-name>");

// Get the current throughput on the container and increase it by 1000 RU/s
ThroughputResponse throughputResponse = await container.ReadThroughputAsync();
int? autoscaleThroughput = throughputResponse.Resource.AutoscaleMaxThroughput;

Console.WriteLine($"Autoscale throughput: {autoscaleThroughput}");

int newThroughput = autoscaleThroughput.Value + 1000;

await container.ReplaceThroughputAsync(ThroughputProperties.CreateAutoscaleThroughput(newThroughput));

// Verify the updated throughput
ThroughputResponse updatedThroughputResponse = await container.ReadThroughputAsync();
Console.WriteLine($"Verified updated autoscale throughput: {updatedThroughputResponse.Resource.AutoscaleMaxThroughput}");