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.1sonuç 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ı VINvarsayalı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-Numberbir 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: