Aracılığıyla paylaş


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 ç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ı 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 zamanlı senaryolarda, 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ı kullanma

İş 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. 1 ile 400 arasında rastgele bir sayı seçebilir ve tarihin son eki olarak birleştirirsiniz. Bu yöntem aracılığıyla gibi bölüm anahtarı değerleriyle sonuç verir2018-08-09.12018-08-09.22018-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 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 öğeleri bulmak için genellikle 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 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, 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çınmanızdır.

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 çekirdek veya vCPU 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