Różnice między Direct Discovery a danymi w pamięci głównej | Qlik Sense w systemie Windows Pomoc
Przeskocz do zawartości głównej Przejdź do treści uzupełniającej

Różnice między Direct Discovery a danymi w pamięci głównej

Model oparty na pamięci głównej

W ramach udostępnianego przez Qlik Sense modelu opartego na pamięci głównej (in-memory model) wszystkie niepowtarzalne wartości w polach wybranych z tabeli przez skrypt ładowania są ładowane do struktur pól, podczas gdy dane asocjacyjne są jednocześnie ładowane do tej tabeli. Wszystkie dane pól i dane asocjacyjne są przechowywane w pamięci głównej.

One table with three fields.

Druga powiązana tabela załadowana do pamięci głównej będzie mieć wspólne pole z pierwszą tabelą i może dodawać do tego wspólnego pola nowe niepowtarzalne wartości lub współdzielić z nim istniejące wartości.

Two tables with a common field.

Direct Discovery

Jeśli pola tabeli zostaną załadowane za pomocą instrukcji Direct Discovery LOAD (Direct Query), utworzona zostanie wówczas podobna tabela, ale wyłącznie z polami DIMENSION. Jak ma to miejsce w modelu opartym na pamięci głównej, niepowtarzalne wartości dla pól DIMENSION są ładowane do pamięci głównej. Asocjacje między polami pozostają jednak nadal zapisane w bazie danych.

One table with two dimension fields.

Wartości pól MEASURE są również pozostawiane w bazie danych.

One table with measure field values left in the database.

Po zdefiniowaniu struktury Direct Discovery można używać pól Direct Discovery z niektórymi obiektami wizualizacji oraz na potrzeby asocjacji z polami zapisanymi w pamięci głównej. Jeśli korzysta się z pola Direct Discovery, Qlik Sense automatycznie tworzy odpowiednie zapytanie SQL uruchamiane względem danych zewnętrznych. Po dokonaniu selekcji, wartości powiązanych danych z pól Direct Discovery są używane w warunkach WHERE zapytań do bazy danych.

Z każdą selekcją następuje ponowne obliczenie wizualizacji zawierających pola Direct Discovery, a obliczenia mają miejsce w tabeli źródłowej bazy danych w wyniku wykonania zapytania SQL utworzonego przez Qlik Sense. Do określenia momentu ponownego obliczenia wizualizacji można używać funkcji warunku obliczenia. Program Qlik Sense nie będzie wysyłać zapytań w celu ponownego obliczenia wizualizacji, dopóki taki warunek nie zostanie spełniony.

Różnice w działaniu pól w pamięci głównej i pól Direct Discovery

Przetwarzanie odbywające się w pamięci głównej jest zawsze szybsze niż przetwarzanie odbywające się w źródłowych bazach danych. Działanie mechanizmu Direct Discovery jest uzależnione od działania systemu udostępniającego bazę danych, w której przetwarzane są zapytania Direct Discovery.

W celu obsługi mechanizmu Direct Discovery można korzystać ze standardowej bazy danych i najlepszych praktyk w zakresie optymalizacji zapytań. Wszelkie optymalizacje wydajności powinny być wykonywane w źródłowej bazie danych. Direct Discovery nie zapewnia wsparcia dla strojenia wydajności zapytań z poziomu Qlik Sense aplikacji. Można jednak używać funkcji pul połączeń w celu asynchronicznego wysyłania równoległych wywołań do bazy danych. Składnia skryptu ładowania umożliwiająca konfigurację pul połączeń jest następująca:

SET DirectConnectionMax=10;

Ogólną wygodę obsługi zwiększa też włączenie buforowania w programie Qlik Sense. Zob. Buforowanie i Direct Discovery poniżej.

Działanie Direct Discovery z polami DIMENSION może być również ulepszone przez odłączenie niektórych pól od asocjacji. W tym celu należy skorzystać ze słowa kluczowego DETACH w ramach DIRECT QUERY. Odłączone pola nie są uwzględniane w zapytaniu o asocjacje, ale są nadal używane do filtrowania i skracają czas związany z selekcją.

Zarówno pola oparte na pamięci głównej Qlik Sense, jak i pola Direct Discovery DIMENSION zapisują wszystkie swoje dane w pamięci głównej, ale sposób ich ładowania wpływa na szybkość ładowania do pamięci głównej. Pola oparte na pamięci głównej Qlik Sense przechowują tylko jedną kopię wartości pola, gdy istnieje wiele wystąpień tej samej wartości. Wszystkie dane pól są jednak ładowane, a następnie powielone dane zostają zidentyfikowane.

Pola DIMENSION również mają tylko jedną kopię wartości pola, wartości powielone są jednak odrzucane już przy sortowaniu w bazie danych, przed załadowaniem do pamięci. W przypadku przetwarzania dużych ilości danych, jak ma to zazwyczaj miejsce w przypadku korzystania z Direct Discovery, dane te zostają załadowane znacznie szybciej w ramach instrukcji DIRECT QUERY, niż w ramach instrukcji SQL SELECT używanej dla pól opartych na pamięci głównej.

Różnice między danymi w pamięci głównej i danymi w bazie danych

Instrukcja DIRECT QUERY uwzględnia wielkość liter podczas tworzenia asocjacji z danymi opartymi na pamięci głównej. Direct Discovery wybiera dane z baz danych źródłowych zgodnie z ustawieniami uwzględniania wielkości liter w zapytanych polach bazy danych. Jeśli w polach w bazie danych wielkość liter nie jest uwzględniana, wówczas zapytanie Direct Discovery może zwrócić dane, których nie zwróciłoby zapytanie oparte na pamięci głównej. Jeśli na przykład następujące dane istnieją w bazie danych, która nie uwzględnia wielkości liter, Direct Discovery zapytanie o wartość "Red" zwróciłoby wszystkie cztery wiersze.

Tabela przykładowa
Kolumna A Kolumna B
red Jeden
Czerwony dwa
Czerwony trzy
Czerwony cztery

W przypadku wyboru w pamięci "Red," zwróciłby jednak tylko:

Red two

Qlik Sense dokonuje zaawansowanej normalizacji danych, dzięki czemu może znajdować w wybranych danych wyniki, których nie ujawniłaby baza danych. W efekcie zapytanie oparte na pamięci głównej może zwrócić więcej pasujących wartości niż zapytanie Direct Discovery. Na przykład w następującej tabeli wartości dla liczby "1" różnią się lokalizacją spacji dookoła niej:

Tabela z różnymi wartościami dla liczby "1" z powodu różnej lokalizacji spacji dookoła niej
Kolumna A Kolumna B
' 1' Odstęp przed
'1' brak przestrzeni
”1 ” Odstęp po
„2” dwa

W przypadku wybrania "1" w Panelu filtrowania dla ColumnA, gdy dane są podane w standardowym modelu Qlik Sense opartym na pamięci głównej, powiązane zostaną trzy pierwsze wiersze:

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

Jeśli Panel filtrowania zawiera dane Direct Discovery, selekcja "1" może skojarzyć tylko "no_space". Wyniki zwracane dla danych Direct Discovery zależą od bazy danych. Niektóre zwracają tylko "no_space" a niektóre, takie jak SQL Server, zwracają "no_space" i "space_after".

Buforowanie i Direct Discovery

W Qlik Sense buforowanie powoduje, że stany wyboru zapytań i wyniki powiązanych zapytań są umieszczane w pamięci głównej. W przypadku dokonania tych samych selekcji Qlik Sense korzysta z zapytania zapisanego w buforze i nie przesyła już zapytania do bazy danych. W przypadku dokonania innej selekcji, do źródła danych przesyłane jest zapytanie SQL. Znajdujące się w buforze wyniki są udostępniane użytkownikom.

  1. Użytkownik dokonuje początkowej selekcji.

    Do bazowego źródła danych przesłane zostaje SQL.

  2. Użytkownik czyści selekcję, a następnie ponownie dokonuje tej samej selekcji.

    Zwracany jest wynik z bufora, SQL nie zostaje przesłane do bazowego źródła danych.

  3. Użytkownik dokonuje innej selekcji.

    Do bazowego źródła danych przesłane zostaje SQL.

Dla buforowania można ustawić limit czasu za pomocą DirectCacheSeconds zmiennej systemowej. Po osiągnięciu limitu czasu, Qlik Sense czyści pamięć podręczną dla Direct Discovery wyników zapytania, które zostały wygenerowane dla poprzednich selekcji. Qlik Sense następnie wysyła zapytania do danych źródłowych pod kątem selekcji i odtwarza pamięć podręczną na wyznaczony limit czasu.

Domyślny czas buforowania dla wyników zapytania Direct Discovery to 30 minut, chyba że zastosowana została zmienna systemowa DirectCacheSeconds.

Czy ta strona była pomocna?

Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać!