Aracılığıyla paylaş


İyileştirilmiş sorgu verisi kalıpları

En basit ve en hızlı veri sorgusu kalıbı şöyledir:

  1. Tek bir tablo veya görünüm
  2. Sunucuda ihtiyacınız olana göre önceden filtrelenmiş
  3. Sütunlar beklenen sorgular için doğru şekilde dizine alınmış

Uygulamanızı tasarlarken, verileri hızlı bir şekilde nasıl sorgulayacağınızı düşünmeniz gerekir. Verileri sorgulamanın en iyi yolu, ihtiyacınız olan tüm bilgileri içeren tek bir tablo veya görünüm kullanmak ve uygulamanızda görüntülemeden önce sunucuda filtrelemektir. Ayrıca, verileri filtrelemek veya sıralamak için kullandığınız sütunların düzgün bir şekilde dizine eklendiğinden emin olmanız gerekir. Bu, uygulamanızı daha hızlı ve sorunsuz hale getirir.

Örneğin, müşterilerin ve satış elemanlarının listesini gösteren bir galeriniz olduğunu varsayalım. Müşteri ve satış temsilcisi bilgilerini ayrı tablolarda depoluyorsanız her müşterinin satış temsilcisi adını almak için aramaları kullanmanız gerekir. Bu işlem, diğer tabloda çok sayıda sorgu çalıştırması gerektiğinden uygulamanızı yavaşlatır. Müşteri ve satış temsilcisi bilgilerini tek bir tabloda birleştiren bir görünüm oluşturmak ve bu görünümü galeriniz için veri kaynağı olarak kullanmak daha iyi bir yoldur. Ardından, uygulamanızın ihtiyaç duyduğu tüm verileri almak için yalnızca bir sorgu çalıştırması gerekir.

Sorgu hızı ve veri normalleştirme arasında bir denge vardır. Veri normalleştirme, verileri yalnızca bir kez depoladığınız ve yinelemeyi önlediğiniz anlamına gelir. Bu durum, verilerin tutarlı ve doğru kalmasına yardımcı olur. Ancak, bazen sorguları daha hızlı ve daha kolay hale getirmek için bazı verileri çoğaltmanız gerekir. Uygulama tasarımınızda ve tablo yapınızda bu iki hedefi dengelemeniz gerekir. Aksi takdirde, farklı tablolardaki verileri filtrelemek ve birleştirmek için çok sayıda çalışma yapması gerektiğinden uygulamanız yavaş ve gecikmeli hale gelir.

Sunucu tarafı görünümlerini kullanma

Görünümler, bu hedefleri dengelemeye yardımcı olan en yaygın araçtır. Sorgular için tek bir tablo yapısı sunar, sorguda ihtiyaç duyduklarınız için verileri önceden filtreleyebilir ve diğer tablolarda arama ve birleştirmeleri etkinleştirir. Görünüm için filtreler, aramalar ve birleştirmeler sunucuda hesaplandığından, hem yük hem de istemci tarafı işlem en aza indirilir.

Galeride çok fazla arama yapmaktan kaçının

Galeri, bir veri kaynağındaki birçok kaydı görüntüleyebilir. Ancak bazen, orijinal veri kaynağıyla ilgili başka bir veri kaynağından ek bilgi göstermeniz gerekir. Örneğin, müşteri listesini gösteren bir galeriniz var ve her müşteriye atanan satış temsilcisinin adını göstermek istiyorsunuz. Satış temsilcisinin adı, müşterinin bilgilerinden farklı bir veri kaynağında depolanır. Satış temsilcisinin adını göstermek için diğer veri kaynağında eşleşen kaydı bulan bir arama işlevi kullanmanız gerekir. Bu durumda orijinal tablo arama değerleriyle genişletilir.

Ancak, çok sayıda kaydınız ve çok sayıda aramanız varsa tabloyu genişletmek çok yavaş olabilir. Galerideki her kayıt için uygulamanın diğer veri kaynağına ayrı bir sorgu çalıştırması ve arama değerini alması gerekir. Bu durum, uygulamanın her kayıt için birçok sorgu çalıştırması gerekebileceği anlamına geleceğinden uzun sürebilir ve uygulama performansını etkileyebilir. Bu karşıt kalıp, bazen "N kare, (n^2)" veya "N+1" problemi olarak bilinir.

StartsWith veya Filter'ı kullanma

Power Fx, verilerde arama yapmak için çeşitli yollar sağlar. Genel olarak, In gibi tablonun tamamını okuyan bir ifade yerine StartsWith veya Filter gibi dizinlerden yararlanan bir ifade kullanın. In işleci, bellek içi koleksiyonlar için veya dış veri kaynağı tablosu çok küçükse uygundur.

Verileri çoğaltmayı göz önünde bulundurun

Bazen veriler farklı bir konumda veya biçimde depolandığı için sorguda erişim yavaştır. Sorguyu daha hızlı hale getirmek için yavaş verileri kopyalayabilir ve hızlı ve kolay sorgulanan bir tabloda yerel olarak depolayabilirsiniz. Ancak bu, yerel verilerin orijinal verilerin en güncel sürümü olmayabileceği anlamına gelir. Ardından, yerel verileri düzenli aralıklarla güncelleştirmek için başka bir işlem çalıştırın. Bu işlem bir Power Automate akışı, eklenti, saklı yordam veya verileri bir yerden başka bir yere taşıyabilen başka bir yöntem olabilir.

Yerel verileri güncelleştirme sıklığı gerekliliği, iş ihtiyaçlarınıza bağlıdır. Uygulamanız için verilerin ne kadar güncel olması gerekiyor? Örneğin, bisiklet satan bir şirket olan Contoso için çalıştığınızı varsayalım. Mevcut bisikletlerin listesi, özel bir bağlayıcıdaki bir API aracılığıyla erişebileceğiniz bir Ürünler veritabanında depolanıyor. Ancak API çağrısının yavaş olduğunu ve bu nedenle ürün verilerini kopyalayıp yerel olarak bir tabloda depolamaya karar verdiğinizi varsayalım. Ardından, tablonuzu uygulamanızla ilgili diğer verilerle birleştiren bir görünüm oluşturuyorsunuz. Ayrıca, her gün çalışan ve tablonuzu API'den gelen en son ürün verileriyle güncelleştiren bir Power Automate akışı oluşturuyorsunuz. Böylece uygulamanız yerel verileri daha hızlı sorgulayabilir ve veriler en fazla bir günlüktür.

Verileri çoğaltmak, iyi performans sağlamak için kurumsal düzeydeki uygulamalarda yaygın olarak kullanılan bir tür tekniktir. Verileri sorgulama için iyileştirilmiş tek bir tabloda çoğaltmak için Dataverse eklentilerini, saklı yordamları veya veri taşımayı kullanabilirsiniz. Şu önemli soru sorulmalıdır: Bu veriler ne kadar güncel olmalıdır? Biraz gecikmeyi göze alabiliyorsanız uygulamanızı hızlandırmak için bu tekniği kullanabilirsiniz.

Öneriler

Bu hedefe ulaşmak için aşağıdaki soruları ve önerileri göz önünde bulundurun:

  1. Müşterinin bir galerideki veya veri kılavuzundaki veri değerini görmesi ne kadar önemli? Önce bir kayıt seçip sonra verileri bir formda göstermek kabul edilebilir bir uygulama mı?
  2. Görünümler, verileri doğru biçimde görmek için gereken ön çalışmayı yapabilir mi?
  3. "StartsWith" işlevinin çalışacağı bir "IN" işleci mi kullanıyorsunuz?
  4. Verilerinizin ne kadar güncel olması gerekiyor? Sorgunuzun varsayılan olarak tek bir tablo üzerinde çalışmasını sağlamak için kullanabileceğiniz bir veri çoğaltma stratejisi var mı?