Birden çok yazma bölgesi kullanılırken çakışma türleri ve çözüm ilkeleri
ŞUNLAR IÇIN GEÇERLIDIR: NoSQL MongoDB Cassandra Gremlin Masa
Azure Cosmos DB hesabınız birden çok yazma bölgesiyle yapılandırılmışsa çakışmalar ve çakışma çözümleme ilkeleri geçerlidir.
Birden çok yazma bölgesiyle yapılandırılmış Azure Cosmos DB hesapları için, yazıcılar aynı öğeyi birden çok bölgede eşzamanlı olarak güncelleştirdiğinde güncelleştirme çakışmaları oluşabilir. Güncelleştirme çakışmaları aşağıdaki üç türden olabilir:
Ekleme çakışmaları: Bu çakışmalar, bir uygulama aynı anda iki veya daha fazla bölgeye aynı benzersiz dizine sahip iki veya daha fazla öğe eklediğinde ortaya çıkabilir. Örneğin, bu çakışma bir ID özelliğiyle oluşabilir.
Değiştirme çakışmaları: Bu çakışmalar, bir uygulama aynı öğeyi iki veya daha fazla bölgede aynı anda güncelleştirdiğinde ortaya çıkabilir.
Silme çakışmaları: Bir uygulama aynı anda bir bölgedeki bir öğeyi silip başka bir bölgede güncelleştirdiğinde bu çakışmalar oluşabilir.
Çakışma çözümleme ilkeleri
Azure Cosmos DB, yazma çakışmalarını çözmek için esnek bir ilke temelli mekanizma sunar. Azure Cosmos DB kapsayıcısı üzerindeki iki çakışma çözümleme ilkesi arasından seçim yapabilirsiniz:
Son Yazma Kazançları (LWW): Bu çözümleme ilkesi varsayılan olarak sistem tanımlı bir zaman damgası özelliği kullanır. Zaman eşitleme saat protokolüne dayanır. NoSQL için API'yi kullanıyorsanız, çakışma çözümlemesi için kullanılacak başka bir özel sayısal özellik (örneğin, kendi zaman damgasınız) belirtebilirsiniz. Özel bir sayısal özellik, çakışma çözümleme yolu olarak da adlandırılır.
Ekleme veya değiştirme işlemlerinde iki veya daha fazla öğe çakışırsa, çakışma çözümleme yolu için en yüksek değere sahip öğe kazanan olur. Sistem, çakışma çözümleme yolu için birden çok öğenin aynı sayısal değere sahip olup olmadığını belirler. Tüm bölgeler tek bir kazanana yakınsanacak ve taahhüt edilen öğenin aynı sürümüyle sonuçlanacaktır. Silme çakışmaları söz konusu olduğunda, silinen sürüm her zaman ekleme veya değiştirme çakışmaları üzerinde kazanır. Çakışma çözümleme yolunun değeri ne olursa olsun bu sonuç ortaya çıkar.
Not
Son Yazma Wins varsayılan çakışma çözümleme ilkesidir ve şu API'ler için zaman damgası
_ts
kullanır: SQL, MongoDB, Cassandra, Gremlin ve Tablo. Özel sayısal özellik yalnızca NoSQL api'sinde kullanılabilir.Daha fazla bilgi edinmek için bkz . LWW çakışma çözümleme ilkelerini kullanan örnekler.
Özel: Bu çözüm ilkesi, çakışmaların mutabakatı için uygulama tanımlı semantikler için tasarlanmıştır. Bu ilkeyi Azure Cosmos DB kapsayıcınızda ayarladığınızda, bir birleştirme saklı yordamı da kaydetmeniz gerekir. Bu yordam, sunucudaki bir veritabanı işlemi altında çakışmalar algılandığında otomatik olarak çağrılır. Sistem, taahhüt protokolünün bir parçası olarak birleştirme yordamının yürütülmesi için tam olarak bir kez garanti sağlar.
Kapsayıcınızı özel çözüm seçeneğiyle yapılandırırsanız ve kapsayıcıya birleştirme yordamı kaydedemezseniz veya birleştirme yordamı çalışma zamanında bir özel durum oluşturursa, çakışmalar çakışma akışına yazılır. Ardından uygulamanızın çakışma akışındaki çakışmaları el ile çözmesi gerekir. Daha fazla bilgi edinmek için bkz . Özel çözüm ilkesini kullanma ve çakışma akışını kullanma örnekleri.
Not
Özel çakışma çözümleme ilkesi yalnızca NoSQL hesapları için API için kullanılabilir ve yalnızca oluşturma zamanında ayarlanabilir. Mevcut bir kapsayıcıda özel çözümleme ilkesi ayarlamak mümkün değildir.
Sonraki adımlar
Çakışma çözümleme ilkelerini yapılandırmayı öğrenin: