380 likes | 495 Views
Perzisztencia-megoldások Java Technológiával. Molnár István, Simon Géza. A szerzők. Java 0.9 óta (1995) Java/J2EE tervezők oktatók Sun & Oracle istvan. molnar @ geza.simon@ sun.hu. Felülnézet motiváció elvek, fogalmak módszerek
E N D
Perzisztencia-megoldások Java Technológiával Molnár István, Simon Géza
A szerzők • Java 0.9 óta (1995) • Java/J2EE tervezők • oktatók • Sun & Oracle istvan.molnar@ geza.simon@ sun.hu
Felülnézet motiváció elvek, fogalmak módszerek (objektum adatbázis, memória adatbázis, xml adatbázis, ...) Alulnézet specifikációk, szabványok (jdo, prevalence, ...) termékek (Kodo, XML:DB, ...) Összefoglalás és a jövő Útvonalterv
Perzisztencia? • mi az? • mire való? • elvi fajtái • gyakorlati módszerek • konkrét termékek
:obj :obj :obj :obj Impedance mismatch ?
Felülnézet Az adatokat meg kell őrizni / át kell menteni • leállás - újraindítás között • elosztott rendszer, cluster elemei között • HA rendszerben eszközcserék között Object-Relational Mapping
Absztrakt perzisztencia Perzisztencia Hosszú távú perzisztencia • ortogonális • transzparens
Technológiai irányok Amit lehet, generáljunk (metaadatokból, leíróból,...) • kódgenerálás • sémagenerálás „Impedanciaillesztés” • Object - relational • Relational - object
:obj :obj :obj :obj JDBC
:obj :obj :obj :obj :DAO DAO
:obj :obj :obj :obj :persistenceManager JDO
:obj :obj application server :obj Entity EJB
:obj :obj :obj :obj A memória az adatbázis • Memória - olcsó • Memória - gyors Megoldandók... biztonság, stabilitás, garaciák
XML adatbázis <A> <B>text1</B> <C> <D>child of C</D> <E>another child of C</E> </C> <F>moreText</F> </A>
XML adatbázis <A> <B>text1</B> <C> <D>child of C</D> <E>another child of C</E> </C> <F>moreText</F> </A>
Program kód vagy lekérdezés Kód • API-hívások • saját protokoll Lekérdező nyelv (és módosító nyelv) • létező (SQL, Xpath, ...) • új nyelv (EJBQL, JDOQL, OQL...)
Alulnézet Specifikációk, szabványok, majdnem szabványok Termékek • API-k, library-k, csomagok • fejlesztést segítő eszközök • futtatókörnyezetek
JDO • Domain objects - programozó feladata • Tárolásuk - persistence manager • tranzakcionálisan • Transzparens perzisztencia (de nem ortogonális) • látszólag minden objektum a JVM memóriájában
JDO PersistenceManager pm = ... //factory Transaction t = ... t.begin(); pm.makePersistent(appObj1); t.commit(); pm.close();
JDO életciklus - állapotok • transient, ..., persistent new, persistent dirty, ... persistent deleted, ... persistent nontransactional, ... tranzakciók - callback szinkronizáció • jdoPostLoad(), jdoPreStore(), jdoPreDelete(), ...
JDOQL (és nincs jdoDML!) ... query.declareImports("import Project"); query.declareVariables("Project proj"); query.declareParameters( "String state, String deptName, int sal"); query.setOrdering( "department.deptid ascending, salary descending"); Collection result = (Collection)query.execute(...
JDO implementációk Kodo Sun Reference Implementation Tri-active JDO (sourceforge.net) ...
CMP EJB Osztályok (domain object) elkészítése 1 osztály, 2 interface • Bean implementation osztály • Entity EJB: adatbázis műveleteket az AS hívja • CMP Entity EJB: abstract: DB műveleteket az AS írja
CMP EJB Perzisztens mezők kijelölése: deployment descriptor(ok) - XML • Lekérdezés: EJBQL SELECT OBJECT(d) FROM Document d WHERE d.regNo = ?1 • Mezők összerendelése <cmp-field-mapping name="documentId" persistence-name="documentId" /> • Típusok (DB típus - java osztály) egyeztetése
CMP appserver deployment descr metódus szintű tranzakc. EJBQL (~sql) remote invocation kódgenerálás JDO appserver, web server 1 réteg, 2 réteg, ... metadata öröklődés, polimorfizmus tranzakc. szinkronizáció JDOQL (~java) bytecode enhancement JDO vagy CMP EJB?
Prevalence (memória a DB) • Minden a memóriában • Időnként snapshotok • Serializable Command objektumok • RDBMS nyelven: „~redo log” • determinisztikus üzleti objektumok • replika rendszer - konzisztens snapshot • hibatűrés is
Prevalence (memória a DB) • tranzakciók pedig nincsenek • persze nem is kell:tetszőlegesen bonyolult Commandok • időzítés, timestamp, ... • külső óra: Commandokat küld • implementáció: pl. Prevayler (sourceforge.net)
XML:DB (xml adatbázis) „Ha nincs XML adat, nem kell XML adatbázis!” • Fogalmak: • Document • Document collection • Query Engine • Xpath (w3c) • Indexek
XML:DB (xml adatbázis) • Adatmódosítás • kiolvasás - módosítás - beszúrás • Xupdate • szerverre ruházza ezt a feladatot • XML:DB API (implementációtól független!) • XMLObjects (szerver funkc. bővítéshez)
XML:DB (xml adatbázis) • Példa XPath /db/my-collection/my-child-collection/my-document • URL formában (távoli szerver) xindice://myhost.domain.com:4080/db/my-collection/my-child-collection/my-document
ODMG • Nyelv-független • C++, Smalltalk, Java, ... • Objektum szinten közös perzisztencia • OQL lekérdezőnyelv (SQL92 alapú)
Konklúzió • Nincs egyértelmű győztes • és még rengeteg további megoldás létezik (Hibernate, Castor, Torque, ...) • Választás – jó architect feladata Továbblépés • szabványok • implementációk
általában http://java.sun.com/ http://www.theserverside.com/ http://w3c.org/ http://db.apache.org/ http://xml.apache.org/ konferencia: jaoo.dk jdo http://access1.sun.com/jdo/ További források
jdo vs. ejb http://www.onjava.com/lpt/a/3763 http://www.theserverside.com/home/thread.jsp?thread_id=771 prevalence http://www.advogato.org/article/398.html http://www-106.ibm.com/developerworks/web/library/wa-objprev/index.html További források
Kérdések ? ? ? ? ? ? ?
www.drotposta.hu/ stf2003/ istvan.molnar geza.simon @sun.hu Köszönjük a figyelmet!