perzisztencia-megoldások java technológiával
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
Perzisztencia-megoldások Perzisztencia-megoldások Java TechnológiávalJava Technológiával
Molnár István, Simon GézaMolnár István, Simon Géza
A szerzőkA szerzők
• Java 0.9 óta (1995)• Java/J2EE tervezők• oktatók• Sun & Oracle
istvan.molnar@
geza.simon@
sun.hu
ÚtvonaltervÚtvonalterv
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ő
Perzisztencia?Perzisztencia?
• mi az?• mire való?
• elvi fajtái• gyakorlati módszerek• konkrét termékek
Impedance mismatchImpedance mismatch
:obj:obj
:obj:obj
:obj:obj
:obj:obj
?
FelülnézetFelü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 perzisztenciaAbsztrakt perzisztencia
Perzisztencia
Hosszú távú perzisztencia– ortogonális– transzparens
Technológiai irányokTechnoló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
JDBCJDBC
:obj:obj
:obj:obj
:obj:obj
:obj:obj
DAODAO
:obj:obj:obj:obj
:obj:obj
:obj:obj:DAO:DAO
JDOJDO
:obj:obj
:obj:obj
:obj:obj:obj:obj
:persistenceManager:persistenceManager
Entity EJBEntity EJB
application server
:obj:obj
:obj:obj
:obj:obj
A memória az adatbázisA memória az adatbázis
• Memória - olcsó• Memória - gyors
Megoldandók... biztonság, stabilitás, garaciák
:obj:obj:obj:obj
:obj:obj
:obj:obj
XML adatbázisXML 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ázisXML 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ésProgram 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ézetAlulnézet
Specifikációk, szabványok, majdnem szabványokTermékek
– API-k, library-k, csomagok– fejlesztést segítő eszközök– futtatókörnyezetek
JDOJDO
• 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
JDOJDO
PersistenceManager pm = ... //factoryTransaction t = ... t.begin(); pm.makePersistent(appObj1); t.commit(); pm.close();
JDOJDO
életciklus - állapotok– transient, ..., persistent new, persistent dirty, ...
persistent deleted, ... persistent nontransactional, ...
tranzakciók - callback szinkronizáció– jdoPostLoad(), jdoPreStore(), jdoPreDelete(), ...
JDOQL JDOQL (és nincs jdoDML!)(é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ókJDO implementációk
Kodo
Sun Reference Implementation
Tri-active JDO (sourceforge.net)
...
CMP EJBCMP EJB
Osztályok (domain object) elkészítése1 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 EJBCMP EJB
Perzisztens mezők kijelölése:deployment descriptor(ok) - XML
• Lekérdezés: EJBQLSELECT 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
JDO vagy CMP EJB?JDO vagy CMP EJB?
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
Prevalence (memória a DB)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)Prevalence (memória a DB)
Prevalence (memória a DB)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)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)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)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
ODMGODMG
• Nyelv-független– C++, Smalltalk, Java, ...– Objektum szinten közös perzisztencia
– OQL lekérdezőnyelv (SQL92 alapú)
Konklúzió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
További forrásokTovábbi források
általábanhttp://java.sun.com/
http://www.theserverside.com/
http://w3c.org/
http://db.apache.org/
http://xml.apache.org/
konferencia: jaoo.dk
jdohttp://access1.sun.com/jdo/
További forrásokTovábbi források
jdo vs. ejbhttp://www.onjava.com/lpt/a/3763
http://www.theserverside.com/home/thread.jsp?thread_id=771
prevalencehttp://www.advogato.org/article/398.html
http://www-106.ibm.com/developerworks/web/library/wa-objprev/index.html
KérdésekKérdések
??
??
??
??
??
??
??
Köszönjük a figyelmet!Köszönjük a figyelmet!
www.drotposta.hu/
stf2003/
istvan.molnar
geza.simon
@sun.hu