Warning: Creating default object from empty value in /chroot/home/zerotohe/zerotohero.hu/html/wp-content/themes/salient/nectar/redux-framework/ReduxCore/inc/class.redux_filesystem.php on line 29
A Kdb+ adatbázis és a Q nyelv | zeroToHero

A Kdb+ adatbázis és a Q nyelv

By 2016.09.13Adatbázisok

Sziasztok!

Nem olyan régen megszerveztük az első zeroToHero meetupot, adatbázisok témakörben. Csalami Krisztián egyik vendégelőadónk volt, a Kdb+ adatbázist és a hozzá kapcsolódó Q nyelvet mutatta be a hallgatóságnak. Megkértük Krisztiánt, hogy írásban is foglalja össze az előadását, így most még több tanulni vágyóhoz el tudjuk juttatni.

A Kdb+ adatbázis egy olyan adatbázis, mely a memóriában tárolja az adatokat. Ezt az adatbázist a Kx nevű cég fejleszti. Általában olyan esetekben használják, ahol rengeteg az adat, és azokat gyorsan le kell tudni kérdezni. A relációs adatbázisokhoz képest sokkal gyorsabb, illetve telepítése is egyszerűbb. Lemezről is be tudunk olvasni adatokat, és ki is tudunk írni.

A Kx oldaláról a 32 bites verzió ingyenesen letölthető.

Van egy direkt ehhez az adatbázishoz készített nyelv, mely a Q névre hallgat. Ennek segítségével közvetlenül érjük el az adatokat, nincs szükség más eszközök használatára (pl. ORM).

A Q nyelv előnye még, hogy nagyon röviden írhatunk le benne mindent, ez egyben a hátránya is, ugyanis nem igazán hasonlít egyik nyelvre sem, így megtanulása több időt vesz igénybe a többi nyelvhez képest.

Példa kód:

q-nyelv-minta

Ennek a példának a célja mindössze annak megmutatása, hogy nem egy egyszerű nyelv. Megértéséhez jobban el kell mélyedni benne.

A telepítéséhez töltsük le az adatbázist a innen. Kitömörítés után a w32 mappában lévő q fájlt futtassuk. Így indítunk el egy Q processt, ahol már írhatjuk is a parancsokat. Hogy működik-e, egy 1+1 kiadásával letesztelhetjük.

Hogy ne egy parancssori alkalmazásban kelljen dolgozni, használjuk a Kdb studio eszközt, mely letölthető innen.

A Kdb studioval már futó Q processekhez tudunk csatlakozni, mindössze a hostot és a portot kell megadnunk. A host most a localhost, a port pedig amit megadunk a processünknek. Ehhez menjünk a korábban felugró parancssori ablakba és adjuk meg az alábbi paranccsal:

\p <portszám>, pl. \p 1234

Következő lépésben a Studioban a Server menüpont alatt adjuk meg a servert, ami a localhost és az általunk megadott port.

kdb_1

Ezek után nincs más hátra, minthogy fejlesszünk. Nézzünk egy rövid példát, ahol létrehozunk egy táblát, majd végrehajtunk rajta egy lekérdezést.

Táblát ([] oszlopnév1: értéklista; oszlopnév2: értéklista) alakban adhatunk meg, majd a select hasonló az SQL selecthez.

kdb_2

Ebben a táblában 2 oszlopunk van, a és b, melyek az 1,2,3, illetve az egy, ketto, harom értékeket veszi fel. (A `valtozo egy ún. symbol típusú változó, egy stringhez hasonló típus a Q-ban.)

A táblát a t nevű változóban mentjük el, így azon tudjuk lefuttatni a lekérdezésünket. Azokat a sorokat kapjuk itt meg, ahol az a értéke 2.

Akiknek felkeltette az érdeklődését, ajánlom ezt a részletesebb bemutató videót, amit a kx készített : https://www.youtube.com/watch?v=Ii4Qpc6tbYA

Azoknak pedig, akik mélyebben elmélyednének a témában, ajánlom kezdésként Jeffry A. Borror Q for Mortals című jegyzetét, mely elérhető itt: http://code.kx.com/wiki/JB:QforMortals2/contents

Ha kérdésetek van a témával kapcsolatban tegyétek fel nyugodtan commentben!

Személyesen is elérhettek e-mailben a csalamik@gmail.com címen vagy megtalálhattok linkedInen is: https://www.linkedin.com/in/csalamikrisztian/.