Object-Relational Mapping
|
|
|
- Victoria Lorentzen
- 10 år siden
- Visninger:
Transkript
1 Databaser for udviklere () Datamatiker TietgenSkolen Underviser: Allan Helboe
2 Problemformulering Denne opgave er et forsøg på at beskrive problemerne der opstår ved anvendelsen af en relationel database som persistenslag, for en objektorienteret applikation. Først og fremmest vil jeg undersøge hvorfor man egentlig anvender relationelle databaser frem for objektorienterede databaser, når de umiddelbart fremstår som et bedre alternativ. Jeg vil derefter undersøge hvordan man kan løse de problemer som objektorienteret data giver i forhold til en relationel database, og vil især gå i dybden med NHibernate som en færdig løsning på problemet. Under dette afsnit vil jeg undersøge hvad der egentlig ligger bag værktøjet, mht. dets historie samt de mønstre der anvendes. Til sidst vil jeg forsøge at anvende NHibernate i en simpel applikation, og hermed få et indblik i processen at arbejde med et ORM-værktøj. Indledning Langt de fleste enterprise applikationer har behov for en løsning til persistent lagring af data. Oftest er det også et krav for disse applikationer, at det samme lager kan anvendes af op til flere samtidige instanser af applikationen, hvilket kan føre til en række af problemer. Dette løses ofte ved at anvende en database til lagring af data, hvilket også medvirker til at der kommer kontrol over samtidigheden i systemet. Nu til dags anvendes der oftest relationelle databaser, men ved anvendelsen af en sådan database indføres dog endnu et stort problem for programmøren: Objektorienterede programmer og relationelle databaser er to ting, der i praksis kan være svære at kombinere. Jeg vil i denne rapport forsøge at finde ud af hvorfor man egentlig ønsker at anvende relationelle databaser, frem for de objektorienterede. Jeg vil derudover undersøge hvilke problemer det medfører at anvende en relationel database, samt hvordan man kan løse disse problemer. Objektorienteret data I den objektorienterede verden anvendes objekter flittigt til opbygningen af en arkitektur med indkapsling af de enkelte kodeelementer. Der er mange fordele ved at programmere objektorienteret, men de største fordele må være følgende: Overskueligheden af koden bliver øget væsentligt ved at ansvaret bliver delt ud. Man har mulighed for at reducere mængden af kode der skal vedligeholdes ved at anvende koncepter som f.eks. nedarvning mellem klasser. Det er muligt at lave en lag-deling af koden som gør refaktorering af eksisterende kode, og tilføjelse af ny funktionalitet sideløbende med det eksisterende, væsentlig lettere. Databaser for udviklere 2
3 Alt i alt har objektorienteret programmering givet meget i forhold til at gøre kodebasen mere overskuelig, håndterbar og udbygningsvenlig. Styrken i OOP er dog samtidig den største ulempe. Alle data lagres i variabler på objekter, hvilket er meget bekvemt når disse data skal bearbejdes i hukommelsen for en kørende applikation. Når denne applikation skal lukkes ned opstår der dog et problem. Vi ønsker ikke at smide objekterne ud og dermed miste de ændringer der er foretaget, men tværtimod ønsker vi at få persisteret disse objekter sådan at de kan indlæses næste gang applikationen starter. Dette er muligt ved f.eks. en serialisering af det samlede objekt-træ til en fil, men da dette umiddelbart kun fungerer for en enkeltstående applikation, er det ret få enterprisesystemer der kan bruge denne løsning. Vi ønsker i stedet at anvende en database. Databaser Databaser har igennem mange år været anvendt til håndtering af data, både indenfor forretnings- og forskersegmentet. Når vi ser på databaser og objektorienteret data, lyder det meget logisk at man ville anvende en objektorienteret database som persistenslag for en objektorienteret applikation. DBMS en på en OODB er bygget til at håndtere mange af de ting man kunne få brug for når man programmer objektorienteret. Det vil sige at man som udgangspunkt har mulighed for at lagre sine objekter i databasen, samt anvende OO-koncepter, som f.eks. nedarvning mellem klasser, direkte i databasen. En objektorienteret database er derfor umiddelbart, en rigtig god løsning som persistenslag for OO-applikationer. Objektorienterede databaser blev dog først opfundet noget senere end behovet for lagring af data opstod, og derfor har det primært kun været forskerverdenen som har taget dem i brug. Den objektorienterede database er meget velegnet til lagring af komplicerede objekter, da den navigerer og behandler disse objekter væsentlig hurtigere end man ville kunne i en relationel database. Dette er meget velegnet til netop forskerverdenen, men derimod nærmest irrelevant i forhold til enterprise-applikationer. Her anvendes databaser normalt til lagring af væsentlig simplere datastrukturer, hvorfor en relationel database er mere anvendelig. I modsætning til den konceptuelle datamodel man anvender i objektorienterede databaser, findes den relationsbaserede datamodel 1 som anvendes i relationelle databaser. Relationsbaseret data består af data med interne relationer mellem de forskellige dele af dataene. Databaserne har en del fordele ved bl.a. ved at være hurtige at søge i, man kan lave meget specifikke forespørgsler på kryds og tværs af tabeller og en korrekt normaliseret relationel database gør det endda muligt at opdatere dele af det samlede data uden at låse uberørte dele af databasen. Den relationelle databasemodel blev opfundet i 1969 og har siden hen dannet grundlag for langt de fleste enterprise-systemer. Det er uden tvivl indenfor forretningsverdenen at der er 1 Relationel Model (se kildeangivelse side 7) Databaser for udviklere 3
4 flest penge at tjene, hvilket også har ført til at der gennem tiden er blevet fokuseret meget på udviklingen indenfor dette segment. Optimeringerne af databaserne er sket både ydelsesmæssigt f.eks. i form af optimerede algoritmer og indeks-strukturer, samt sikkerhedsmæssigt hvor transaktionsstyringen bliver bedre og bedre til at sikre mod inkonsistens under samtidige operationer i databasen. Det at de relationelle databaser har et så kraftigt segment i ryggen, gør altså at de på mange punkter, er de objektorienterede databaser overlegne. Det er derfor også meget attraktivt at kunne anvende de relationelle databaser, selvom man faktisk anvender objektorienteret programmering. De relationelle databaser og den konceptuelle datamodel er dog to ting der ikke umiddelbart kan kombineres. Nedenfor ses et klassediagram over klasserne Skole og Elev. Der kan under en skole tilknyttes et vilkårligt antal elever. Dette ville i en konceptuel model oftest implementeres ved hjælp af en collection af Elev på Skole klassen. Ser vi på samme eksempel oprettet i en relationel database ville det fremstå som nedenstående. Første tabel vil indeholde alle skolerne i systemet. Derudover ville man skulle bruge en tabel til elevernes data. For at indikere tilknytningen til den enkelte skole, er det nødvendigt at lave en fremmednøgle til Skoler-tabellen. Denne oprettes som en ekstra attribut på Elever-tabellen og man vil derefter så kunne joine Skoler-tabellen på Elever-tabellen. Som ovenstående eksempel illustrerer, er det to vidt forskellige måder at arbejde på, selv når man taler om opbevaring af simple datastrukturer. Hvis man så begynder at tænke på koncepter som f.eks. lagring af nedarvede objekter, bliver problemet kun endnu større. Data mapping For at løse problemet med forskellen fra den relationelle model til den konceptuelle model, har man gennem tiden opfundet forskellige løsninger. Fælles for dem alle er, at det arbejde der udføres, er en mapning mellem databasens tabeller og de objekter man arbejder med i hukommelsen. Disse løsninger betegnes som data abstraktions lag, og placeres mellem domænelaget og selve databasen. Man kan betegne data abstraktions laget som en tolk der kan arbejde med objekter i applikationen, og med et vilkårligt sprog i den underliggende datakilde. Databaser for udviklere 4
5 Mapning går derfor ud på at man laver et led imellem værdierne som gemmes på objekterne i hukommelsen, ned i de tilsvarende tabeller i databasen. Selvom denne mapning lyder ret simpel, har den også potentiale til at give virkelig meget arbejde. Afhængigt af hvor kompliceret en domæne-model man arbejder med, kan vedligehold af ens mapninger til databasen hurtigt blive et utroligt omfattende og uoverskueligt stykke arbejde. Det kan desuden være svært at få anvendt begreber som transaktionsstyring og lazy-loading, hvis man selv programmerer ens SQL kald direkte i data abstraktions laget. Heldigvis er det et kendt problem, og der er derfor kommet adskillige værktøjer som har til formål at hjælpe med at få gjort mapningen mellem modellen og databasen, altså udarbejdelsen af data abstraktions laget, så smertefri som muligt for udvikleren. Disse værktøjer bliver betegnet som ORM-værktøjer (). Et af de mere kendte værktøjer er Hibernate-frameworket til Java, som blev udgivet i første udgave i Dette værktøj er et framework til at indbygge i applikationer, som gør det muligt at få mappet rækker i tabellen over til data der kan arbejdes med i applikationen. Hibernate frameworket blev hurtigt ret populært idet det er open source, og selvom der findes utallige alternativer må Hibernate anses som værende en af de mest kendte. Da Hibernate er baseret på Java, er det ikke muligt at anvende det i.net miljøet. Heldigvis er projektet dog blevet porteret til.net platformen under navnet NHibernate. Udviklingen er på nuværende tidspunkt drevet af et meget aktivt community, hvilket vil sige at der konstant bliver lavet forbedringer og rettelser, når der opdages fejl eller nye gode ideer. NHibernate anses derfor som værende et af de førende ORM værktøjer til.net platformen, ved siden af produkter som SubSonic, Persistor, Linq-2-SQL og Microsofts Entity Framework. Bag om NHibernate NHibernate blev udgivet i 2005, af Tom Barrett. Det er efterfølgende blevet kastet lidt frem og tilbage mellem en række forskellige udviklere som har været ansvarlige for projektet, for til sidst at ende som et community-drevet open-source projekt. Værktøjet består af en række.dll-filer man indlejrer i sit projekt og herefter har man et framework til data adgang man kan programmere op imod. NHibernate understøtter en række forskellige databaser, hvilket faktisk gør det muligt at have den samme kodebase til at understøtte forskellige databaser uden at skulle ændre i programkoden. Man programmerer imod NHibernate-laget og NHibernate klarer så adgangen til databasen via de konfigurationer man angiver. NHibernate er baseret på XML-filer til både konfiguration og mapning, hvilket for nye brugere kan virke en smule uoverskueligt at komme i gang med. Det er også et af de meget store kritikpunkter for NHibernate, at indlæringskurven kan virke rimelig stejl. Som alternativ til XML-filerne kan man hente Fluent NHibernate 2, der gør det muligt at konfigurere NHibernate 2 Fluent NHibernate (se kildeangivelse på side 8) Databaser for udviklere 5
6 direkte i stærkt typet kode, med en mere programmør-venlig syntaks. Denne tilgang er noget mere overskuelig og fleksibel, hvilket har gjort det til praksis at man ofte anvender Fluent i begyndelsesfasen hvor man har mange ændringer i arkitekturen, for så at skifte til den XMLbaserede konfiguration, når arkitekturen er fastlagt. Der findes en række forskellige mønstre der kan anvendes, når man taler om database mapning. De to mest brugte er Active Record 3 og Repository 4. Det er derfor også de to typiske løsninger der bruges med NHibernate. Repository kan anses som værende en database-controller som sørger for al kommunikation med databasen. Den adskiller i høj grad modellen fra selve datalaget, da man har en hel separat klasse der arbejder med objekter på den ene side, og persistenslaget (via NHibernate) på den modsatte side. Ønsker man at gemme data i databasen, sendes dette objekt til Repository et som så tager sig af resten. Det er også igennem Repository et at updates og deletes foretages. Ønsker man at hente data ud af databasen, kalder man Repository et med de kriterier ens query har. Repository et udfører så et query via NHibernate og sender objekter retur til kalderen. Active Record er en smule anderledes, da man i dette mønster gør de enkelte objekter ansvarlige for at opdatere sig selv i databasen. Det vil sige at foretages der en ændring, er det objektet selv der kender til databasen og hermed er ansvarlig for at ændringen persisteres. Når objekter indlæses, indeholder de også selv koden til at indlæse deres attributter direkte fra databasen. Forskellen mellem de to mønstre er primært hvor man placerer kendskabet til persistenslaget. Repository fremlægges af Martin Fowler som værende bedre til større og mere komplicerede systemer, hvor Active Record er fint til mindre systemer. Jeg finder det dog mere overskueligt at anvende Repository selv i mindre systemer, og med NHibernate som en hjælp til udarbejdelsen af koden, er det virkelig ikke meget mere arbejde man lægger i at få en væsentlig mere overskuelig løsning. Transaktioner er også væsentlig lettere at implementere i en Repository-baseret løsning frem for en Active Record løsning. Begge dele er muligt, men eftersom man under Repository, samler alle databaseoperationer i én klasse, er det noget nemmere at implementere transaktioner ved udførsel af flere handlinger, i dette mønster. Anvendelse af NHibernate Under sammenligningen mellem den konceptuelle og den relationelle model, anvendte jeg et eksempel med skoler og elever. Dette er et godt eksempel til at demonstrere brugen af NHibernate, da det har relationer mellem data, og samtidig kan laves uden at der behøver programmeres andet end skelettet af en model samt selve datalaget. Jeg har valgt at 3 Martin Fowler Patterns of Enterprise Application Architecture (s. 160) 4 Martin Fowler Patterns of Enterprise Application Architecture (s. 322) Databaser for udviklere 6
7 programmere en løsning 5 baseret på Repository-pattern, da denne virker som den mest anvendte løsning, samt den der formår at give den mest klare adskillelse af datalag og model. Til løsningen bruger jeg Fluent NHibernate tilføjelsen, da den gør det væsentligt lettere for nybegyndere at starte med NHibernate. De grundlæggende klasser der arbejdes ud fra er Skole og Elev, hvor methods bliver erklæret som virtual så de senere kan overrides. Når disse klasser er defineret, oprettes der mapninger som beskriver hvordan værdierne på klasserne, skal gemmes i databasen. Her defineres ved hjælp af lambda udtryk at der skal oprettes et ID som svarer til ID et på objektet, samt at der oprettes mapninger til de enkelte attributter. I mapningen for Skoleobjektet defineres desuden en 1-til-mange relation på Elever, hvilket hjælper NHibernate til at vurdere hvordan tabellerne skal opbygges. Jeg anvender i denne løsning Eager-loading da der ikke umiddelbart er et behov for lazy-loading. De klasser vi har nu, fortæller NHibernate hvordan objekterne skal gemmes. Det eneste der så umiddelbart mangler er selve konfigurationen til NHibernate som beskriver hvor vi ønsker at den skal arbejde. Dette gøres i repository klassens constructor, hvor vi både opretter en konfiguration samt et session factory. 5 Den færdige løsning kan hentes via link i kildeangivelsen (side 9) Databaser for udviklere 7
8 Da Repository et har til formål at være ansvarlig for adgangen til databasen, er det desuden nødvendigt at der er implementeret funktioner til at lave CRUD 6 -operationer. Disse er ret simple og anvender en session fra Session Factory et til at oprette en transaktion hvori der så bliver udført de nødvendige operationer. Idet der anvendes using sætninger, lukkes både transaktionen og sessionen ned igen. Vælger man ikke at bruge using, er det vigtigt at huske at lukke forbindelserne igen, da forbindelser til serveren er dyre og bør lukkes ved endt brug. Vi har nu defineret selve data adgangen, og der er derfor kun tilbage at anvende repository et. Jeg har lavet en simpel test hvori jeg opretter en række objekter og derefter anvender instanser af repository-klassen til at gemme disse objekter i databasen. En instans af repository-klassen er ansvarlig for at gemme en bestemt slags objekt i databasen, og det er derfor nødvendigt at oprette et repository både for Skole og Elev. Repository-klassen er dog generisk og kan derfor anvendes med vilkårlige klasser som arbejdsobjekter, uden at der skal ændres i den. Til sidst oprettes der nye objekter i modellen, som oprettes via et query gennem repositoryklassen og man kan dermed konstatere at NHibernate har hentet objekterne fra databasen. Hvis man tager et kig på databasen via Management Studio ser man også at NHibernate automatisk har oprettet tabeller meget lig de tidligere nævnte i rapporten, med de korrekte data. 6 Create-Read-Update-Delete basis funktioner for et datalag. Databaser for udviklere 8
9 Konklusion Jeg har gennem udarbejdelsen af rapporten fået øget mit kendskab til de problemer der kan opstå under anvendelse af objektorienteret programmering og relationelle databaser. Jeg har desuden fået læst om de tilgængelige værktøjer til afhjælpning af denne problematik og konkluderet at NHibernate angiveligt virker som det mest anvendte ORM-værktøj indenfor.net verdenen. Dette værktøj valgte jeg at afprøve for at se hvordan det virkede samt om det var til at finde ud af, eller om der var hold i de kritikpunkter der har været nævnt mht. sværhedsgraden. Efter at have arbejdet med værktøjet kan jeg konkludere at det ved hjælp af Fluent NHibernate faktisk er rimelig overskueligt at komme i gang med at bruge NHibernate. Det virker som det skal, og løser rigtig meget af det manuelle arbejde der ville være i at skrive en database-mapper selv. Desuden er det rigtigt nemt at omkonfigurere Fluent NHibernate hvis der opstår en ændring i opbygningen af databasen, hvilket ville være et større stykke arbejde med en manuel datamapper. Min konklusion er at NHibernate bestemt er besværet værd da det løser utrolig mange af de problemer der måtte være. Det kan være svært at komme i gang med, men når man først har fået fat i det, virker det som et rigtig godt og gennemført værktøj. Databaser for udviklere 9
10 Kildeangivelser Anvendelse af NHibernate (NHibernateEksempel.zip) Patterns of Enterprise Application Architecture Martin Fowler (Addison Wesley) ISBN-13: Relationel Model Wikipedia NHibernate Forge Fluent NHibernate NHibernate Wikipedia ADO.NET Entity Framework - Wikipedia Databaser for udviklere 10
Database for udviklere. Jan Lund Madsen PBS10107
Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated
Hvorfor skal vi bruge objekt orienteret databaser?
OODBMS Vs. RDBMS 1 Indholdsfortegnelse Hvorfor skal vi bruge objekt orienteret databaser?... 3 OODBMS i erhvervslivet... 4 Bagsiden af medaljen... 5 OODBMS i praksis... 6 Konklusion... 8 2 Hvorfor skal
Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125
Tietgenskolen - Nørrehus Data warehouse Database for udviklere Thor Harloff Lynggaard DM08125 Juni 2010 Indhold Beskrivelse... 3 Data warehouse... 3 Generelt... 3 Sammenligning... 3 Gode sider ved DW...
Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002
Databaser, efterår 2002 Databasesystemer Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails
Casper Fabricius http://casperfabricius.com ActiveRecord O/RM i Ruby on Rails Casper Fabricius Freelance webudvikler - casperfabricius.com 9 års erfaring med webudvikling 6 år med ASP/ASP.NET/C# 3 år med
Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net)
Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net) Kim Harding Christensen EOS A/S Margrethepladsen 3 8000 Århus TLF: 8732 8787
Data Warehouse Knowledge is Power - Sir Francis Bacon -
Data Warehouse 4. sem. datamatiker uddannelse Tietgen Skolen Odense Skrevet af Troels Markvard Andersen (DM08228) Knowledge is Power - Sir Francis Bacon - Troels Markvard Andersen Side 1 af 8 Forord /
Studieordning del 3-2014
Studieordning del 3-2014 Valgfag Datamatiker AP Graduate in Computer Science Version 1.1 Revideret august 2014 Side 0 af 6 del 3 Valgfag 1. Valgfrie uddannelseselementer...2 2. Valgfaget Android...2 3.
Procesbeskrivelse - Webprogrammering
Procesbeskrivelse - Webprogrammering Indholdsfortegnelse Forudsætninger... 1 Konceptet... 2 Hjemmesiden... 2 Server-side... 3 Filstrukturen... 3 Databasehåndtering og serverforbindelse... 4 Client-side...
Datatekniker med programmering som speciale
Datatekniker med programmering som speciale H1 H1 varer ti uger bestående af ti uddannelsesspecifikke fag. Indhold På H1 beskæftiger du dig med at lære at programmere helt fra bunden. Forløbet er designet
Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5
Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:
EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:
Introduktion til EA3 Mit navn er Marc de Oliveira. Jeg er systemanalytiker og datalog fra Københavns Universitet og denne artikel hører til min artikelserie, Forsimpling (som også er et podcast), hvor
Hassansalem.dk/delpin User: admin Pass: admin BACKEND
Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin
Database "opbygning"
Database "opbygning" Dette områder falder mest under en DBA's ansvarsområde. Det kan sagtens tænkes at en database udvikler i nogle situationer vil blive nød til at oprette produktions og test) databaser,
Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:
Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra
Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling
Java og JEE 1 2 Udfordringer og problemstillinger En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling 3 Generelt om Java og JEE 4 Generelt, I Man undervurderer hvor mange
Version Dato Beskrivelse 1.0.0 26/11/2012 Initial version 1.2.0 05/03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.
MOX og APOS2 Forord Dette dokument er en del af APOS version 2 manualerne. APOS version 2 (APOS2 herefter) er et organisation, klassifikation og personale system baseret på Sag & Dokument standarderne.
Dygtig.NET / C# udvikler med stor erfaring fra både offentlige organisationer og private virksomheder.
.NET UDVIKLER NATIONALITET: DANSK PROFIL Dygtig.NET / C# udvikler med stor erfaring fra både offentlige organisationer og private virksomheder. Stor erfaring omkring databasedesign, datahåndtering og MS
Datatekniker med programmering som speciale
Datatekniker med programmering som speciale H2 H1 varer ti uger bestående af ti uddannelsesspecifikke fag. Indhold På H2 er der fokus på at integrere Objektorienteret Programmering i dine programmer. Fagene
Sammenligning af Objekt-orienteret databaser og Relationelle databaser.
Sammenligning af Objekt-orienteret databaser og Relationelle databaser. Af Louis Fleron Databaser OODBMS og RDBMS PBS10101 Louis Fleron Side 2 Af 11 Indholdsfortegnelse 1. Forord....3 2. Hvad er et OODBMS?...3
Der er forsøgt skrevet en lille notits hver gang der er lavet noget, dog kan der være nogle ting som ikke er blevet kommenteret.
Indhold 1 Logbog 2 1.1 Log den 01-02-10.................................. 2 1.2 Log den 02-02-10.................................. 2 1.3 Log den 08-02-10.................................. 2 1.4 Log den
Indholdsfortegnelse. Systembeskrivelse kapitel 8 Administrationsdatabase
Indholdsfortegnelse 5. Administrationsdatabase... 2 5.1 Metadata... 2 5.2 Administrationsdata... 3 5.2.1 Indstillingsmuligheder... 3 5.2.2 Webside... 4 5.2.3 Klikafgift (Udgået)... 4 5.2.4 Modtageboks...
Programmering 19/03-2012 ROSKILDE TEKNISKE GYMNASIUM. Projektbeskrivelse. Programmering. Rasmus Kibsgaard Riehn-Kristensen
ROSKILDE TEKNISKE GYMNASIUM Projektbeskrivelse Programmering Rasmus Kibsgaard Riehn-Kristensen 19-03-2012 Indholdsfortegnelse 1. Indledning... 3 2. Problemobservation.... 4 2.1 Egen erfaring... 4 3. Problemformulering...
Arkitektur for begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle
PHP kode til hjemmeside menu.
PHP kode til hjemmeside menu. Home Hovedmenu 1 Hovedmenu 2 Hovedmenu 3 Hovedmenu 4 Undermenu 1 Breadcrumb Her vises indholdet af den valgte side Undermenu 2 Undermenu 3 Undermenu 4 Evt. en mulighed for
Udvikling af DOTNET applikationer til MicroStation i C#
Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt
DATABASE - MIN MUSIKSAMLING
DATABASE - MIN MUSIKSAMLING I dette forløb skulle vi lære om databaser, som bruger sproget SQL. SQL står for Structured Query Language. Det bruges til at vise og manipulere data, gemt i en database. I
Videregående Programmering for Diplom-E Noter
Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså
Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6
Side 1 af 6 Indholdsfortegnelse INDHOLDSFORTEGNELSE 1 INTRO 3 STARTEN AF SPECIALISERINGEN 3 ANKOMST TIL SKOTLAND 4 DATABASER 5 NETVÆRK 5 INTERAKTION 5 AFSLUTNING AF SPECIALISERINGEN 5 KONKLUSION 6 Side
Skriftlig opgave. Designtanker i database-nære systemer
Skriftlig opgave til eksamen for faget»databaser«designtanker i database-nære systemer Martin Ancher Holm Juni 2010 1 Intro Denne skriftlige opgave indeholder kort de daglige tanker jeg har omkring design
2. Systemarkitektur... 2
Indholdsfortegnelse 2. Systemarkitektur... 2 2.1 Præsentationsserverarkitektur... 3 2.2 Applikationsserverarkitektur... 7 Version 7.0 Side 1 af 7 5. Systemarkitektur Arkitekturen for Nyt BBR bygger på
Software Projekt NoSQL vs RMDB
Software Projekt NoSQL vs RMDB Skrevet af Carsten Sørensen, Hans Jørgen Frandsen, Peter Haislund Department of Computer Science, University of Aarhus Aabogade 34, 8200 Arhus N, Denmark 201200089, 19960442,
Det Nye Testamente lyd-app. v. Stefan Lykkehøj Lund
Det Nye Testamente lyd-app v. Stefan Lykkehøj Lund Indledning For nogle år siden, fik jeg Det Nye Testamente som lydbog på USB. I starten lyttede jeg en del med tiden blev det dog til mindre og mindre.
Curriculum Vitae. Type År Sidst Niveau Type År Sidst Niveau
Curriculum Vitae Personoplysninger Navn: Søren Hvidkjær Andersen Adresse: Solbærmarken 5 By: 8641 Sorring Mobil: +45 24 82 98 87 E-mail: [email protected] Født: 16. Juli 1971 Civilstand: Introduktion Gift
STS Designdokument. STS Designdokument
STS Designdokument i STS Designdokument STS Designdokument ii REVISION HISTORY NUMBER DATE DESCRIPTION NAME 0.3 2013-01 N STS Designdokument iii Indhold 1 Introduktion 1 2 Arkitekturoverblik 1 2.1 Eksterne
Web CMS kontra Collaboration
Web CMS kontra Collaboration Sammenligning mellem Sitecore og Sharepoint Lars Fløe Nielsen, Evangelism [email protected] Page 1 Sitecore har dyb integration til Microsoft Sitecore har integration til mange
har jeg hentet nedenstående anmeldelse af et godt program til
Software Fra design af hjemmesider: har jeg hentet nedenstående anmeldelse af et godt program til Wordpress er intet mindre end et genialt program til hjemmesider. For det første er det gratis, og for
Notat ang. visning af dagsordener og referater på hjemmesiden ved skift til SBSYS esdh system.
Notat ang. visning af dagsordener og referater på hjemmesiden ved skift til SBSYS esdh system. I dette notat gøres rede for Hvordan visning af dagsordener og referater teknisk set kører i dag, Valg af
Hvad er Objekter - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som
Undervisningsbeskrivelse
Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Institution Uddannelse Fag og niveau Lærer(e) Hold Termin hvori undervisningen afsluttes: maj-juni 2014 HTX
Database optimering - Indeks
Database optimering - Indeks Alle kender til dette irritations moment, hvor programmet man sidder og arbejder med, bare ikke er hurtigt nok. Selvom det kun drejer sig om få sekunder man sidder og venter,
Opret ODBC datakilde Vejledning
Vejledning V. 1 APRIL 2011 FOR KUNDESERVICE Indholdsfortegnelse 1 Indledning... 3 1.1 Formål... 3 1.2 Målgruppe... 3 1.3 Krav... 3 2 Opret ODBC Datakilde (Open Database Connectivity)... 3 2.1 Forbindelse
Abstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Internet Information Services (IIS)
Internet Information Services (IIS) Casper Simonsen & Yulia Sadovskaya H1we080113 06-11-2013 Indholdsfortegnelse Problemformulering... 2 Hvorfor:... 2 Hvad:... 2 Hvordan:... 2 Problembehandling... 3 Introduktion...
PHP Quick Teknisk Ordbog
PHP Quick Teknisk Ordbog Af Daniel Pedersen PHP Quick Teknisk Ordbog 1 Indhold De mest brugte tekniske udtryk benyttet inden for web udvikling. Du vil kunne slå de enkelte ord op og læse om hvad de betyder,
Optimering af fraværsregistrering
Journal Optimering af fraværsregistrering Eksamensprojekt i Programmering C, klasse 3.4, 2011 AFLEVERET 09-05-2014 Indhold Abstract... Fejl! Bogmærke er ikke defineret. Problemformulering... 2 Produktet...
SIMS integration med Microsoft Active Directory, er implementeret, via en mellemdatabase.
Active Directory SIMS Plugin SIMS integration med Microsoft Active Directory, er implementeret, via en mellemdatabase. Løsningen består af en Windows Service som henter data fra AD og lagrer det i en mellemdatabase,
EasyIQ Opdatering 5.2.3 -> 5.4.0
EasyIQ Opdatering 5.2.3 -> 5.4.0 Kunde: Forfatter: Thomas W. Yde Systemtech A/S Side: 1 af 17 1 Indholdsfortegnelse 2 GENERELT OMKRING FORUDSÆTNINGEN OG OPDATERINGS FORLØBET... 3 2.1 FORUDSÆTNINGER...
SYSTEMDOKUMENTATION AF POC
DIGITALISERINGSSTYRELSEN POC PÅ ORKESTRERINGSKOMPONENTEN SYSTEMDOKUMENTATION AF POC Version: 1.1 Status: Endelig Godkender: Forfatter: Copyright 2019 Netcompany. All rights reserved Dokumenthistorik Version
APEX i Praksis Martin B. Nielsen. Navn. MBNDATA Emne
APEX i Praksis Martin B. Nielsen Navn MBNDATA Emne Foredragsholderen Oracle/APEX Arkitekt/udvikler/DBA Siden Oracle v.5 (1988) APEX Siden 2007, men før (Database provider, HTMLDB) MBNDATA siden 1996 MBNDATA
Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:
Side 1 af 5 Ide med Diff. Min ide med differenertierings modulet er at lave et program som kan vise 3d objekter, og få lavede en konverter som kan konventer 3ds filer over til noget som flash kan bruge.
EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø
EG Data Inform Byggebasen WCF og webservices Jens Karsø 10 Indholdsfortegnelse Byggebasen Services indledning... 2 Målsætning... 2 Valg af teknologier... 3 Kommunikationsmodel for byggebasen... 3 Services.byggebasen.dk...
SWC eksamens-spørgsmål. Oversigt
SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition
ADIS, WS og Meta Service
ADIS, WS og Meta Service Om ADIS, Web Services, Værktøjer og Meta Service. Michael Jacobsen Technology Network Management Agenda ADIS og dens udvidelse ISOagriNET Web Service med eller uden fuldt objektmodel
Identifikation af planer der ikke findes i PlansystemDK vha. datasættet... 9
Vejledning i brug af Tingbogsudtrækket Version 1.0 af 1. juli 2009 Indhold Indledning... 1 Planer i Tingbogen... 2 Planer i PlansystemDK... 3 Sammenhæng mellem Tingbogen og PlansystemDK... 3 Datastruktur...
Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau
Roskilde Tekniske Gymnasium Eksamensprojekt Programmering C niveau Andreas Sode 09-05-2014 Indhold Eksamensprojekt Programmering C niveau... 2 Forord... 2 Indledning... 2 Problemformulering... 2 Krav til
Opsætning af udviklerversion af Microsofts open source XDS.b fra Codeplex Projekt: Net4Care Version: V0.1, 2012-06-12
XDS Konfigurationsvejledning Opsætning af udviklerversion af Microsofts open source XDS.b fra Codeplex Projekt: Net4Care Version: V0.1, 2012-06-12 Indholdsfortegnelse Indledning... 2 Miljø... 2 Opsætning
Microsoft Pinpoint Guide
Microsoft Pinpoint Guide Indhold: 01 Kom på Pinpoint Opret en ny profil Rediger din profil 02 Opret en annonce 03 Brug dit dashboard 04 Optimer din Pinpoint profil Kundevurderinger 05 Søgning på Pinpoint
Datatekniker med programmering som speciale H5
Datatekniker med programmering som speciale H5 H5 består af et selvstændigt projekt som du definerer. Styringen af projektet er i centrum her, og ikke selve softwaren. H5 varer ti uger bestående af ni
Gem dine dokumenter i BON s Content Management System (CMS)
24. august 2007 Gem dine dokumenter i BON s Content Management System (CMS) INDHOLDSFORTEGNELSE 1. Indledning... 2 2. Se indholdet i dit Content Management System... 3 3. Tilgå dokumenterne i My Content
Installation og Drift. Aplanner for Windows Systemer Version 8.15
Installation og Drift Aplanner for Windows Systemer Version 8.15 Aplanner for Windows løsninger Tekniske forudsætninger Krav vedr. SQL Server SQL Server: SQL Server 2008 Express, SQL Server 2008 R2 eller
Af: Safa Sarac Klasse 3.4 Skole: Roskilde Tekniske Gymnasium, HTX Vejleder(e): Karl B Dato: 26. marts 2012
Projektbeskrivelse til eksamen i informationsteknologi B og Programmering C - Projektnavn: Privat mailer Af: Safa Sarac Klasse 3.4 Skole: Roskilde Tekniske Gymnasium, HTX Vejleder(e): Karl B Dato: 26.
Bypassing the. Brian Marick
Bypassing the GUI Brian Marick Problemer med GUI GUI er designet for mennesker, ikke automatisering Automatiseret test af GUI kræver specialiseret værktøjer Har tildens til at bryde ned når der sker ændringer
Erfaringer med CPR-replikering
Erfaringer med CPR-replikering Dette dokument beskriver en række overvejelser vi har gjort os i forbindelse med at vi har udviklet en Proof of Concept (PoC) af en CPR-replikeringstjeneste for KOMBIT. CPRs
Indholdsfortegnelse for kapitel 1
Indholdsfortegnelse for kapitel 1 Forord.................................................................... 2 Kapitel 1.................................................................. 3 Formål............................................................
Jan Hansen, AMP CMDB Specialist
Jan Hansen, AMP CMDB Specialist [email protected] Hvad er en CMDB? Et register over enheder (ITIL sk: Configuration Items eller CIs) CIs indeholder relevante oplysninger: attributter Sammenhænge eller
Flerbruger miljø, opdel database
Denne guide er oprindeligt udgivet på Eksperten.dk Flerbruger miljø, opdel database Denne artikel henvender sig primært til begyndere og let øvede brugere af Access der ønsker at vide noget om flerbruger
Softwareløsninger til dit netværk
www.draware.dk Softwareløsninger til dit netværk Overvågning Side 4 Analyse Side 11 Sikkerhed Side 14 Administration Side 21 Asset management Side 27 Dokumentation Side 30 Kundecitater Side 35 Bedre overblik
Installation og Drift. Aplanner for Windows Systemer Version 8.15.12
Installation og Drift Aplanner for Windows Systemer Version 8.15.12 Aplanner for Windows løsninger Anbefalet driftsopsætning Cloud løsning med database hos PlanAHead Alle brugere, der administrer vagtplaner
Overvågningskamera. ~Af Svend, Valdemar og Frederik~
Lavet af Svend, Valdemar og Frederik 2.3 HTX - Roskilde Overvågningskamera ~Af Svend, Valdemar og Frederik~ I dette forløb har vi arbejdet med overvågningskameraer. Det handlede om at lære, hvordan et
Valgfrit tema. Kommunikation/IT 13-04- 2 0 1 2. Jannik Nordahl-Pedersen. HTX - Roskilde. Klasse 3.5
rt Valgfrit tema Kommunikation/IT Jannik Nordahl-Pedersen HTX - Roskilde Klasse 3.5 13-04- 2 0 1 2 1 Indholdsfortegnelse Indholdsfortegnelse... 2 Indledning... 3 Problemformulering... 3 Valg af løsning...
KIH Database. Systemdokumentation for KIH Databasen. 1. maj 2013. Side 1 af 13
KIH Database Systemdokumentation for KIH Databasen 1. maj 2013 Side 1 af 13 Indholdsfortegnelse Indholdsfortegnelse... 2 Indledning... 3 Systemoverblik... 3 KIH Database applikationsserver... 5 Forudsætninger
SIMS Active Directory Service 2.5 Quick Guide
SIMS Active Directory Service 2.5 Quick Guide Indhold Beskrivelse... 3 Adgangsniveauer gennem AD grupper... 3 Områdegrupper gennem AD grupper... 3 Adgangsniveauer gennem OU... 3 Gyldighed... 3 Funktioner...
