Direct Discovery ile bellek içi veriler arasındaki farklar

Bellek içi modeli

QlikView bellek içi modelinde, kod dosyasındaki bir tablodan seçilen alanlardaki tüm benzersiz değerler, alan yapılarına yüklenir ve ilişkili veriler aynı anda tabloya yüklenir. Alan verilerinin ve ilişkili verilerin tümü bellekte tutulur.

Belleğe yüklenen ikinci bir ilgili tablo ortak bir alanı paylaşır ve bu tablo ortak alana yeni benzersiz değerler ekleyebilir veya mevcut değerleri paylaşabilir.

Direct Discovery

Tablo alanları bir Direct DiscoveryLOAD deyimiyle (Direct Query) yüklendiğinde, yalnızca DIMENSION alanlarıyla benzer bir tablo oluşturulur. Bellek içi alanlarda olduğu gibi, DIMENSION alanlarına yönelik benzersiz değerler belleğe yüklenir. Ancak, alanlar arasındaki ilişkiler, veritabanında bırakılır.

MEASURE alan değerleri de veritabanında bırakılır.

Direct Discovery yapısı oluşturulduktan sonra, Direct Discovery alanları belirli grafik nesneleriyle kullanılabilir ve bellek içi alanlarla ilişkiler için kullanılabilir. Bir Direct Discovery alanı kullanıldığında, QlikView harici veriler üzerinde çalıştırılacak SQL sorgusunu otomatik olarak oluşturur. Seçimler yapıldığında, Direct Discovery alanlarının ilişkili veri değerleri, veritabanı sorgularının WHERE koşullarında kullanılır.

Her bir seçimle, hesaplamalar QlikView tarafından oluşturulan SQL sorgusunun yürütülmesi yoluyla kaynak veritabanı tablosunda gerçekleştirilecek şekilde, Direct Discovery alanlarına sahip grafikler yeniden hesaplanır. Hesaplama koşulu özelliği, grafiklerin ne zaman yeniden hesaplanacağını belirtmek üzere kullanılabilir. Koşul karşılanana kadar, QlikView grafiklerin yeniden hesaplanması için sorgu göndermez.

Bellek içi alanlar ve Direct Discovery alanları arasındaki performans farklılıkları

Bellek içi işleme, kaynak veritabanlarında işlemeden her zaman daha hızlıdır. Direct Discovery performansı, Direct Discovery sorgularını işleyen veritabanını çalıştıran bir sistemin performansını yansıtır.

Direct Discovery için standart veritabanının ve sorgu ayarlama en iyi uygulamalarının kullanılması mümkündür. Performans ayarlamalarının tamamı, kaynak veritabanı üzerinde yapılmalıdır. Direct Discovery, QlikView belgesinden sorgu performansı ayarlaması için destek sağlamaz. Ancak, bağlantı havuzu kapasitesini kullanarak veritabanına yönelik olarak asenkron ve paralel çağrılar yapmak mümkündür. Havuz kapasitesini kurmaya yönelik kod dosyası söz dizimi şu şekildedir:

SET DirectConnectionMax=10;

QlikView önbelleğe alma olanağı da genel kullanıcı deneyimini iyileştirir. Bkz. aşağıdaki Önbelleğe alma ve Direct Discovery.

Ayrıca Direct Discovery olanağının DIMENSION alanları ile gösterdiği performans, alanlardan bazılarının ilişkilerden koparılması yoluyla iyileştirilebilir. Bu, DIRECT QUERY üzerinde DETACH anahtar sözcüğüyle gerçekleştirilir. Koparılan alanlar ilişkiler için sorgulanmasa da seçim sürelerini hızlandıracak şekilde filtrelerin bir parçası olmayı sürdürür.

QlikView bellek içi alanlarının ve Direct DiscoveryDIMENSION alanlarının her ikisi de verilerini bellekte tutsa da yüklenme biçimleri, belleğe yükleme hızını etkiler. QlikView bellek içi alanları, aynı değerin birden çok örneği olduğunda alan değerinin yalnızca bir kopyasını tutar. Ancak, tüm alan verileri yüklenir ve ardından çoğaltılmış veriler ayrılır.

DIMENSION alanları ayrıca, bir alan değerinin yalnızca bir kopyasını depolar, ancak çoğaltılmış veriler belleğe yüklenmeden önce veritabanında ayrılır. Büyük miktarlarda verilerle çalışıyorsanız (Direct Discovery kullanılırken genelde böyledir), veriler bir DIRECT QUERY yüklemesi olarak, bellek içi alanlar için kullanılan SQL SELECT yüklemesinde olduğundan çok daha hızlı yüklenir.

Bellek içi veriler ile veritabanı verileri arasındaki farklar

DIRECT QUERY, bellek içi verilerle ilişki oluşturulurken büyük/küçük harf duyarlıdır. Direct Discovery, veritabanının büyük/küçük harf duyarlılığına göre kaynak veritabanlarından veri seçer. Bir veritabanı büyük/küçük harf duyarlı değilse, Direct Discovery sorgusu, bir bellek içi sorgunun döndürmeyeceği verileri döndürebilir. Örneğin, aşağıdaki veriler büyük/küçük harf duyarlı olmayan bir veritabanında mevcutsa, "Red" değerine yönelik bir Direct Discovery sorgusu dört satırın tümünü döndürür.

ColumnA ColumnB
red one
Red two
rED three
RED four

Diğer yandan, "Red," bellek içi seçimi yalnızca şunu döndürür:

Red two

QlikView, seçilen veriler üzerinde veritabanlarının eşleştirmeyeceği eşleşmeler üretecek ölçüde verileri normalleştirir. Bunun sonucunda, bir bellek içi sorgu bir Direct Discovery sorgusundan daha fazla eşleşen değer üretebilir. Örneğin, aşağıdaki tabloda, "1" sayısına yönelik değerler etraflarındaki boşlukların konumuna göre değişiklik göstermektedir:

ColumnA ColumnB
' 1' space_before
'1' no_space
'1 ' space_after
'2' two

Verilerin standart QlikView bellek içi biçiminde olduğu ColumnA için bir liste kutusunda "1" değerini seçerseniz, ilk üç satır ilişkilendirilir:

' 1' space_before
'1' no_space
'1 ' space_after

Liste kutusu Direct Discovery verilerini içeriyorsa, "1" seçimi yalnızca "no_space" ile ilişki kurabilir. Direct Discovery verileri için döndürülen eşleşmeler veritabanına göre değişir. Bazıları yalnızca "no_space" döndürürken, bazıları (örneğin, SQL Server) "no_space" ve "space_after" döndürür.

Önbelleğe alma ve Direct Discovery

QlikView önbelleğe alma özelliği, sorguların seçim durumlarını bellekte depolar. Aynı türde seçimler yapıldıkça QlikView, kaynak verileri sorgulamak yerine önbellekteki sorguyu kullanır. Farklı bir seçim yapıldığında, veri kaynağı üzerinde bir SQL sorgusu gerçekleştirilir. Önbelleğe alınan sonuçlar, kullanıcılar arasında paylaşılır.

Örnek:  

  1. Kullanıcı ilk seçimi uygular.

    SQL, temeldeki veri kaynağına geçirilir.

  2. Kullanıcı seçimi siler ve aynı seçimi ilk seçim olarak uygular.

    Önbellek sonucu döndürülür; SQL, temeldeki veri kaynağına geçirilmez.

  3. Kullanıcı farklı seçim uygular.

    SQL, temeldeki veri kaynağına geçirilir.

DirectCacheSeconds sistem değişkeniyle önbelleğe almaya yönelik bir süre sınırı ayarlanabilir. Süre sınırına ulaşıldığında, QlikView önceki seçimler için oluşturulan Direct Discovery sorgu sonuçlarına yönelik önbelleği temizler. Daha sonra QlikView, kaynak verileri seçimler için sorgular ve atanan süre sınırı için önbelleği yeniden oluşturur.

Direct Discovery sorgusu için varsayılan önbellek süresi, DirectCacheSeconds sistem değişkeni kullanılmadığı sürece 30 dakikadır.