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.
En iyi yöntem olarak, yüzlerce veya binlerce gibi birçok farklı değere sahip bir bölüm anahtarı kullanmanız gerekir. Amaç, verilerinizi ve iş yükünüzü bu bölüm anahtarı değerleriyle ilişkili öğeler arasında eşit olarak dağıtmaktır. Verilerinizde böyle bir özellik yoksa yapay bölüm anahtarı oluşturabilirsiniz.
Bu belgede, Azure Cosmos DB kapsayıcınız için yapay bölüm anahtarı oluşturmaya yönelik çeşitli temel teknikler açıklanmaktadır.
Öğenin birden çok özelliğini birleştirme
Birden çok özellik değerini tek bir yapay partitionKey özellikte birleştirerek bölüm anahtarı oluşturabilirsiniz. Bu anahtarlar yapay anahtarlar olarak adlandırılır. Örneğin, aşağıdaki örnek belgeyi göz önünde bulundurun:
{
"deviceId": "abc-123",
"date": 2018
}
Önceki belge için bir seçenek, bölüm anahtarı alanı olarak /deviceId veya /date ayarlamaktır. Kapsayıcınızı cihaz kimliğine veya tarihe göre bölümlendirmek istiyorsanız bu seçeneği kullanın. Bir diğer seçenek de bu iki değeri bölüm anahtarı olarak kullanılan yapay partitionKey bir özelliğe birleştirmektir.
{
"deviceId": "abc-123",
"date": 2018,
"partitionKey": "abc-123-2018"
}
Gerçek dünya senaryolarında, bir veritabanında binlerce öğe olabilir. Yapay anahtarı el ile eklemek yerine, değerleri birleştirmek için istemci tarafı mantığı tanımlayın ve yapay anahtarı Azure Cosmos DB kapsayıcılarınızdaki öğelere ekleyin.
Rastgele bir sonek ile bölüm anahtarı kullanın
İş yükünü daha dengeli dağıtmak için bir diğer olası strateji de bölüm anahtarı değerinin sonuna rastgele bir sayı eklemektir. Öğeleri bu şekilde dağıttığınızda, bölümler arasında paralel yazma işlemleri gerçekleştirebilirsiniz.
Bölüm anahtarının bir tarihi temsil ettiği bir örnektir. Önce 1 ile 400 arasında rastgele bir sayı seçebilir, ardından bu sayıyı tarihe sonek olarak ekleyebilirsiniz. Bu yöntem, 2018-08-09.1, 2018-08-09.2 ve 2018-08-09.400 gibi bölüm anahtarı değerleriyle sonuçlanır. Bölüm anahtarını rastgele seçtiğiniz için, kapsayıcıdaki her gün yapılan yazma işlemleri birden çok bölüme eşit olarak yayılır. Bu yöntem daha iyi paralellik ve genel olarak daha yüksek aktarım hızıyla sonuçlanır.
Önceden hesaplanmış soneklerle bölümleme anahtarı kullanın
Rastgele sonek stratejisi yazma aktarım hızını büyük ölçüde geliştirebilir, ancak belirli bir öğeyi okumak zordur. Öğeyi yazarken kullanılan sonek değerini bilmiyorsunuz. Öğeleri tek tek okumayı kolaylaştırmak için önceden hesaplanmış sonekler stratejisini kullanın. Öğeleri bölümler arasında dağıtmak için rastgele bir sayı kullanmak yerine, sorgulamak istediğiniz bir şeye göre hesaplanan bir sayı kullanın.
Bir kapsayıcının bölüm anahtarı olarak tarih kullandığı önceki örneği göz önünde bulundurun. Şimdi her öğenin erişmek istediğimiz bir Vehicle-Identification-Number (VIN) özniteliği olduğunu varsayalım. Ayrıca, tarihe ek olarak VIN ile öğeleri bulmak için genellikle sorgular çalıştırdığınızı düşünelim. Uygulamanız, öğeyi kapsayıcıya yazmadan önce VIN'ye dayalı bir hash eki hesaplayabilir ve bunu bölüm anahtar tarihine ekleyebilir. Hesaplama, eşit olarak dağıtılmış 1 ile 400 arasında bir sayı oluşturabilir. Bu sonuç, rastgele sonek stratejisi yöntemi tarafından üretilen sonuçlara benzer. Bölüm anahtarı değeri, tarih ve hesaplanan sonucun birleştirilmiş halidir.
Bu stratejiyle, yazma işlemleri bölüm anahtarı değerlerine ve bölümlere eşit olarak yayılır. Belirli bir öğeyi ve tarihi kolayca okuyabilirsiniz, çünkü belirli bir Vehicle-Identification-Number için bölüm anahtarı değerini hesaplayabilirsiniz. Bu yöntemin avantajı, tüm iş yükünü alan tek bir bölüm anahtarı oluşturmaktan, yani yüksek yük altında çalışan bir bölüm anahtarı oluşturmaktan kaçınabilmenizdir.
Sonraki Adımlar
Bölümleme kavramı hakkında daha fazla bilgiyi aşağıdaki makalelerde bulabilirsiniz:
- Azure Cosmos DB'de bölümleme ve yatay ölçeklendirme
- Azure Cosmos DB'de sağlanan aktarım hızına giriş
- Azure Cosmos DB'deki bir veritabanında standart (el ile) aktarım hızı sağlama
Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.
- Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, sanal çekirdekleri veya vCPU'ları kullanarak istek birimlerini tahmin etme hakkında bilgi edinin.
- Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız, Azure Cosmos DB kapasite planlayıcısını kullanarak istek birimlerini tahmin etme hakkında bilgi edinin.