perzisztencia-megoldások java technológiával

38
Perzisztencia- Perzisztencia- megoldások Java megoldások Java Technológiával Technológiával Molnár István, Simon Géza Molnár István, Simon Géza

Upload: diella

Post on 14-Jan-2016

26 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Perzisztencia-megoldások Java Technológiával

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

Page 2: Perzisztencia-megoldások Java Technológiával

A szerzőkA szerzők

• Java 0.9 óta (1995)• Java/J2EE tervezők• oktatók• Sun & Oracle

istvan.molnar@

geza.simon@

sun.hu

Page 3: Perzisztencia-megoldások Java Technológiával

Ú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ő

Page 4: Perzisztencia-megoldások Java Technológiával

Perzisztencia?Perzisztencia?

• mi az?• mire való?

• elvi fajtái• gyakorlati módszerek• konkrét termékek

Page 5: Perzisztencia-megoldások Java Technológiával

Impedance mismatchImpedance mismatch

:obj:obj

:obj:obj

:obj:obj

:obj:obj

?

Page 6: Perzisztencia-megoldások Java Technológiával

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

Page 7: Perzisztencia-megoldások Java Technológiával

Absztrakt perzisztenciaAbsztrakt perzisztencia

Perzisztencia

Hosszú távú perzisztencia– ortogonális– transzparens

Page 8: Perzisztencia-megoldások Java Technológiával

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

Page 9: Perzisztencia-megoldások Java Technológiával

JDBCJDBC

:obj:obj

:obj:obj

:obj:obj

:obj:obj

Page 10: Perzisztencia-megoldások Java Technológiával

DAODAO

:obj:obj:obj:obj

:obj:obj

:obj:obj:DAO:DAO

Page 11: Perzisztencia-megoldások Java Technológiával

JDOJDO

:obj:obj

:obj:obj

:obj:obj:obj:obj

:persistenceManager:persistenceManager

Page 12: Perzisztencia-megoldások Java Technológiával

Entity EJBEntity EJB

application server

:obj:obj

:obj:obj

:obj:obj

Page 13: Perzisztencia-megoldások Java Technológiával

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

Page 14: Perzisztencia-megoldások Java Technológiával

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>

Page 15: Perzisztencia-megoldások Java Technológiával

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>

Page 16: Perzisztencia-megoldások Java Technológiával

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...)

Page 17: Perzisztencia-megoldások Java Technológiával

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

Page 18: Perzisztencia-megoldások Java Technológiával

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

Page 19: Perzisztencia-megoldások Java Technológiával

JDOJDO

PersistenceManager pm = ... //factoryTransaction t = ... t.begin(); pm.makePersistent(appObj1); t.commit(); pm.close();

Page 20: Perzisztencia-megoldások Java Technológiával

JDOJDO

életciklus - állapotok– transient, ..., persistent new, persistent dirty, ...

persistent deleted, ... persistent nontransactional, ...

tranzakciók - callback szinkronizáció– jdoPostLoad(), jdoPreStore(), jdoPreDelete(), ...

Page 21: Perzisztencia-megoldások Java Technológiával

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(...

Page 22: Perzisztencia-megoldások Java Technológiával

JDO implementációkJDO implementációk

Kodo

Sun Reference Implementation

Tri-active JDO (sourceforge.net)

...

Page 23: Perzisztencia-megoldások Java Technológiával

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

Page 24: Perzisztencia-megoldások Java Technológiával

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

Page 25: Perzisztencia-megoldások Java Technológiával

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

Page 26: Perzisztencia-megoldások Java Technológiával

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

Page 27: Perzisztencia-megoldások Java Technológiával

Prevalence (memória a DB)Prevalence (memória a DB)

Page 28: Perzisztencia-megoldások Java Technológiával

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)

Page 29: Perzisztencia-megoldások Java Technológiával

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

Page 30: Perzisztencia-megoldások Java Technológiával

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)

Page 31: Perzisztencia-megoldások Java Technológiával

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

Page 32: Perzisztencia-megoldások Java Technológiával

ODMGODMG

• Nyelv-független– C++, Smalltalk, Java, ...– Objektum szinten közös perzisztencia

– OQL lekérdezőnyelv (SQL92 alapú)

Page 33: Perzisztencia-megoldások Java Technológiával

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

Page 34: Perzisztencia-megoldások Java Technológiával

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/

Page 35: Perzisztencia-megoldások Java Technológiával

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

Page 36: Perzisztencia-megoldások Java Technológiával

KérdésekKérdések

??

??

??

??

??

??

??

Page 37: Perzisztencia-megoldások Java Technológiával

Köszönjük a figyelmet!Köszönjük a figyelmet!

www.drotposta.hu/

stf2003/

istvan.molnar

geza.simon

@sun.hu

Page 38: Perzisztencia-megoldások Java Technológiával