Datalagringsmetodik och arkitektur i Java Projektdefinition Dokumenttitel Projektdefinition Dokumentansvarig Dokumentförfattare Björn Brenander Dokumentnamn Projektdefinition.doc Version 16 Ref. nr. Skapades 18 april 2001 Sparades 7 maj 2001 Box 576, SE-581 07 Linköping, phone +46 (0)13 37 37 00, fax +46 (0)13 37 37 90, www.idainfront.se
Innehåll 1 Inledning...1 1.1 Syftet med detta dokument...1 1.2 Målgrupp...1 1.3 Personer i projektet...1 1.4 Revisionshistoria...2 2 Projektbeskrivning...3 2.1 Bakgrund...3 2.2 Syfte...3 2.3 Problemanalys...3 2.3.1 Entitets-EJB och Container-managed persistence... 3 2.3.2 Entitets-EJB och Bean-managed persistence... 4 2.3.3 Skalbarhet... 4 2.3.4 Prestanda... 4 2.3.5 Transaktionssäkerhet... 4 2.3.6 Sökning... 4 2.3.7 Utvecklingstid... 4 2.4 Mål och begränsningar...4 2.5 Projektdisposition...5 2.5.1 Projektdefinition... 5 2.5.2 Informationsinsamling... 5 2.5.3 Utredning och teori... 5 2.5.4 Provimplementering... 5 2.5.5 Resultat och slutsatser... 5 2.5.6 Färdigställande... 6 2.5.7 Rapportskrivning... 6 3 Organisation...7 3.1 Projektorganisation...7 3.2 Resurser...7 3.3 Tidplan...7
1 Inledning Detta dokument är en beskrivning av examensarbetet Datalagringsmetodik och arkitektur i Java som utförs av Björn Brenander på Ida Infront AB (Ida) sommaren 2001. 1.1 Syftet med detta dokument Syftet med projektdefinitionen är att beskriva projektet samt planera och beskriva när och på vilket sätt arbetet kommer att bedrivas i projektet. 1.2 Målgrupp Målgruppen som detta dokument vänder sig till är personer som på ett eller annat sätt är inblandade i examensarbetet. Detta innefattar, förutom författaren själv, handledare, examinator och andra intressenter. 1.3 Personer i projektet Examensarbetare Handledare Examinator Björn Brenander 013-260753 (hem) 013-373517 (Ida) bjorn.brenander@idainfront.se Fredrik Samson, Ida 013-373749 fredrik.samson@idainfront.se Johan Söderqvist, Ida 013-373743 johan.soderqvist@idainfront.se Tomas Byström, Ida 013-373745 tomas.bystrom@idainfront.se Olof Johansson, IDA, Linköpings universitet 013-282390, 070-6577608 olojo@ida.liu.se Ida Infront Ab 1
1.4 Revisionshistoria Version Datum Anmärkning Författare Granskat av 0.1 2001-04-18 Preliminär projektdefinition skapad 0.2 2001-04-23 Ändringar föreslagna av handledare 0.3 2001-05-04 Reviderad och mer detaljerad tidplan BB BB BB Ida Infront Ab 2
2 Projektbeskrivning I detta kapitel presenteras bakgrunden till projektet och vilket syfte projektet har. En mer detaljerad redovisning av de underliggande frågeställningarna presenteras också, tillsammans med en projektdisposition och projektets begränsningar. 2.1 Bakgrund Ida utvecklar iipax, ett ramverk för flexibla, integrerade och utbyggbara system inom funktionsområdena dokumenthantering, ärendehantering, workflow och meddelandehantering. Senaste tillskottet i produkten är ett Java-ramverk om används för att bygga klienter och affärslogik. Idag sker all datalagring i relationsdatabaser via tjänster i BEA Tuxedo och Jolt. Dessa produkter är i vissa tillämpningar långt mer avancerade än vad som behövs, och de är ofta inte önskvärda ur vare sig kommersiellt eller tekniskt perspektiv. Ida vill nu undersöka hur iipax Java-ramverk kan utökas med arkitektur, riktlinjer och produktdelar för datalagring direkt från Java-miljön med bibehållna egenskaper såsom skalbarhet, prestanda, transaktionssäkerhet och flexibilitet. 2.2 Syfte Syftet är att kartlägga tekniker, standarder och arkitekturer inom området datalagring i Java och beskriva dem med lämpliga tillämpningsområden, för- och nackdelar och andra relevanta egenskaper. Genom provimplementation av ett par olika tekniker kan teoretiska slutsatser verifieras. En beskrivning av de för Idas behov mest lämpade alternativen samt praktiska erfarenheter av deras användande är av värde för vidareutvecklingen av iipax, och kan tjäna som underlag för migrering. 2.3 Problemanalys I EJB-arkitekturen (Enterprise JavaBeans) finns en särskild sorts bönor som används för att modellera och representera persistenta databasobjekt: entitetsbönor (entity EJB). För att koppla ihop dessa med databasen finns ett par olika metoder, vilka återfinns beskrivna nedan. För att slippa den overhead och de befarade prestandaproblem som hänger ihop med entitets-ejb kan man även ha vanliga Java-klasser som pratar med databasen genom t ex JDBC. Denna metod skall också tas med i utredningen. Tre huvudaspekter kommer skall undersökas: skalbarhet, prestanda och transaktionssäkerhet. Utvecklingstiden för Java-baserad datalagring är en annan intressant aspekt. 2.3.1 Entitets-EJB och Container-managed persistence Container-managed persistence innebär att entitetsbönorna själva inte behöver innehålla databasberoende kod, utan att ansvaret för lagring och uppdatering lagts på en EJB Ida Infront Ab 3
container. När mappningen mellan bönans attribut och databasen definierats kan den nödvändiga logiken genereras mer eller mindre automatiskt, och programmeraren kan lägga sin energi på bönans funktion istället. 2.3.2 Entitets-EJB och Bean-managed persistence I fallet Bean-managed persistence måste varje entitetsböna själv sköta kommunikationen med databasen, t ex genom JDBC. Detta ger större kontroll över hur objekt-relationmappningen går till, men kräver också att bönan vet precis hur databasen ser ut och fungerar. 2.3.3 Skalbarhet Hur skalar de olika teknikerna? Vad händer om en sökning ger riktigt många träffar? Hur fungerar de olika teknikerna med relativt små datamängder? Hur klarar systemet av hög parallellitet, d v s många samtidiga transaktioner? 2.3.4 Prestanda Prestanda hos de olika teknikerna skall jämföras, både i ytterlighetsfall och under mer typiska förutsättningar. Hänsyn bör tas inte bara till exekveringshastighet utan även till mängd förbrukade systemresurser. 2.3.5 Transaktionssäkerhet Finns stöd för globala transaktioner? 2.3.6 Sökning Hur går sökningar till i de olika teknikerna? Kan man söka på vad som helst, eller måste de sökbara attributen specificeras i förväg? 2.3.7 Utvecklingstid Hur komplicerat är det att utveckla för de olika alternativen? Måste man lära sig mycket? Hur enkelt eller svårt är det att gå över från dagens system till de Java-baserade? 2.4 Mål och begränsningar Följande skall ingå i projektet: Studerande av litteratur, dokumentation och diskussioner i ämnet. Teoretiska förutsägelser om några olika tekniker. Provimplementering och mätningar. Färdigställande av en slutrapport. Ida Infront Ab 4
Följande begränsningar kommer att göras (men kan komma att minskas i mån av tid): Endast relationsdatabaser kommer att användas. Objektdatabaser kommer alltså inte att tas upp. Säkerhetsaspekter (autentisering och auktorisering) kommer inte att behandlas. 2.5 Projektdisposition Projektet är uppdelat i några olika faser, vilka beskrivs nedan. 2.5.1 Projektdefinition Den första fasen har som syfte att definiera projektets bakgrund, syfte och problemställningar. Dessa sammanställs i ett projektdefinitionsdokument (detta!) där även projektets avgränsningar och en detaljerad tidsplanering finns med. 2.5.2 Informationsinsamling Själva projektet börjar med en omfattande informationsinsamling. Dokumentation och litteratur om såväl befintliga produkter som de specifikationer och arkitekturer som ska undersökas kommer att studeras. Några exempel: EJB, JDBC 2.0, Tuxedo och relevanta delar av iipax. 2.5.3 Utredning och teori I den här fasen skall de olika alternativen analyseras grundligt och deras egenskaper redovisas. Teoretiska förutsägelser skall göras om hur de fungerar under olika förutsättningar och ur olika aspekter. En specifikation för testning/mätning på provimplementationer skall skrivas. 2.5.4 Provimplementering För att verifiera de teoretiska resultatens riktighet skall intressanta provimplementationer göras. Dessa skall baseras på verkliga scenarion, gärna kopplade till någon av Idas kunders verksamheter. Testning och mätning skall sedan utföras på provimplementationerna. 2.5.5 Resultat och slutsatser När såväl teoretiska som praktiska resultat har tagits fram skall de analyseras och utvärderas. Denna fas skall resultera i en sammanställning av resultaten tillsammans med dragna slutsatser och rekommendationer för vidare arbete. Ida Infront Ab 5
2.5.6 Färdigställande Då själva arbetet är slutfört måste troligtvis en del jobb göras för att rapporten skall bli presentabel. Inför framläggningen måste en muntlig presentation förberedas, och av examinator, handledare och opponent föreslagna ändringar i rapporten göras. 2.5.7 Rapportskrivning Det konkreta resultatet av projektet är en slutrapport. Då skrivandet av denna rapport troligtvis är en av de mer tidskrävande aktiviteterna i projektet kommer det att genomföras i delar under varje projektfas. Detta bör även göra det lättare att skriva om de enskilda faserna, eftersom de då finns i klart minne. Preliminär innehållsförteckning för slutrapporten Sammanfattning Inledning - Syfte och bakgrund - Problembeskrivning och analys Bakgrundsteori Utredning Implementering Utvärdering Slutsatser och rekommendationer Ida Infront Ab 6
3 Organisation Det här kapitlet beskriver projektets organisation och innehåller en detaljerad tidsplan. 3.1 Projektorganisation Examensarbetet utförs av Björn Brenander som en del i civilingenjörsutbildningen Datateknik vid Linköpings universitet och motsvarar 20 poäng. Examinator är Olof Johansson på Institutionen för datavetenskap på Linköpings universitet. Handledare på Ida är Fredrik Samson, Johan Söderqvist och Tomas Byström. 3.2 Resurser Den utrustning (datorer och programvara) som behövs för att genomföra projektet tillhandahålls av Ida. Ida tillhandahåller även information i form av interna och externa dokument och bibliotek, samt kompetent personal att rådfråga. Ytterligare information kommer att sökas på Internet samt i böcker och tidskrifter. 3.3 Tidplan Här följer en tidplan för projektet. Notera att rapportskrivning ingår som en parallell del i varje fas. Faserna kan komma att överlappa varandra något. april maj juni juli augusti september ID Aktivitet Varaktighet Start 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 1 Definitionsfas 5 dagar on 01-04-11 2 Projektplanering 5 dagar on 01-04-11 3 Informationsinsamling 20 dagar fr 01-04-20 4 Informationsinsamling 20 dagar fr 01-04-20 5 Rapportskrivning (inledning, bakgrund) 8 dagar to 01-05-10 6 Utredning och teori 20 dagar ti 01-05-22 7 Utredning 17 dagar ti 01-05-22 8 Testspecifikation 3 dagar ti 01-06-19 9 Rapportskrivning (teori, modell) 8 dagar ti 01-06-12 10 Implementering 30 dagar fr 01-06-22 11 Design 8 dagar fr 01-06-22 12 Programmering 13 dagar on 01-07-18 13 Testning/mätning 9 dagar må 01-08-06 14 Resultat och slutsatser 10 dagar fr 01-08-17 15 Rapportskrivning (resultat och slutsatser) 10 dagar fr 01-08-17 16 Färdigställande 15 dagar fr 01-08-31 17 Avslutande rapportskrivning 8 dagar fr 01-08-31 18 Presentation/förberedelser 4 dagar on 01-09-12 19 Ändringar i rapporten 3 dagar ti 01-09-18 Ida Infront Ab 7