Direct Discovery ve bellek içi veri arasındaki farklar

Bellek içi model

Qlik Sense bellek içi modelde, 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.

One table with three fields.

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.

Two tables with a common field.

Direct Discovery

Tablo alanları bir Direct Discovery LOAD 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.

One table with two dimension fields.

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

One table with measure field values left in the database.

Direct Discovery yapısı oluşturulduktan sonra, Direct Discovery alanları belirli görselleştirme nesneleriyle kullanılabilir ve bellek içi alanlarla ilişkiler için kullanılabilir. Bir Direct Discovery alanı kullanıldığında, Qlik Sense, harici veriler üzerinde çalıştırılacak uygun 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 Qlik Sense tarafından oluşturulan SQL sorgusunun yürütülmesi yoluyla kaynak veritabanı tablosunda gerçekleştirilecek şekilde, Direct Discovery alanlarına sahip görselleştirmeler yeniden hesaplanır. Hesaplama koşulu özelliği, görselleştirmelerin ne zaman yeniden hesaplanacağını belirtmek üzere kullanılabilir. Koşul karşılanana kadar, Qlik Sense görselleştirmelerin 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 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, Qlik Sense uygulamasından sorgu performansı ayarlaması için destek sağlamaz. Ancak, bağlantı havuzu özelliğini 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;

Qlik Sense ö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 üzerindeki 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.

Qlik Sense bellek içi alanlarının ve Direct Discovery DIMENSION alanlarının her ikisi de verilerini bellekte tutsa da yüklenme biçimleri, belleğe yükleme hızını etkiler. Qlik Sense 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.

Ayrıca DIMENSION alanları da 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 (bu Direct Discovery olanağı kullanılırken genel olarak geçerli bir durumdur), 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ı bir şekilde yüklenir.

Bellek içi veriler ve 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, sorgulanan veritabanı alanlarının büyük/küçük harf duyarlılığına göre kaynak veritabanlarından veri seçer. Veritabanı alanları büyük/küçük harfe 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.

Örnek tablo
ColumnA ColumnB
kırmızı bir
Kırmızı iki
kIRMIZI üç
KIRMIZI dört

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

Red two

Qlik Sense, verileri, seçilen veriler üzerinde veritabanlarının eşleştirmeyeceği eşleşmeler üretecek düzeye kadar 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:

Farklı alan konumu nedeniyle "1" sayısı için farklı değerler içeren tablo
ColumnA ColumnB
' 1' space_before
'1' no_space
'1 ' space_after
'2' iki

Verilerin standart Qlik Sense bellek içinde olduğu ColumnA için Filtre bölmesinde "1" seçimini yaparsanız, ilk üç satır ilişkilendirilir:

Associated rows
ColumnA ColumnB
' 1' space_before
'1' no_space
'1 ' space_after

Filtre bölmesi Direct Discovery verileri içeriyorsa, "1" seçimi yalnızca "no_space" seçeneğini ilişkilendirir. Direct Discovery verileri için döndürülen eşleşmeler, veritabanına bağlıdır. Bazıları "no_space" döndürür, SQL Server gibi bazıları ise "no_space" ve "space_after" döndürür.

Önbelleğe alma ve Direct Discovery

Qlik Sense olanağının önbelleğe alma özelliği, sorguların seçim durumlarını ve ilişkili sorgu sonuçlarını bellekte depolar. Aynı türde seçimler yapıldıkça Qlik Sense, 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.

Example:  

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

    SQL, temel veri kaynağıyla aktarılır.

  2. Kullanıcı seçimi temizler ve ilk seçimle aynı seçimi uygular.

    Önbelleğe alma sonucu döndürülür, SQL temel veri kaynağıyla aktarılmaz.

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

    SQL, temel veri kaynağıyla aktarılır.

Önbelleğe alma için DirectCacheSeconds sistem değişkeniyle bir süre sınırı ayarlanabilir. Süre sınırına ulaşıldığında, önbellek önceki seçimler için oluşturulan Direct Discovery sorgu sonuçları için Qlik Sense tarafından temizlenir. Daha sonra Qlik Sense, seçimler için veri kaynağını sorgular ve atanmış süre sınırı için önbelleği yeniden oluşturur.

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