Volt egy érdekes beszélgetés-kezdeményem az egyik db-s kollégával. Azt vallja, hogy az egyetlen üdvözítő út, ha minden funkció db-ben van. Nem tudom, hogy dolgozott-e valaha Oracle-én kívül mással is, de én igen emiatt nem értettem vele egyet.
Még egyetem alatt kezdtem dolgozni projekteken. Java az Araeltánál, Oracle Applications a NI-nál, Enterprise Java a Statlogics-nál, Nagyvállalati üzleti megoldások a SAP-nál. Szerintem többet láttam,még akkor is, ha egyenként kevesebb a tapasztalatom az adott területen.
Gondoljuk csak végig. A 3 rétegű architektúra csak logikai elhatárolás. Ergo, a mindent adatbázisba elv csak fizikailag is egybe teszi. A db közvetlen "webre" helyezése egy bizonyos üzleti szinten túl nem elfogadhatóm főleg biztonsági okokból. Ami azt jelenti kell egy újabb db, csak a PL/SQL futtatásra. hoppá fizikailag megint szétváltunk. Tehát leegyszerűsítettük a kérdést Java/.NET/Python/etc. vs. PL/SQL, mint nyelv erejére az alkalmazásfejlesztésben.
Mindegyik valamire való programozási nyelv Turing-teljes. Amit az egyikben meg lehet csinálni elérhető a másikban is. De ha a mindennapi fejlesztésben is alkalmaznánk, akkor még mindig assemblyben fejlesztenénk.
PL/SQL nagyon erős adatkezelésben. Tagadhatatlan, hiszen alkotásánál az volt a cél, hogy deklaratív sql-t kiegészítik procedurális lehetőségekkel.
Java elsősorban procedurális és csak másodsorban adatmanipuláló nyelv. Lazán találunk hozzá library-kat, toolokat ezen "hátrány" kiküszöbölésére. Az Oracle által támogatott SQLJ szabvány gyakorlatilag teljesen elmossa az ilyen jellegű különbségeket. Amiben a Java sokkal erősebb a mindenféle járulékos eszköz, ami a PL/SQL fejlesztő kezéből hiányzik. Gyakorlatilag csak akkor kerül bele, ha aki megismert valami erős dolgot és alkalmazni akart PL/SQL-ben is, akkor belefejlesztette. web, regex etc. soroljam még. Ezen példák mutatják, hogy erős, viszonylag általános dolgok nem (csak) db környezetben kellenek. Szinte törvényszerű, h ezen eszközökben lemaradás lesz, mindig is. jó példa a ABAP sztringmanipulációja. regex ugyan van, de én még nem találkoztam aktív használatban vele, noha stringekkel "minden nap" kellett dolgoznom.
Vegyük pénzügyileg is. Amennyire én tudom még egyetlen application server sem éri el egy Oracle server árát. Oracle rendszerekből egy hibabiztos load balanced rendszert kihozni igen drága mulatság, míg az eredmény nem tér el számottevően. Elképesztően jó teljesítményű ingyenes application serverek állnak rendelkezésre Java-joz. Support, meg hasonló dolgok megint nem számítanak, mert mindenhez éehet venni konzulenseket, supportot, miegymás.
Harmadik érv, hogy a db fő feladata az adatok villámgyors kezelése, konzisztencia megőrzése. Ez az, aminek évtizede háttere és kiforrott technológiája van. Nem azért kell Oracle, mert futtat PL/SQL-t, hanem mert csaknem mindig konstans válaszidőt tud produkálni adatmennyiségtől függetlenül. Ha ebben a legjobb, akkor minek használjuk azon featureit, amikben vannak jobbak. Mindenből vegyük a legjobbat.
De azért említsünk meg egy ellenpontot is. A tudást. Ha valaki világéletében ezzel foglalkozott és nem veszi a fáradságot más megismeréséhez, akkor bizony "munka" nélkül marad. Ez önmagában az egyik legfrusztrálóbb dolog egy férfinak. Nem érezheti magát fontosnak.