Öğeleri bölüm anahtarı değerine göre silme - NoSQL için API (önizleme)
UYGULANANLAR: NoSQL
Bu makalede Azure Cosmos DB SDK'larını kullanarak tüm öğeleri mantıksal bölüm anahtarı değerine göre silme işlemi açıklanır.
Önemli
Öğeleri bölüm anahtarı değerine göre silme işlemi genel önizleme aşamasındadır. Bu özellik, hizmet düzeyi sözleşmesi olmadan sağlanır. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri Ek Kullanım Koşulları.
Özelliklere genel bakış
Bölüm anahtarına göre silme özelliği, Cosmos SDK'sını kullanarak aynı mantıksal bölüm anahtarı değerine sahip tüm belgeleri silmenizi sağlayan zaman uyumsuz, arka plan işlemidir.
Silinecek belge sayısı büyük olabileceğinden işlem arka planda çalışır. Fiziksel silme işlemi arka planda çalıştırılsa da, silinecek belgeler sorguların veya okuma işlemlerinin sonuçlarında görünmeyacağından, efektler hemen kullanılabilir.
Bölüm anahtarına göre silme işlemi, kapsayıcıdaki toplam kullanılabilir RU/sn değerinin her saniye en fazla %10'unu en iyi çaba temelinde tüketmeyi hedefler. Bu, bu arka plan görevi tarafından kullanılan kaynakların sınırlanmasında yardımcı olur.
Başlarken
Azure CLI kullanarak "Bölüm anahtarına göre sil" özelliğini etkinleştirmek için Azure Cosmos DB hesabınızı güncelleştirin.
1. Adım: Kabuk değişkenlerini ayarlama
$resourceGroupName = <azure_resource_group> $accountName = <azure_cosmos_db_account_name> $DeleteByPk = "DeleteAllItemsByPartitionKey"
2. Adım: Hesabınızın mevcut özelliklerini listeleyin.
$cosmosdb = az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName $capabilities = ($cosmosdb | ConvertFrom-Json).capabilities
3. Adım: Henüz yoksa yetenek listesine "Bölüm anahtarına göre öğeleri sil" özelliğini ekleyin.
Not
Özellikler listesi her zaman etkinleştirmek istediğiniz tüm özellikleri (dahil) belirtmelidir. Bu, saklamak istediğiniz hesap için zaten etkinleştirilmiş olan özellikleri içerir.
$capabilities = $DeleteByPk
4. Adım: Cosmos DB hesabını "Öğeleri bölüm anahtarına göre sil" özelliğini etkinleştirecek şekilde güncelleştirme
az cosmosdb update --capabilities $capabilities \ -n $accountName -g $resourceGroupName
Örnek kod
Öğeleri bölüm anahtarına göre silmek için Azure Cosmos DB .NET SDK'sının 3.25.0-preview sürümünü (veya daha yüksek önizleme sürümünü) kullanın.
// Suppose our container is partitioned by tenantId, and we want to delete all the data for a particular tenant Contoso
// Get reference to the container
var container = cosmosClient.GetContainer("DatabaseName", "ContainerName");
// Delete by logical partition key
ResponseMessage deleteResponse = await container.DeleteAllItemsByPartitionKeyStreamAsync(new PartitionKey("Contoso"));
if (deleteResponse.IsSuccessStatusCode) {
Console.WriteLine($"Delete all documents with partition key operation has successfully started");
}
Sık sorulan sorular (SSS)
Bölüm anahtarına göre silme işleminin sonuçları hemen yansıtılıyor mu?
Evet, bölüm anahtarına göre silme işlemi başladıktan sonra silinecek belgeler sorguların veya okuma işlemlerinin sonuçlarında görünmez. Bu, çakışmaya neden olmadan silinecek bir belgeyle aynı kimliğe ve bölüm anahtarına sahip yeni bir belge yazabileceğiniz anlamına da gelir.
Bkz. Özel durumlar için bilinen sorunlar .
Bölüm anahtarına göre silme işlemi yapıp hemen aynı bölüm anahtarına sahip yeni bir belge yazarsam ne olur?
Bölüm anahtarına göre silme işlemi düzenlendiğinde, yalnızca kapsayıcıda bulunan ve ardından bölüm anahtarı değerine sahip belgeler silinir. Gelen yeni belgeler silme kapsamında olmayacaktır.
Bölüm anahtarına göre silme işlemi, kapsayıcıya karşı diğer işlemler arasında nasıl önceliklendirilir?
Varsayılan olarak, bölüm anahtarı değerine göre silme işlemi, kaynak üzerindeki genel RU/sn değerinin ayrılmış kesirini (0,1 veya %10) tüketebilir. Bu demetteki kullanılmayan tüm İstek Birimleri (RU), okumalar, yazmalar ve sorgular gibi diğer arka plan dışı işlemler için kullanılabilir.
Örneğin, bir kapsayıcıda 1000 RU/sn sağladığınızı varsayalım. Her saniye 5 saniye boyunca 100 RU tüketen bölüm anahtarına göre devam eden bir silme işlemi vardır. Bu 5 saniyenin her biri boyunca, arka plan dışı veritabanı işlemleri için 900 RU kullanılabilir. Silme işlemi tamamlandıktan sonra 1000 RU/sn'nin tümü yeniden kullanılabilir duruma gelir.
Bilinen sorunlar
Bazı senaryolarda, bölüm anahtarına göre silme işlemi etkilerini hemen garanti etmeyebilir ve işlem sırasında kısmi görünürlük oluşabilir.
- Bölüm anahtarıyla devam eden silme işlemi sırasında verilen dizin kullanan sorguları toplama (örneğin COUNT sorguları) silinecek belgelerin sonuçlarını içerebilir. Silme işlemi tamamen tamamlanana kadar bu durum oluşabilir.
- Bölüm anahtarıyla devam eden silme işlemi sırasında analiz deposuna gönderilen sorgular silinecek belgelerin sonuçlarını içerebilir. Silme işlemi tamamen tamamlanana kadar bu durum oluşabilir.
- Sürekli yedekleme (belirli bir noktaya geri yükleme) - Bölüm anahtarıyla devam eden silme işlemi sırasında tetiklenen bir geri yükleme, geri yüklenen koleksiyonda silinecek belgelerin sonuçlarını içerebilir. Sürekli yedekleme gerektiren bir senaryonuz varsa bu önizleme özelliğini kullanmanız önerilmez.
Sınırlamalar
- Hiyerarşik bölüm anahtarlarının silinmesi desteklenmez. Bu özellik yalnızca bölüm anahtarlarının son düzeyine göre öğelerin silinmesine izin verir. Örneğin, bölüm anahtarının üç hiyerarşik düzeyden oluştuğu bir senaryo düşünün: ülke, eyalet ve şehir. Bu bağlamda, bölüm anahtarlarıyla silme işlevi, tüm düzeyleri (ülke/eyalet/şehir) kapsayan tam bölüm anahtarı belirtilerek etkili bir şekilde kullanılabilir. Ülke/eyalet veya yalnızca ülke gibi ara bölüm anahtarlarını kullanarak silme girişimi hataya neden olur.
Geri bildirim sağlama veya sorun/hata bildirme
- Soru veya geri bildirim içeren e-posta cosmosPkDeleteFeedbk@microsoft.com .
SDK gereksinimleri
Sdk'nın bu özelliği destekleyen en son sürümünü bulun.
SDK | Desteklenen sürümler | Paket yöneticisi bağlantısı |
---|---|---|
.NET SDK v3 | >= 3.25.0-preview (önizleme sürümü olmalıdır) | https://www.nuget.org/packages/Microsoft.Azure.Cosmos/ |
Java SDK v4 | >= 4.19.0 (API beta olarak işaretlenir) | https://mvnrepository.com/artifact/com.azure/azure-cosmos |
Python SDK v4 | >= 4..4.0b1 (beta sürümü olmalıdır) | https://pypi.org/project/azure-cosmos/4.4.0b1/ |
Gelecekte diğer SDK'lar için destek planlanıyor.
Sonraki adımlar
Azure Cosmos DB'deki diğer SDK işlemleri hakkında bilgi edinmek için aşağıdaki makalelere bakın.