Ahol Oracle működik, ott szükség van a PL/SQL-re is. Mit jelent a PL/SQL? Tudj meg többet a Bluebird blogposztjából!
More...
A vállalati üzleti adatok túlnyomó többsége relációs adatbázis-kezelőben van tárolva, a relációs adatbázis-kezelő pedig sok helyen egyet jelent az Oracle termékeivel. Ahol viszont Oracle működik, ott szükség van a PL/SQL-re is.
Bevezetés az SQL programnyelvbe
A világ digitalizációjának és a multimédiás tartalmak előretörésének egyik látványos eredménye, hogy milyen eszelős ütemben nő a nem strukturált adatok mennyisége a világban. A Big Data számos új technológiai terület születését segítette elő, az adattudomány (data science) pedig a jövő egyik nagy ígérete lett. Sokakban fogalmazódhat meg a gondolat, hogy ezzel párhuzamosan a hagyományos, relációs adatbázis-kezelőknek és a hozzájuk kapcsolódó technológiáknak szép lassan leáldozik a napja.
Nagyobbat nem is tévedhetnének. A világon az üzleti adatok túlnyomó többsége továbbra is relációs adatbázis-kezelőben (RDBMS) van tárolva, azok szabványos adatkezelő nyelve pedig az SQL. Az SQL igen sokoldalú: segítségével rugalmasan kezelhetjük az adatbázisokban tárolt adatokat, lekérdezhetjük, módosíthatjuk, bővíthetjük azokat. Hatóköre viszont csak az adatbázisra terjed ki. Nem tekinthető „igazi” programozási nyelvnek, mert nem tartalmaz vezérlési elemeket vagy olyan utasításokat, amelyekkel az adatbázis és a „külvilág” közötti adatforgalom szabályozható. Emiatt alkalmazásokat sem lehet vele írni.
Oracle által kiterjesztett programozási nyelv: PL/SQL
Az egyik lehetséges megoldás, hogy egy magasabb szintű, általános célú nyelv (például a C) utasításai közé szúrunk be SQL utasításokat, amelyek alapján a háttérben működő adatbázis-kezelő elvégzi a műveleteket. A másik lehetőség pedig az, hogy magát az SQL-t egészítik ki procedurális elemekkel, így téve lehetővé alkalmazások írását. Ezt az utat választotta az RDBMS-ek koronázatlan királya, az Oracle is, amikor megalkotta a saját, SQL-re alapozott programnyelvét, a PL/SQL-t (a PL maga is a Procedural Language rövidítése). A nyelv a szintaxisát bevallottan az Ada-tól örökölte, de a C++-ból is kerültek bele elemek. Első verziója 1992-ben jelent meg, az Oracle 6.0 részeként, és azóta is minden újabb adatbázis-kiadásnak része a programnyelv bővített funkcionalitású, friss verziója.
Tartalma
A PL/SQL nem a teljes SQL utasításkészletet tartalmazza, hanem csak azon elemeket, amelyek nagyobb szereppel rendelkeznek az adatkezelő eljárások során (hiányoznak például az adatdefiníciós és a védelmet szabályozó utasítások). Cserébe belekerültek alapvető vezérlési elemek, mint a WHILE ciklus vagy az IF elágazás, és létrehozhatók saját memóriaváltozók, amelyekkel a közbenső számítási eredmények tárolhatók. A PL/SQL-ben írt megoldások igen hatékonyak lehetnek, mert az SQL adatkezelési utasítások nem egyenként hajtódnak végre az adatbázisban, hanem programegységekben, úgynevezett blokkokban. A blokkban helyet foglaló SQL utasítások pedig együttesen hatékonyabban optimalizálhatók, mint egyesével.
Előnyök
Támogatja a nyelv a triggereket, vagyis amikor egy bizonyos esemény bekövetkezik, automatikusan végrehajtódik a választevékenység, amely több SQL utasításból és vezérlőelemből is állhat. Alkalmazhatók benne a tárolt eljárások, amikor bizonyos adatkezelési eljárásokat, függvényeket magában az adatbázisban helyeznek el – a kódot csak egy helyen kell nyilvántartani, de többen is hozzáférhetnek, és a végrehajtás is gyorsabb lehet.
A nyelv további nagy előnye, hogy az Oracle rendszerének több komponensével (SQLPlus, SQLForms, egyebek) is integrálható. Szintén nagyon hasznos, hogy független az operációs rendszertől, csak a futó adatbázis-kezelőtől függ a konkrét felépítése és formátuma – az adatbázisban elhelyezhetők olyan PL/SQL elemek, amelyeket bármely alkalmazás elérhet, ha a szabványos Oracle programozási interfészek valamelyikét használja. Az Oracle mellett már támogatja a Times Ten és az IBM DB2 adatbázis-kezelőt is. Az újabb változatokban megjelent a Large Objects (LOB), az XML és a HTTP cookie támogatása, az új adattípusok között pedig a timestamp, az interval vagy az unichar.
A nyelv alapvető strukturális egysége a blokk, amely három fő részből (deklarációs, műveleti és hibakezelő) áll, bár ezek közül csak a műveleti rész kötelező. A deklarációs részben a lokális változókat lehet megadni, a hibakezelő pedig az adatkezelési hibákra adandó válaszokat definiálja. Specialitása a PL/SQL-nek, hogy a blokkok gyakorlatilag végtelen számban ágyazhatók be egymás alá.
Elég a hatékonyság?
Ahogy a régebbi programnyelveknél lenni szokott, a PL/SQL felett is sokan megkongatták már a vészharangot. Ez azonban még korainak látszik – bár felhasználási területe és talán népszerűsége sem nő, arról szó nincs, hogy belátható időn belül eltűnne. Az Oracle adatbázis-kezelője erősen be van betonozva a vállalati rendszerekbe (különösen Magyarországon), így a PL/SQL szerepe is biztosított. A nagy teljesítményű adatfeldolgozás mindig az adatok közelében történik, és ezen a téren a PL/SQL továbbra is uralkodni fog. (Ettől még igaz, hogy mindent, amit PL/SQL-ban csinálunk, meg lehet oldani más rétegekben, más eszközökben és más programozási nyelveken is – legfeljebb nem olyan hatékonyan. Ahogy egy gyakorló külföldi szakember fogalmazott az interneten: „ha valami egy Oracle adatbázison fut, mindegy milyen másik nyelvet használ a front-end alkalmazás, az adatok kezelésére szolgáló logika tárolására nincs jobb, biztonságosabb és gyorsabb hely, mint egy PL/SQL-ben írt tárolt procedúra”.
PL/SQL programozók jövője
A nyelv, és ezzel együtt a nyelvhez értő informatikai szakemberek jövője biztosítottnak látszik. A munka nem lesz kevesebb, hiszen az adatbőség egyre újabb és újabb alkalmazásokat tesz majd szükségessé. Ha a PL/SQL programozók száma a jövőben csökkenésnek indul, a meglévő fejlesztők előtt annál több lehetőség nyílik meg (és annál magasabb fizetésre számíthatnak). Még ha egy szervezet az Oracle-ről és az SQL-ről át is akar térni egy másik technológiára vagy adatkezelési megközelítésre (például a NoSQL-re), akkor is szüksége lesz az SQL-hez értő szakemberekre, akikkel végre lehet hajtani egy ilyen migrációt.
PL/SQL-tanfolyamok
Magyarországon a legtöbb továbbképző intézet kínál PL/SQL-tanfolyamokat, ahol öt nap alatt alapszinten el lehet sajátítani a nyelv legfontosabb elemeit. Könnyebbséget jelent a tanulásban, ha valaki tisztában van az adatbázisok működésének jellemzőivel és ismer valamely más nyelvet. Amúgy sem árt, ha valaki a PL/SQL mellett tud Javában és/vagy Pythonban is programozni.