Share via


İlişkileri modelleme

Bu makalede, Azure Tablo depolama çözümlerinizi tasarlamanıza yardımcı olacak modelleme işlemi açıklanır.

Etki alanı modelleri oluşturmak, karmaşık sistemlerin tasarımında önemli bir adımdır. Genellikle, iş etki alanını anlamanın ve sisteminizin tasarımını bilgilendirmenin bir yolu olarak varlıkları ve aralarındaki ilişkileri tanımlamak için modelleme işlemini kullanırsınız. Bu bölüm, etki alanı modellerinde bulunan bazı ortak ilişki türlerini Tablo hizmeti tasarımlarına nasıl çevirebileceğinize odaklanır. Mantıksal veri modelinden fiziksel NoSQL tabanlı bir veri modeline eşleme işlemi, ilişkisel veritabanı tasarlarken kullanılandan farklıdır. İlişkisel veritabanları tasarımı genellikle yedekliliği en aza indirmek için iyileştirilmiş bir veri normalleştirme işleminin ve veritabanının nasıl çalıştığının nasıl uygulandığını soyutlayan bildirim temelli bir sorgulama özelliğini varsayar.

Bir-çok ilişkileri

İş etki alanı nesneleri arasında bire çok ilişkiler sık sık gerçekleşir: örneğin, bir departmanda birçok çalışan vardır. Tablo hizmetinde her biri belirli senaryoyla ilgili olabilecek artıları ve dezavantajları olan bire çok ilişkileri uygulamanın çeşitli yolları vardır.

Her departmanın çok sayıda çalışanı ve her çalışanın belirli bir departmanla ilişkili olduğu on binlerce departmanı ve çalışan varlığı olan çok uluslu/bölgesel büyük bir şirket örneğini düşünün. Yaklaşımlardan biri, aşağıdakiler gibi ayrı departman ve çalışan varlıklarını depolamaktır:

Store separate department and employee entities

Bu örnekte PartitionKey değerini temel alan türler arasındaki örtük bire çok ilişkisi gösterilmektedir. Her departmanda birçok çalışan olabilir.

Bu örnekte aynı bölümdeki bir departman varlığı ve ilgili çalışan varlıkları da gösterilir. Farklı varlık türleri için farklı bölümler, tablolar ve hatta depolama hesapları kullanmayı seçebilirsiniz.

Alternatif bir yaklaşım, aşağıdaki örnekte gösterildiği gibi verilerinizi normalden çıkarmak ve yalnızca normal dışı departman verilerine sahip çalışan varlıklarını depolamaktır. Bu özel senaryoda, departman yöneticisinin ayrıntılarını değiştirme gereksiniminiz varsa, bu normalleştirilmiş yaklaşım en iyi yöntem olmayabilir çünkü bunu yapmak için departmandaki tüm çalışanları güncelleştirmeniz gerekir.

Employee entity

Daha fazla bilgi için bu kılavuzun devamında yer alan Normal dışıleştirme düzenine bakın.

Aşağıdaki tabloda, bire çok ilişkisi olan çalışan ve departman varlıklarını depolamak için yukarıda özetlenen yaklaşımların her birinin artıları ve dezavantajları özetlenmiştir. Ayrıca çeşitli işlemleri ne sıklıkta gerçekleştirmeyi beklediğinizi de göz önünde bulundurmalısınız: Bu işlem yalnızca seyrek gerçekleşiyorsa pahalı bir işlem içeren bir tasarıma sahip olmak kabul edilebilir.

Yaklaşım Avantajlar Dezavantajlar
Ayrı varlık türleri, aynı bölüm, aynı tablo
  • Departman varlığını tek bir işlemle güncelleştirebilirsiniz.
  • Bir çalışan varlığını her güncelleştirdiğinizde/eklediğinizde/sildiğinizde departman varlığını değiştirme gereksiniminiz varsa tutarlılığı korumak için Varlık Grubu İşlemi* (EGT) kullanabilirsiniz. Örneğin, her departman için bir departman çalışanı sayısı tutarsanız.
  • Bazı istemci etkinlikleri için hem çalışan hem de departman varlığı almanız gerekebilir.
  • Depolama işlemleri aynı bölümde gerçekleşir. Yüksek işlem hacimlerinde bu bir etkin noktayla sonuçlanabilir.
  • EGT kullanarak bir çalışanı yeni bir departmana taşıyamazsınız.
Ayrı varlık türleri, farklı bölümler, tablolar veya depolama hesapları
  • Bir departman varlığını veya çalışan varlığını tek bir işlemle güncelleştirebilirsiniz.
  • Yüksek işlem hacimlerinde bu, yükün daha fazla bölüme yayılmasına yardımcı olabilir.
  • Bazı istemci etkinlikleri için hem çalışan hem de departman varlığı almanız gerekebilir.
  • Bir çalışanı güncelleştirirken/eklerken/silerken ve bir departmanı güncelleştirirken tutarlılığı korumak için EGT'leri kullanamazsınız. Örneğin, departman varlığındaki bir çalışan sayısını güncelleştirme.
  • EGT kullanarak bir çalışanı yeni bir departmana taşıyamazsınız.
Tek varlık türüne normalleştirme
  • İhtiyacınız olan tüm bilgileri tek bir istekle alabilirsiniz.
  • Departman bilgilerini güncelleştirmeniz gerekiyorsa tutarlılığı korumak pahalı olabilir (bu, bir departmandaki tüm çalışanları güncelleştirmenizi gerektirir).

*daha fazla bilgi için bkz. Varlık Grubu İşlemleri

Bu seçenekler arasında nasıl seçim yapabileceğiniz ve hangi avantajların ve dezavantajların en önemli olduğu, belirli uygulama senaryolarınıza bağlıdır. Örneğin, bölüm varlıklarını ne sıklıkta değiştirirsiniz; tüm çalışan sorgularınızın ek departman bilgilerine ihtiyacı var mı? Bölümlerinizdeki veya depolama hesabınızdaki ölçeklenebilirlik sınırlarına ne kadar yakınsınız?

Bire bir ilişkiler

Etki alanı modelleri varlıklar arasında bire bir ilişkiler içerebilir. Tablo hizmetinde bire bir ilişki uygulamanız gerekiyorsa, her ikisini de almanız gerektiğinde ilişkili iki varlığı nasıl bağlayabileceğinizi de seçmeniz gerekir. Bu bağlantı, anahtar değerlerindeki bir kurala göre örtük veya ilgili varlığın her varlığında PartitionKey ve RowKey değerleri biçiminde bir bağlantı depolanarak açık olabilir. İlgili varlıkları aynı bölümde depolamanız gerekip gerekmediğine ilişkin bir tartışma için, Bire çok ilişkiler bölümüne bakın.

Tablo hizmetinde bire bir ilişkileri uygulamanıza yol açabilecek uygulama konuları da vardır:

  • Büyük varlıkları işleme (daha fazla bilgi için bkz . Büyük Varlıklar Düzeni).
  • Erişim denetimleri uygulama (daha fazla bilgi için bkz. Paylaşılan Erişim İmzalarıyla erişimi denetleme).

İstemciye katılma

Tablo hizmetinde ilişkileri modellemenin yolları olsa da, Tablo hizmetini kullanmanın iki temel nedeninin ölçeklenebilirlik ve performans olduğunu unutmamalısınız. Çözümünüzün performansını ve ölçeklenebilirliğini tehlikeye atacak birçok ilişkiyi modellediğiniz fark ederseniz, tablo tasarımınızda tüm veri ilişkilerini oluşturmanın gerekli olup olmadığını kendinize sormalısınız. İstemci uygulamanızın gerekli birleştirmeleri gerçekleştirmesine izin verirseniz, tasarımı basitleştirebilir ve çözümünüzün ölçeklenebilirliğini ve performansını geliştirebilirsiniz.

Örneğin, sık değişmeyen veriler içeren küçük tablolarınız varsa, bu verileri bir kez alıp istemcide önbelleğe alabilirsiniz. Bu, aynı verileri almak için tekrar tekrar gidiş dönüşleri önleyebilir. Bu kılavuzda incelediğimiz örneklerde, küçük bir kuruluştaki bölüm kümesinin küçük olması ve seyrek değişmesi, istemci uygulamasının bir kez indirebileceği ve verileri aradıkça önbelleğe alabildiği veriler için iyi bir aday olmasını sağlar.

Devralma ilişkileri

İstemci uygulamanız, iş varlıklarını temsil etmek için devralma ilişkisinin bir parçasını oluşturan bir sınıf kümesi kullanıyorsa, bu varlıkları Tablo hizmetinde kolayca kalıcı hale ekleyebilirsiniz. Örneğin, istemci uygulamanızda tanımlanan aşağıdaki sınıf kümeniz olabilir; burada Kişi soyut bir sınıftır.

Abstract Person class

Tablo hizmetindeki iki somut sınıfın örneklerini, aşağıdaki gibi görünen varlıkları kullanarak tek bir Kişi tablosu kullanarak kalıcı hale gelebilirsiniz:

Person table

İstemci kodunda aynı tabloda birden çok varlık türüyle çalışma hakkında daha fazla bilgi için bu kılavuzun devamında yer alan Heterojen varlık türleriyle çalışma bölümüne bakın. Bu, istemci kodundaki varlık türünün nasıl tanınacaklarına ilişkin örnekler sağlar.

Sonraki adımlar