Küçük arama varlıklarını modelleme
Veri modelimiz iki küçük başvuru veri varlığı ProductCategory
içerir ve ProductTag
. Bu varlıklar başvuru değerleri için kullanılır ve bir 1:Many relationship
olsa da diğer varlıklarla ilgilidir.
Bu ünitede, belge modelimizdeki ProductCategory
ve ProductTag
varlıklarını modelleyeceğiz.
Ürün kategorilerini modelleme
Öncelikle kategoriler için verileri kimlik ve ad sütunlarıyla tek özellikler olarak modelleyip adlı ProductCategory
yeni bir kapsayıcıya yerleştireceğiz.
Ardından bir bölüm anahtarı seçmemiz gerekiyor. Şimdi bu veriler üzerinde gerçekleştirmemiz gereken işlemleri inceleyelim.
Yeni bir ürün kategorisi oluşturacak, bir ürün kategorisini düzenleyeceğiz ve ardından tüm ürün kategorilerini listeleyeceğiz. Ürün kategorilerini oluşturma ve düzenleme işlemleri sık çalıştırılmaz. E-ticaret uygulamamız, müşteriler web sitesini ziyaret ettiğinde genellikle tüm ürün kategorilerini listeler. Son işlem en çok çalıştıracağımız işlem olacak.
Bu son işlemin sorgusu şöyle görünür: SELECT * FROM c
.
Seçilen bölüm anahtarı olarak id ile bu sorgu artık bölümler arası olacaktır, ancak bu yoğun okuma işlemlerini iyileştirmeye çalışsak bile mümkünse yalnızca tek bir bölüm kullanın. Ayrıca, ürün kategorisi verilerinin boyut olarak hiçbir zaman 20 GB'a yakın büyümeyeceğini biliyoruz. Bu bilgiler, tüm ürün kategorilerini listelediğimizde verileri tek bir bölüm sorgusuyla sonuçlanacak şekilde modellememize nasıl yardımcı olur?
Bu küçük miktarda veriyi tek bir bölüme geri almak için şemamıza bir varlık ayırıcı özelliği ekleyebilir ve bunu bu kapsayıcının bölüm anahtarı olarak kullanabiliriz. Bu özelliğe kapsayıcıdaki bu türdeki tüm belgeler için sabit bir değer atayarak, artık tek bir bölüm sorgusuna sahip olduğumuzdan emin olacağız. Bu durumda özelliğini type
çağıracak ve sabit değerini category
vereceğiz. Sorgumuz şimdi şöyle görünür: SELECT * FROM c WHERE c.type = ”category”
.
Ürün etiketlerini modelleme
Sıradaki varlıktır ProductTag
. Bu varlık işlevde ProductCategory
önceki bölümde ele aldığımız varlıkla neredeyse aynıdır. Burada da aynı yaklaşımı benimseyelim ve belgeyi kimlik ve ad özelliklerini içerecek şekilde modelleyelim ve adlı type
bir varlık ayrıştırıcı özelliği oluşturalım. Bu örnekte sabit değeri ile tag
. adlı ProductTag
yeni bir kapsayıcı oluşturalım ve yeni bölüm anahtarını oluşturalım type
.
Bazı kişiler küçük arama tablolarını modellemeye yönelik bu tekniği garip buluyor. Ancak verilerimizi bu şekilde modellemek, bir sonraki modülde daha fazla iyileştirme yapma fırsatı verir.