Monthly Archives

May 2018

Mi is az a Qlik Sense?

By | Qlik, Tech Trends | No Comments

A Qlik Sense egy gyors, rugalmas interaktív elemzési lehetőséget biztosító rendszer, amellyel több száz felhasználó akár nagy adatmennyiséget is egyszerre képes feldolgozni. Mondhatnánk, hogy egy egyszerű BI eszköz, de azért annál jóval több.

Miért különleges?

  • Memóriában kezeli az adatokat, ezáltal gyors;
  • A szabadalmaztatott, úgynevezett “asszociatív technológia” lehetővé teszi a teljes adathalmaz felfedezését adatvesztés nélkül, így az adatok rugalmasan elemezhetőek;
  • Nagy adatmennyiséget képes hatékonyan kezelni;
  • Saját és felhő infrastruktúrán is elérhető.

In-Memory technológia

A Qlik Sense in-memory technológiára épül, vagyis lemez helyett memóriában, tömörítve tárolja az adatokat. Az in-memory tárolás előnye, hogy gyorsabban elérhetők az adatok RAM-ból, mint lemezről. A memória nem olcsó, viszont az utóbbi időben egyre olcsóbban elérhető és felhőben könnyedén skálázható.

Asszociatív technológia

A Qlik asszociatív technológiája lehetővé teszi, hogy:

  • egyrészt különböző forrásokból származó adatok adatvesztés nélkül automatikusan egymáshoz kapcsolódjanak;
  • másrészt az összekapcsolt és össze nem kapcsolt adatok is elérhetőek és könnyedén kereshetőek legyenek.

Az úgynevezett “associative technology” a Qlik egyik legfontosabb eleme az in-memory technológián kívül. Ez a technológia tehát lehetővé teszi, hogy a felhasználó a teljes adathalmazt átlássa függetlenül attól, hogy az adathalmaz mely része honnan érkezett és az összekapcsolás során mely rekordok esnének ki. Gyakorlatilag ezáltal egy FULL OUTER JOIN valósul meg minden adatforrás összekapcsolásakor úgy, hogy az eszköz azokat az adatokat kiemeli, amelyek a kulcsok mentén ténylegesen összekapcsolódnak. Még egy tapasztalt SQL fejlesztővel is előfordul, hogy két forrástábla összekapcsolásával adatot veszít. A Qlik asszociatív technológiája kiküszöböli ezt a problémát.

Big data

A Qlik Sense-hez tartozik egy big data megoldás is, ami az on-demand elnevezést kapta. Ennek lényege, hogy a felhasználó a nagy mennyiségű adathalmaz 1-1 kisebb szeletét választhatja ki, amelyből a Qlik Sense Server egy új, részletesebb lekérdezést generál, ezáltal a “nagy adatmennyiség” probléma redukálódik “kis adat”-ra.

Saját és felhő infrastruktúra

A Qlik egy ökoszisztéma, amely több változatban elérhető.

Felhő infrastruktúrán (Software as a Service – SaaS) ingyenesen elérhető és használható a Qlik Sense Cloud Basic verziója, amire itt tudsz regisztrálni. Ha 5-nél több felhasználóval szeretnéd az elemzéseid megosztani és a teljes funkcionalitást ki akarod használni, akkor elő kell fizetned a Business verzióra, ami jelenleg havi 15 EUR/fő áron elérhető.

A Qlik Sense Desktop ingyenesen használható, elérhető bárki számára. A Desktop nagyszerűen alkalmas dashboardok, vizualizációk készítésére lokálisan, a megosztás azonban vagy Qlik Sense Cloudon vagy Enterprise Serveren keresztül lehetséges.

Az Qlik Sense Enterprise a Qlik Sense server változata. A server változat elérhető különböző konstrukciókban: felhasználó, server vagy előfizetés alapon. A server felinstallálható virtuális gépekre (felhőben) vagy saját fizikai vagy virtualizált környezetre. Saját hardver infrastruktúra esetén az adatok tárolása és kezelése mindvégig saját kézben maradhat.

Kíváncsi vagy, hogy működik a Qlik Sense a gyakorlatban vagy milyen áron érhető el a keretrendszer? Lépj kapcsolatba velünk a http://thebigdataplatform.hu, illetve a http://www.united-consult.hu weboldalakon található elérhetőségeken, a LinkedIn-en, vagy a Facebookon és kérj egy demót!

Aszinkron programozás Shiny-ban

By | Data Science, R | One Comment

Az eRum konferencia a második legnagyobb esemény az R programozás világában. Idén Budapest adott otthont a rendezvénynek, így nekem is nyílt lehetőségem előadni. Előadásom megtekinthető a youtubeon.

Miért?

Az R egy szálon futó (single threaded) nyelv, ezért ugyanarra az instance-ra érkező feladatok blokkolják egymást. Ez alap esetben nem okoz gondot, mert rövid feladatoknál csak millimásodperceket kell várni, ezért fel sem tűnik a felhasználónak.

Hosszabb feladatok futtatásánál viszont előfordulhat, hogy az egyik felhasználó (akár rövid, millimásodperces kérése) beragad egy hosszabb folyamat mögé. A rövid feladat futása csak akkor fog elkezdődni, amikor a sorban előtte lévő már befejeződött. Ez azt jelenti, hogy ha egy 0.1 mp alatt lefutó feladat a sorban egy 15 másodperces feladat mögé szorul (pl.: egy nagyobb csv fájl beolvasása miatt), akkor 15 másodpercig sorba áll, majd 0.1 mp alatt lefut, ez idő alatt a felhasználó pedig egyáltalán semmit nem tud csinálni.

Megfelelően loadbalance-olt alkalmazások esetén ez a blokkoló viselkedés ritkábban fordulhat elő, de az RStudio promises csomagja végleg megoldja a problémát. Az aszinkron futtatáshoz három csomag szükséges: a shiny aszinkron verziója, a future package és a promises package. Ezeket a csomagokat az alábbi utasításokkal installálhatjuk:

devtools::install_github("rstudio/promises")
devtools::install_github("rstudio/shiny")
install.packages("future")

Hogyan?

Egy standard (szinkron) hívást az alábbi módon írnánk meg: (csv fájl beolvasása, szűrés, majd oszlopkiválasztás)

library(dplyr)
read.csv("eRum.csv") %>%
  filter(talk_type == "shiny") %>%
  select(speaker_name)

 

Ugyanez a kód aszinkron hívás esetén így módosul:

future(read.csv("eRum.csv")) %...>%
  filter(talk_type == "shiny") %...>%
  select(speaker_name)

 

Az alapértelmezett (szinkron) hívást úgy tudjuk aszinkronná konvertálni, ha a lassan futó függvényt ‘future’ hívásba ágyazzuk, illetve  további függvényhívásokat intéző pipe operátort lecseréljük promise pipe operátorra (‘%…>%’).

Miért?

Ilyenkor a Shiny szerver egy teljesen új folyamatot indít a future package segítségével, majd amikor ez a folyamat végzett, akkor visszatér, és a szerver kiértékeli. Mivel külön szálon fut, így nem blokkolja más felhasználók folyamatait.

Ez a funkcionalitás csak különböző felhasználó session-ök között működnek (egyelőre). A felhasználónak, aki aszinkron módon hív meg egy függvényt, ugyanúgy meg kell várnia, amíg ez a folyamat lefut, mint szinkron mód esetén.

Demó

Összegzés

Összességében az aszinkron hívási mód kiváló lehetőséget biztosít a lassan futó függvényhívások loadbalance-olására, viszont nem használható a JavaScript-hez hasonló módon, egyazon felhasználó folyamatainak aszinkron menedzselésére.

További információk:

Ha tetszett a cikk, iratkozz fel hírlevelünkre (a jobb felső sarokban az “értesítésre” kattintva), vagy kövess minket LinkedIn és Facebook csatornákon!

Asszinkron programozás az eRumon

By | Data Science, R | No Comments

Gyurkó Dávid, R/Shiny rajongónk és nagykövetünk “Going async with Shiny” címmel előadást tartott az idei európai R konferencián az eRum-on. Az aszinkron programozás alkalmazásával a shiny alkalmazásunk akkor is responsive marad miközben a háttérben egy másik erőforrásigényes program (például egy neurális háló betanítása) fut. Dávid a konferencián röviden bevezette a useReket az asszinkron programozás rejtelmeibe. Ha lemaradtál az előadásról kövess minket a blogon, hamarosan jelentkezünk!