Yapay bölüm anahtarı oluşturma
UYGULANANLAR: NOSQL
Yüzlerce veya binlerce gibi birçok farklı değere sahip bir bölüm anahtarına sahip olmak en iyi yöntemdir. 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 birkaç temel teknik açıklanmaktadır.
Bir öğ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ı 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 özellikte birleştirmektir.
{
"deviceId": "abc-123",
"date": 2018,
"partitionKey": "abc-123-2018"
}
Gerçek zamanlı senaryolarda, veritabanında binlerce öğeniz 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 sonek içeren bir bölüm anahtarı kullanma
İş yükünü daha eşit dağıtmak için bir diğer olası strateji, 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.
Bir bölüm anahtarının bir tarihi temsil ettiği bir örnektir. 1 ile 400 arasında rastgele bir sayı seçebilir ve tarihin son eki olarak birleştirirsiniz. Bu yöntem aracılığıyla gibi2018-08-09.2
bölüm anahtarı değerleriyle 2018-08-09.1
sonuç verir2018-08-09.400
. 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üm anahtarı kullanma
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 düşünün. Şimdi her öğenin erişmek istediğimiz bir Vehicle-Identification-Number
(VIN
) özniteliği olduğunu varsayalım. Ayrıca, öğeleri tarihine ek olarak tarafından bulmak için sık sık sorgular çalıştırdığınızı VIN
varsayalım. Uygulamanız öğeyi kapsayıcıya yazmadan önce VIN'yi temel alan bir karma soneki hesaplayabilir ve bölüm anahtarı tarihine ekleyebilir. Hesaplama, eşit dağıtılmış 1 ile 400 arasında bir sayı oluşturabilir. Bu sonuç, rastgele sonek strateji yöntemi tarafından üretilen sonuçlara benzer. Bölüm anahtarı değeri daha sonra hesaplanan sonuçla birleştirilmiş tarihtir.
Bu stratejiyle yazma işlemleri bölüm anahtarı değerlerine ve bölümlere eşit olarak yayılır. Belirli bir öğe ve tarihi kolayca okuyabilirsiniz, çünkü belirli Vehicle-Identification-Number
bir için bölüm anahtarı değerini hesaplayabilirsiniz. Bu yöntemin avantajı, tüm iş yükünü alan bir bölüm anahtarı gibi tek bir sık erişimli 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:
- Mantıksal bölümler hakkında daha fazla bilgi edinin.
- Azure Cosmos DB kapsayıcılarında ve veritabanlarında aktarım hızı sağlama hakkında daha fazla bilgi edinin.
- Azure Cosmos DB kapsayıcısı üzerinde aktarım hızı sağlamayı öğrenin.
- Azure Cosmos DB veritabanında aktarım hızı sağlamayı öğrenin.
- 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ı kullanarak istek birimlerini tahmin etme hakkında bilgi edinin