Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir kapsayıcıda, aynı bölüm anahtarıyla birlikte ya başarıya ulaştırılması ya da başarısız olması gereken bir dizi işlem işlemi, "işlemsel toplu işlem" olarak adlandırılır. İşlemler tanımlanır, toplu işe eklenir ve toplu iş yürütülür. Tüm işlemler işlem toplu işlemi içinde tanımlandığı sırayla başarılı olursa, işlem işlenir. Ancak herhangi bir işlem başarısız olursa tüm işlem geri alınır.
Azure Cosmos DB'de işlem nedir?
Tipik bir veritabanındaki bir işlem, tek bir mantıksal iş birimi olarak gerçekleştirilen bir işlem dizisi olarak tanımlanabilir. Her işlem ACID (atomiklik, tutarlılık, izolasyon ve dayanıklılık) özellik garantileri sağlar.
- Bölünmezlik, bir işlem içinde yapılan tüm işlemlerin tek bir birim olarak ele alınıp bunların tümünün işlendiğini veya hiçbirinin işlenmediğini garanti eder.
- Tutarlılık , verilerin işlemler arasında her zaman geçerli bir durumda olmasını sağlar.
- Yalıtım , iki işlemin birbirini engellemediğini garanti eder. Birçok ticari sistem, uygulama gereksinimlerine göre kullanılabilecek birden çok yalıtım düzeyi sağlar.
- Dayanıklılık , veritabanında işlenen tüm değişikliklerin her zaman mevcut olmasını sağlar.
Azure Cosmos DB, aynı mantıksal bölüm anahtarı içindeki işlemler için anlık görüntü yalıtımına sahip tam ACID uyumlu işlemleri destekler.
İşlemsel toplu işlemler ve saklı yordamlar
Azure Cosmos DB şu anda işlemlerde işlem kapsamını da sağlayan saklı yordamları destekler. Ancak işlem toplu işlemleri aşağıdaki avantajları sunar:
- Dil seçeneği – İşlemsel toplu işleme, zaten çalıştığınız SDK'da ve dilde desteklenirken, saklı yordamların JavaScript'te yazılması gerekir.
- Kod sürümü oluşturma – Uygulama kodunun sürümü oluşturma ve CI/CD işlem hattınıza ekleme, saklı yordamın güncelleştirilmesini düzenlemekten ve geçişin doğru zamanda gerçekleştiğinden emin olmaktan çok daha doğaldır. Ayrıca değişiklikleri geri döndürmeyi de kolaylaştırır.
- Performans – Saklı yordam yürütmeye kıyasla eşdeğer işlemlerde gecikme süresi 30% kadar azaltıldı.
- İçerik serileştirme – İşlemsel toplu işlem içindeki her bir operasyon, yükü için özel serileştirme seçenekleri kullanabilir.
Transaksiyonel toplu işlem oluşturma
Kapsayıcı örneğiyle başlayın ve CreateTransactionalBatch'ı çağırın:
PartitionKey partitionKey = new PartitionKey("road-bikes");
TransactionalBatch batch = container.CreateTransactionalBatch(partitionKey);
Ardından toplu işe birden çok işlem ekleyin:
Product bike = new (
id: "68719520766",
category: "road-bikes",
name: "Chropen Road Bike"
);
batch.CreateItem<Product>(bike);
Part part = new (
id: "68719519885",
category: "road-bikes",
name: "Tronosuros Tire",
productId: bike.id
);
batch.CreateItem<Part>(part);
Son olarak, toplu işlemde ExecuteAsync'i çağırın:
using TransactionalBatchResponse response = await batch.ExecuteAsync();
Yanıt alındıktan sonra yanıtın başarılı olup olmadığını inceleyin. Yanıt başarılı olduğunu gösteriyorsa sonuçları ayıklayın:
if (response.IsSuccessStatusCode)
{
TransactionalBatchOperationResult<Product> productResponse;
productResponse = response.GetOperationResultAtIndex<Product>(0);
Product productResult = productResponse.Resource;
TransactionalBatchOperationResult<Part> partResponse;
partResponse = response.GetOperationResultAtIndex<Part>(1);
Part partResult = partResponse.Resource;
}
Önemli
Bir hata varsa, başarısız olan işlem ilgili hatanın durum koduna sahiptir. Diğer tüm işlemlerin 424 durum kodu (başarısız bağımlılık) vardır. zaten var olan bir öğe oluşturmaya çalıştığı için işlem başarısız olursa, 409 (çakışma) durum kodu döndürülür. Durum kodu, işlem hatasının nedenini belirlemenize olanak tanır.
İşlem kümeleri nasıl yürütülür?
İşlem toplu işlemi yürütüldüğünde, toplu işlemdeki tüm işlemler gruplandırılarak tek bir yük haline getirilir ve Azure Cosmos DB hizmetine tek bir istek olarak gönderilir.
Hizmet isteği alır ve işlem kapsamındaki tüm işlemleri yürütür ve aynı serileştirme protokolünü kullanarak bir yanıt döndürür. Bu yanıt bir başarı veya başarısızlıktır ve işlem başına tek tek işlem yanıtları sağlar.
SDK, sonucu doğrulamanız ve isteğe bağlı olarak iç işlem sonuçlarının her birini ayıklamanız için yanıtı kullanıma sunar.
Sınırlamalar
Şu anda bilinen iki sınır vardır:
- Azure Cosmos DB istek boyutu sınırı, işlem toplu iş yükünün boyutunu 2 MB'ı aşmamak üzere kısıtlar ve yürütme süresi üst sınırı 5 saniyedir.
- Performansın beklendiği gibi ve SLA'lar içinde olduğundan emin olmak için işlem toplu işlemi başına geçerli 100 işlem sınırı vardır.