Gerçekleştirilmiş Görünüm düzeni

Azure Storage

Verilerin gerekli sorgu işlemleri için ideal biçimlendirmeye sahip olmadığı durumlarda, bir veya birden çok veri deposundaki veriler üzerinden önceden doldurulmuş görünümler oluşturun. Bu, etkili bir sorgulama ve veri ayıklama işleminin desteklenmesine ve uygulama performansının artırılmasına yardımcı olur.

Bağlam ve sorun

Verileri depolarken, geliştiricilerin ve veri yöneticilerinin önceliği genellikle verilerin nasıl okunduğundan çok nasıl depolandığı bilgisidir. Seçilen depolama biçimi; verilerin biçimi, veri boyutunu ve veri bütünlüğünü yönetme gereksinimleri ve kullanılan depo türü ile genellikle yakından ilişkilidir. Örneğin, NoSQL belge deposu kullanıldığında veriler, her biri söz konusu varlığa ilişkin tüm bilgileri içeren bir toplama değerleri dizisi olarak temsil edilir.

Ancak bunun sorgular üzerinde olumsuz bir etkisi olabilir. Sorguda yalnızca bazı varlıklara ait verilerin bir alt kümesine ihtiyaç duyulduğunda (tüm sipariş ayrıntılarının yer almadığı birkaç müşteri siparişinin özeti gibi) gerekli bilgilerin edinilmesi için tüm verilerin ayıklanması gerekir.

Çözüm

Verileri, gerekli sonuçlar kümesine uygun bir biçimde gerçekleştiren bir görünümü önceden oluşturmak, etkili sorgulamayı destekleme konusunda yaygın olarak kullanılan bir çözümdür. Gerçekleştirilmiş Görünüm düzeni, kaynak verilerin sorgulama için uygun biçimde olmadığı, uygun bir sorgunun oluşturulmasının zor olduğu veya verilerin ya da veri deposunun yapısı nedeniyle sorgu performansının yetersiz olduğu ortamlarda verilerin önceden doldurulmuş görünümlerinin oluşturulmasını açıklar.

Yalnızca bir sorgu için gerekli olan verilerin bulunduğu bu gerçekleştirilmiş görünümler uygulamaların gereksinim duyduğu bilgileri hızla elde etmesini sağlar. Gerçekleştirilmiş görünümler, tabloları veya veri varlıklarını birleştirmenin yanı sıra hesaplanan sütunların ya da veri öğelerinin geçerli değerlerini, veri öğeleri üzerinde gerçekleştirilen değer birleştirme veya dönüşüm yürütme işlemlerinin sonuçlarını ve sorgunun bir parçası olarak belirtilen değerleri içerebilir. Gerçekleştirilmiş görünüm yalnızca bir sorgu için de iyileştirilebilir.

Gerçekleştirilmiş görünüm ve bunun içerdiği veriler, kaynak veri depolarından yeniden oluşturulabildiğinden gerçekleştirilmiş görünümün ve içerdiği verilerin tamamen atılabilir olması önemli bir noktadır. Gerçekleştirilmiş görünüm hiçbir zaman doğrudan bir uygulama tarafından güncelleştirilmediğinden özelleştirilmiş bir önbellek niteliği taşır.

Görünüme ilişkin kaynak veriler değiştiğinde görünüm en yeni bilgileri içerecek şekilde güncelleştirilmelidir. Bu işlemi otomatik olarak veya sistem özgün verilerde bir değişiklik algıladığında gerçekleştirilecek şekilde zamanlayabilirsiniz. Bazı durumlarda görünümün el ile yeniden oluşturulması gerekebilir. Şekilde Gerçekleştirilmiş Görünüm düzeninin nasıl kullanılabileceğine ilişkin bir örnek gösterilmektedir.

Şekil 1’de Gerçekleştirilmiş Görünüm düzeninin nasıl kullanılabileceğine ilişkin bir örnek gösterilmektedir

Sorunlar ve dikkat edilmesi gerekenler

Bu düzenin nasıl uygulanacağına karar verirken aşağıdaki noktaları göz önünde bulundurun:

Görünümün nasıl ve ne zaman güncelleştirileceği. İdeal olarak, kaynak verilerde değişiklik belirten bir olay sonucunda görünüm yeniden oluşturulur ancak bu, kaynak verilerin hızlı bir şekilde değişmesi durumunda aşırı miktarda ek yüke neden olabilir. Görünümü yeniden oluşturmak için alternatif olarak, zamanlanmış bir görevi, bir dış tetikleyiciyi veya el ile eylemi kullanmayı deneyin.

Bazı sistemlerde (örneğin, yalnızca verileri değiştiren olayların deposunun tutulduğu Olay Kaynağını Belirleme düzeni kullanılırken), gerçekleştirilmiş görünümler gereklidir. Olay deposundan bilgi edinmenin tek yolu tüm olayları inceleyerek görünümleri önceden doldurup geçerli durumu belirlemek olabilir. Olay Kaynağını Belirleme düzenini kullanmıyorsanız bir gerçekleştirilmiş görünümün yararlı olup olmadığını değerlendirmeniz gerekir. Gerçekleştirilmiş görünümler özellikle bir veya az sayıda sorguya yönelik olarak tasarlanmıştır. Çok sayıda sorgu kullanılıyorsa gerçekleştirilmiş görünümler kabul edilemez nitelikte depolama kapasitesi gereksinimlerine ve depolama maliyetlerine neden olabilir.

Görünümü oluştururken ve zamanlanmış olarak gerçekleşiyorsa görünümü güncelleştirirken veri tutarlılığı üzerindeki etkiyi göz önünde bulundurun. Kaynak veriler görünümün oluşturulduğu noktada değişiyorsa verilerin görünümdeki kopyası, özgün verilerle tam olarak tutarlı olmayacaktır.

Görünümü nerede depolayacağınızı göz önünde bulundurun. Görünümün özgün verilerle aynı depoda veya bölümde yer alması gerekmez. Birleştirilmiş birkaç farklı bölüme ait bir alt kümede yer alabilir.

Bir görünüm kaybolursa yeniden oluşturulabilir. Bu nedenle, görünüm geçiciyse ve verilerin geçerli durumunu yansıtarak yalnızca sorgu performansını iyileştirmek veya ölçeklenebilirliği artırmak için kullanılıyorsa bir önbellekte veya daha az güvenilir bir konumda saklanabilir.

Gerçekleştirilmiş bir görünüm tanımlarken, mevcut veri öğelerinin hesaplanmasına veya dönüştürülmesine, sorguda iletilen değerlere veya uygun olduğu durumlarda bu değerlerin bileşimlerine göre bu görünüme veri öğeleri ya da sütunları ekleyerek görünümün değerini maksimuma çıkarın.

Performansı daha fazla artırmak için, depolama mekanizmasının desteklediği ölçüde, gerçekleştirilmiş görünümün dizinini oluşturmayı deneyin. Çoğu ilişkisel veritabanı, Apache Hadoop’a dayalı büyük veri çözümlerinde olduğu gibi görünümler için dizin oluşturmayı destekler.

Bu düzenin kullanılacağı durumlar

Bu desen aşağıdaki durumlarda kullanışlıdır:

  • Doğrudan sorgulanması zor olan veriler üzerinde gerçekleştirilmiş görünüm oluşturma veya sorguların normalleştirilmiş, yarı yapılandırılmış veya yapılandırılmamış şekilde depolanan verileri ayıklamak için son derece karmaşık olması gerektiği durumlar.
  • Sorgu performansını önemli ölçüde artırabilecek veya kullanıcı arabirimi için, raporlama için ya da görüntüleme için doğrudan kaynak görünümü veya veri aktarımı nesnesi işlevi görebilecek geçici görünümler oluşturma.
  • Veri deposuyla bağlantının her zaman kullanılabilir durumda olmadığı bağlantılı veya bağlantısız senaryoları sıklıkla destekleme. Görünüm bu durumda yerel olarak önbelleğe alınabilir.
  • Kaynak veri biçimiyle ilgili bilgi sahibi olmayı gerektirmeyen bir şekilde sorguları basitleştirme ve verileri deneme amaçlı olarak gösterme. Örneğin, farklı tabloları bir veya birden fazla veritabanında ya da NoSQL depolarındaki bir veya birden fazla etki alanında birleştirme ve sonra verileri nihai kullanıma uyacak şekilde biçimlendirme.
  • Güvenlik ve gizlilik nedenleriyle genel olarak erişilebilir, değiştirilmeye açık veya kullanıcılara tamamen açık olmaması gereken kaynak verilerin belirli alt kümelerine erişim sağlama.
  • Her veri deposunun özelliklerinden yararlanmak için farklı veri depolarını köprüleme. Örneğin, başvuru veri deposu olarak, yazma konusunda etkili bir bulut deposu kullanma ve gerçekleştirilmiş görünümleri tutmak için iyi bir sorgu ve okuma performansı sunan ilişkisel bir veritabanı kullanma.
  • Mikro hizmetleri kullanırken, veri depolama alanları da dahil olmak üzere bunları gevşek bir şekilde bağlamanız önerilir. Bu nedenle, gerçekleştirilmiş görünümler hizmetlerinizdeki verileri birleştirmenize yardımcı olabilir. Mikro hizmet mimarinizde veya belirli senaryonuzda gerçekleştirilmiş görünümler uygun değilse, lütfen etki alanı odaklı tasarıma (DDD) uygun ve istendiğinde verilerini toplayan iyi tanımlanmış sınırlar olmasını göz önünde bulundurun.

Bu desen aşağıdaki durumlarda kullanışlı değildir:

  • Veri kaynağının basit ve kolay bir şekilde sorgulanabilmesi.
  • Veri kaynağının çok hızlı bir şekilde değişmesi veya veri kaynağına bir görünüm kullanılmadan da erişilebilmesi. Bu tür durumlarda, görünüm oluşturmaya yönelik işleme ek yükünden kaçınmanız gerekir.
  • Tutarlılık yüksek öncelik taşır. Görünümler özgün verilerle her zaman tam olarak tutarlı olmayabilir.

İş yükü tasarımı

Bir mimar, Azure İyi Tasarlanmış Çerçeve yapılarında ele alınan hedefleri ve ilkeleri ele almak için gerçekleştirilmiş Görünüm deseninin iş yükünün tasarımında nasıl kullanılabileceğini değerlendirmelidir. Örneğin:

Yapı Taşı Bu desen sütun hedeflerini nasıl destekler?
Performans Verimliliği , ölçeklendirme, veri ve kod iyileştirmeleri aracılığıyla iş yükünüzün talepleri verimli bir şekilde karşılamasını sağlar. Gerçekleştirilmiş görünümler, veritabanı altyapısının veya istemcinin her istek için yeniden derlemesini gerektirmeden karmaşık hesaplamaların veya sorguların sonuçlarını depolar. Bu tasarım, genel kaynak tüketimini azaltır.

- PE:08 Veri performansı

Herhangi bir tasarım kararında olduğu gibi, bu desenle ortaya konulabilecek diğer sütunların hedeflerine karşı herhangi bir dengeyi göz önünde bulundurun.

Örnek

Aşağıdaki şekilde, bir satış özeti oluşturmak için Gerçekleştirilmiş Görünüm düzeni kullanmaya ilişkin bir örnek gösterilmektedir. Bir Azure depolama hesabındaki ayrı bölümlerde yer alan Order, OrderItem ve Customer tablolarındaki veriler, Elektronik kategorisindeki her ürün için toplam satış değerinin yanı sıra her bir ürün için o ürünü satın alan müşterilerin sayısını içeren bir görünüm oluşturmak üzere birleştirilir.

Şekil 2: Satış özeti oluşturmak için Gerçekleştirilmiş Görünüm düzenini kullanma

Bu gerçekleştirilmiş görünümün oluşturulması için karmaşık sorgular gerekir. Ancak kullanıcılar, sorgu sonucunu gerçekleştirilmiş görünüm olarak göstererek sonuçları kolayca elde edip doğrudan kullanabilir veya başka bir sorguya dahil edebilir. Görünüm büyük olasılıkla bir raporlama sisteminde veya panoda kullanılır ve haftalık gibi bir zamanlamaya göre güncelleştirilebilir.

Bu örnekte Azure tablo depolaması kullanılıyor olsa da, birçok ilişkisel veritabanı yönetim sistemi gerçekleştirilmiş görünümler için yerel destek de sağlar.

Sonraki adımlar

  • Veri Tutarlılığı Temel Bilgileri. Gerçekleştirilmiş görünümdeki özet bilgilerinin, temel alınan veri değerlerini yansıtacak şekilde tutulması gerekir. Veri değerleri değiştikçe özet verilerini gerçek zamanlı olarak güncelleştirmek pratik olmayabilir ve bunun yerine, sonuçta tutarlılık sağlayacak bir yaklaşımı benimsemeniz gerekir. Dağıtılmış veriler üzerinde tutarlılık sağlama konusundaki sorunları özetlemesinin yanı sıra farklı tutarlılık modellerinin avantajlarını ve dezavantajlarını açıklar.

Bu desen uygulanırken aşağıdaki desenler de uygun olabilir:

  • Komut ve Sorgu Sorumluluğu Ayrımı (CQRS) düzeni. Temel alınan veri değerleri değiştiğinde gerçekleşen olaylara yanıt vererek bir gerçekleştirilmiş görünümdeki bilgileri güncelleştirmek için kullanın.
  • Olay Kaynağını Belirleme düzeni. Bir gerçekleştirilmiş görünümdeki bilgileri korumak için CQRS düzeni ile birlikte kullanın. Bir gerçekleştirilmiş görünümün temel aldığı veri değerleri değiştiğinde, sistem bu değişiklikleri açıklayan olaylar tetikleyebilir ve bunları bir olay deposuna kaydedebilir.
  • Dizin Tablosu deseni. Bir gerçekleştirilmiş görünümdeki veriler genellikle bir birincil anahtara göre düzenlenir, ancak sorguların diğer alanlardaki verileri inceleyerek bu görünümden bilgi alması gerekebilir. Yerel ikincil dizinleri desteklemeyen veri depoları için veri kümeleri üzerinde ikincil dizinler oluşturmak için kullanın.