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:
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.
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.
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/.