Database Flashcards

1
Q

Hvad står TSQL for?

A

Transact SQL

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hvad er TSQL?

A

Det er en procedural udvidelse til SQL hvor den giver mulighed for delvis normal programmering.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hvad muliggør TSQL?

A

Den muliggøre funktionerne: Variable, IF, While, Iterator, Exceptions, (case) osv.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Er datatyperne forskellige i TSQL og SQL?

A

NEJ!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hvad muliggøre TSQL ikke?

A
  1. GUI
  2. Collections
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Hvad er et BATCH?

A

Det er når en eller flere queries kører i et hug

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Hvilke fejl kan en BATCH have og hvor vil det betyde for udførlsen?

A
  1. Ved compile fejl
    • Ingen af de queries som skulle
      køres udføres da compileren
      finder fejl i syntaxen.
  2. Ved runtime fejl
    • Alle quries som kan gennemføres
      lykkedes men de andre som ikke
      kan kører giver en fejl.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Hvad er en stored procedure?

A

Er en querie som gemmes og kan køres igen og igen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hvordan er erklæring af en stored procedure?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hvad er globale variable?

A

Det er indbyggede variable som man kan bruge men som man ikke selv kan erklære og starter med @@

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hvad er almindelige variable?

A

Det er variable som starter med @ og er nogle som du selv kan erklære. Kan kun bruges indenfor det Batch hvor de er erklæret.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hvordan gemte man data fra IT-systemer før indførelsen af databasesystemer (DBMS)? Hvad var det største problem med løsningen?

A

Programmer gemte data direkte på en fil på harddisken.
Problem: Der er en masse funktionalitet som de fleste IT-systemer har brug for. I ovenstående arkitektur er det nødvendigt at programmere denne funktionalitet ind I hvert eneste IT-system.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hvad var målet med indførelse af DBMS?

A

For at gøre det muligt for alle IT-systemer at tilgå generel funktionalitet som: ○ Autentifikation
○ Samtidighedskontrol
○ Alt eller intet princippet
○ Back-up og restore
○ Specificere regler om dataintegritet
○ Effektiv fremsøgning af data der undgår at gennemløbe hele filer (indeksering).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hvordan adskiller arkitekturen for den relationelle database sig med arkitekturen på billedet?

A
  1. Forespørgselssproget er SQL
  2. DBMS’en er en relationel DBMS
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Er fremmednøgler i den relationelle database pointere til anden data i en anden tabel?

A

NEJ! Alle attributter indeholder data - der er dermed ingen pointere. Referencer håndteres med fremmednøgler der selv er attributter og IKKE pointers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hvilke forskellige database systemer er de mest populære for tiden?

A

Relationelle databaser som MySQL, Oracle og MSSQL er de suverænt mest populære. Næst efter kommer NoSQL databaserne som typisk er dokument (MongoDB) eller graf baserede.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hvad er det som udgangspunkt der begrænser performance i DBMS’en?

A

Harddisken (HDD) er den begrænsende faktor for performance - er meget langsom sammenlignet med de øvrige komponenter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Hvad er en page på harddisken? Hvor meget fylder en page? Hvad indeholder den?

A

En page er det der skrives til / hentes fra harddisken. En page har en størrelse på 8K og indeholder så mange database records som den kan.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Hvordan er den traditionelle harddisk opbygget?

A

Består af et antal skiver der roterer omkring deres centrum
Har en læsearm der kan flyttes mellem centrum og skivens rand. Læsearmen læser den data der er lige under armen. Læsearmen overfører pagens data til RAM.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

I hvilke tilfælde anvender man en SSD fremfor en traditionel harddisk (HDD) i et databasesystem?

A

SSD diske anvendes som cache mellem den traditionelle harddisk og RAM I lidt større systemer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Hvordan læser harddisken en page? Hvilke dele i processen er de mest tidskrævende?

A
  1. Diskarmen flyttes til den rigtige afstand fra centrum
  2. Man afventer diskens rotation, så læsehovedet på læsearmen står lige over pagen
  3. Pagens indhold læses og indhold overføres til RAM

De første to elementer er de mest tidskrævende I processen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Hvad bruger man en buffer til i DBMS’en? Hvorfor bruger man en buffer?

A

Når man har læst en page, er der en rimelig sandsynlighed for at den pågældende page skal anvendes igen inden for kort tid

Denne observation udnyttes til at forbedre performance ved at indføre en buffer. Det betyder at når en page er hentet fra harddisken gemmes den I RAM I et stykke tid efterfølgende.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Kan DBMS bufferen påvirkes af programmøren?

A

Nej, den er indbygget i DBMS’en og er ikke umiddelbart til at påvirke.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Hvad bruger man pre-fetching til i DBMS’en? Hvorfor bruger man pre-fetching?

A

Når man har læst en page, er der en rimelig sandsynlighed for, at efterfølgende pages skal anvendes inden for kort tid

Denne observation udnyttes til at forbedre performance ved at indføre pre-fetching. Det betyder at når en page læses fra disken bliver de efterfølgende pages læst med op.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Kan DBMS’ens pre-fetching påvirkes af programmøren?

A

Nej, den er indbygget i DBMS’en og er ikke umiddelbart til at påvirke.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Hvilke to mulige taktikker har DBMS’en når der skal gemmes noget data på harddisken?

A
  1. Placer det et tilfældigt sted, hvor der er plads. Det gør det let at gemme, men sværere at finde papiret igen. Vælges denne taktik siger vi at tabellen er heap-organiseret
  2. Placer papiret efter et system/en ordning. Det gør det lidt tungere at gemme, men lettere at finde. Vælges denne taktik siger vi at tabellen er indekseret
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Hvornår er en tabel heap-organiseret?

A

Når records ikke gemmes efter et system, men blot hvor der er plads.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Hvad er grundprincipperne i indeksering af en tabel i databasen?

A

Når DBMS’en laver indeksering gøres det ud fra værdien af en eller flere attributter I en record. Typisk vælges kun en attribut, men det er muligt at kombinere flere.

Man siger at der er et clustered indeks på den/de attributter der bestemmer placeringen.

Det er udvikleren selv der afgør om der skal være clustered indeks på en tabel, og I det tilfælde også hvilken attribut det skal være på.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Hvor mange clustered indeks kan man have per tabel?

A

Kun én.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Hvor mange nonclustered indeks kan man have per tabel?

A

Ubegrænset antal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Hvilke to teknikker kan bruges til indeksering? Hvilken er mest brugt?

A
  1. Hashing
  2. Søgetræer (mest brugt)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Hvordan foregår clustered indeksering med hashing?

A

Med denne teknik køres en hashfunktion på den/de valgte attribut/attributter. Hashfunktionen returnere et tal der er addressen på en page hvori recorden skal gemmes.

I det tilfælde hvor en page er fyldt, bruges rehashing. Her sættes den fyldte page til at pege på en anden page, hvori recorden så gemmes. På den måde får man kædede lister af pages.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Hvordan foregår clustered indeksering med et søgetræ?

A

I de indre knuder i søgetræet (altså de knuder der har børn) findes kun de attributter der er valgt til at lave indeks på, samt pointers til andre pages.
I bladene står record’ene.
DBMS’en finder på baggrund af det clustered indeks frem til det blad der indeholder den eftersøgte record.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Hvordan foregår nonclustered indeksering med et søgetræ?

A

Nonclustered træ-baseret indeks er generelt opbygget på samme måde som det clustered træ-baseret indeks:
○ Alle knuder er pages
○ De indre knuder er ens: Her findes kun de attributter der er valgt til at lave indeks på, samt pointers til andre pages.
○ Bladene er forskellige: I nonclustered indeks findes den valgte attribut til at lave indeks på, samt en liste af pagenumre hvor records med pågældende værdi kan findes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Hvorfor kan det give mening at bruge nonclustered index fremfor clustered index?

A

Fordi der kun kan være ét clustered indeks pr tabel, typisk på én attribut, betyder det dermed også at tabellen er uordnet for de øvrige attributter. Ønsker man stadig at søge effektivt på de øvrige attributter og undgå “table scan” kan man benytte nonclustered indeks.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Hvad er et “table scan”?

A

Hvis DBMS’en møder ovenstående query og tabellen ikke er indekseret (altså dermed heap-organiseret), har den kun en mulighed; at gennemløbe hele tabellen for at finde et match. Dette kaldes et “table scan” og er en meget dyr operation. Er der derimod et indeks vil DBMS’en bruge dette automatisk.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Hvad er buffer management?

A

Det er et komponent som er i alle DBMS’er og sørger for at allokere pages i main memory

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

Hvad er de tre Problemstillinger i buffer management?

A
  1. Hvor meget skal pre-fetches
  2. Hvilke pages skal fjernes hvis der er fyldt i main memory, når en anden page har brug for en plads
  3. Kontrol af ændring i pages siden indlæsning også kaldet dirty bits
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Hvad er fordelen ved indeksbaseret lagring af data?

A

Hurtigere svar tider fra databasen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Hvad er ulemperne ved indeksbaseret lagring af data?

A
  1. Inserts vil tage længere tid
  2. Updates kan komme til at tage længere tid
  3. Deletes kan komme til at tage længere tid
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

Hvad er forskellen på hash basert indeks og træ-baseret indeks?

A

Hash baseret indeks er effektiv når man snakker om querys hvor man efterspørgere data med =, dvs where og join, hvorimod træ-baseret har en bestemt organiseret rækkefølge og er derfor langt bedere til at håndtere data efterspørgelser hvor betingelserne indeholder <, >, BETWEEN, LIKE med præfix og eller hvor data skal leveret sorteret.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

Hvilke to metoder kan DMBS bruge for at løse problemet med at der ikke er ledig plads til pagen som kan gemmes?

A
  1. ISAM
  2. B+
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

Hvordan fungere ISAM?

A

Træet laves ved oprettelse af et nyt indeks
Træets udseende ændres ikke pga behov for nye pages

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

Hvordan løser ISAM behovet for nye pages?

A

Der hvor den nye page som skulle indsættes i træet skulle være oprettes der en pointer fra den nuværede page til den page som skal indsættes dvs. at der bliver dannede kædede lister rundt omkring i træet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

Hvordan løses den linkede træstruktur som ISAM skaber ved behov for nye pages?

A

Det gør man ved at reorganisere trænet sådan at den får en pæn træstruktur igen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

Hvad er princippet i B+?

A

Det er at træet skal være pænt efter hver operation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q

Hvad gør B+ når der er brug for en extra page?

A

Der laver B+ en pagesplit

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
47
Q

Hvad er et pagesplit i B+?

A

Der splitter B+ halvdelen af de records som er i en page og overføre de record til en ny allokeret page og på den måde holdes træet nogenlunde pænt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
48
Q

Hvad er fillfactor?

A

For at optimere preformance i indeks basere søgetræer bestemmer man hvor stor en procentdel af en page må fyldes for at den ikke rammer Mads kapacitet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q

Hvad er forskelle på B+ og ISAM ift. behovet for processer kraft?

A

B+ er dyrt her og nu da den laver et page split hver gang der er brug for en ny page
ISAM er ikke dyrt her og nu man kan skabe preformance tab til næste reorganisering

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q

Hvor stor er en page i netto og brutto størrelse?

A

Netto er 8060 bytes da SQL server selv skal bruge plads til administration
Brutto er 8192 bytes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q

Hvor gemmes records?

A

I pages

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
52
Q

Gemmer SQL server altid hele records eller splitter den dem op for at fordele dem ud over pages?

A

Nej den gemmer som udgangs punkt altid records hele. Kun hvis at en record er for stor til at være i en page kan den fordeles

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
53
Q

Hvilke to datatyper snakker man om når der er tale om records?

A
  1. Variable-længde datatyper
  2. Fast-længde datatyper
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
54
Q

Hvad er en variable-længde datatype?

A
  • VARCHAR og VARBINARY
  • Fylder alt efter størrelse på data
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
55
Q

Hvad er en fast-længde datatype?

A
  • Alle andre datatyper end VARCHAR og VARBINARY
    -Fylder det samme uanset størrelse
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
56
Q

Hvornår er en record en fast-længde record?

A

Hvis den udelukkede indeholder fast-længde datatyper eller hvis den kun indeholde EN variable-længde datatype

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
57
Q

Hvor meget fylder en header på en record?

A

6 bytes + 1 bit pr. attribut + summen af attributternes størrelse

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
58
Q

Hvad skal man bruge af CHAR eller VARCHAR når der er snakke om preformance i DBMS?

A

Man skal altid bruge CHAR da det er lettere for DBMS, hvis man ved at strengen ikke bliver mere en 20-25 karakter lang og eller hvis man ved hvad den bestemte textstræng fylder.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
59
Q

Hvordan sorteres clustrede indeks?

A

Fra venstre mod højre

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
60
Q

Hvad er interval søgninger?

A
  • BETWEEN
  • < eller >
  • LIKE ‘…%’
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
61
Q

Når man selv laver indeks i SQL server hvilke metoder bruges så?

A
  • Træ-baseret indeks
  • B+
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
62
Q

Er primary key altid clustered?

A

Som default ja, men kan godt laves om

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
63
Q

Hvad er en optimizer I DBMS?

A

Et komponent som forsøger et finde den mest optimale og billigste måde at finde efterspurgt data frem på

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
64
Q

Hvad vil det sige at en optimizer er sub-optimal

A

Det vil sige at den ikke nødvendigvis finder den absolutte bedste strategi at finde data frem på, men finder altid en god strategi.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
65
Q

Hvilke parametre vurdere en optimizer om en stategi er god?

A
  1. Kort svartid
  2. Mindre brug af ressourcer
  3. Minimalt antal af disk I/O tilgang
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
66
Q

Hvordan fungere en optimizer trin for trin?

A
  1. Parse (Dvs. Tjekker syntax og om den er semantisk korrekt)
  2. Hvis querien er optimeret i Plan Cache så eksekvere den eller går den videre til trin 3 og 4.
  3. Operratograf (Dvs. At query bliver omformet til graf-format hvor der vises rækkefølgen af operationer og hvilke algoritmer der bruges)
  4. Optimering (Dvs. At operratografen rækkefølge laves om for at optimere preformance fx. De formindskende operationer først og de forøgende til sidst)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
67
Q

Hvad hedder operatografen i SQL-server?

A

Executionplaner

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
68
Q

Hvad er reduktionsfaktoren?

A

Det er en faktor som defineres som den procentdel af data som opfylder betingelserne i WHERE sætningen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
69
Q

Hvilken strategi vælger optimizeren hvis der ikke er noget indeks på værdien som du bruger i dit WHERE operation?

A

Table scan (Kører hele tabellen igennem)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
70
Q

Hvilken strategi bruger optimizeren hvis der er et clusteret indeks på værdien fra WHERE operationen?

A

Bruger det clusteret indeks

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
71
Q

Hvilken strategi bruger optimizeren hvis der er et non-clusteret indeks på værdien fra WHERE operationen?

A
  1. Hvis reduktionsfaktoren er ca. <= 1% så bruger den det non-clusterede indeks
  2. Ellers bruges tablescan
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
72
Q

Hvilke to ting skal optimizeren tage højde for når der skal joines?

A
  1. Hvis der er 2 eller flere tabeller der skal joines skal rækkefølgen bestemmes (Der kan kun joines to tabeller ad gangen)
  2. Valg af join-algoritme for hver join operation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
73
Q

Hvordan vælger SQL-Server hvilken rækkefølge som joins skal følge?

A

Den tager en rask beslutning da der på baggrund antal tabeller kan være rigtig mange mulige rækkefølger og derfor analysere den ikke samtlige muligeheder.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
74
Q

Hvilke tre join algoritmer bruges i moderne DBMS’er?

A
  1. Nested loop
  2. Sort and Merge
  3. Hash
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
75
Q

Hvordan fungere Netsted Loop join algoritme(Uden indeks)?

A

Tabellen recorden gennemløbes og for hver record gennemløbes den anden tabels records for at finde de records som opfylder join-betingelserne

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
76
Q

Hvordan fungere Netsted Loop join algoritme(Med indeks)?

A

Tabellen recorden gennemløbes og for hver record bruges indeks til at finde records i den anden tabel som opfylder join-betingelserne

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
77
Q

Hvad er kriterierne for, og hvordan virker merge join som join-algoritme?

A

1.Kræver at de to indgående tabeller/mellemresultater sorteres på joinattributterne inden fletning

2.Hvis man har et antal tabeller, der joines via merge join, vil man være nødt til at resortere mellem hver join, fordi de enkelte joins typisk, sker på forskellige join-attributter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
78
Q

Hvordan fungere Hash match Join algoritmen?

A
  1. Først indsættes den formoede mindste tabel i en hash tabel hvor join attributten er nøglen
  2. Derefter gennemløbes den store tabel ved at man for hver record slår den op i hash tabellen for at se om der er et match
  3. Hvis der er flere joins bliver der typsik oprettet flere hash tabeller, da forskellige joins kan have forskellige join betingelser
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
79
Q

Hvad er en Plan Cache?

A
  • Det er et lager som gemmer tideligere optimerede queries, da man I et rigtigt system ofte vil få de samme queries ind og derfor godt kan genbruge den samme optimering.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
80
Q

Hvilke indbyggede preformance forbedringer har en DBMS indbygger?

A
  1. Prefetching
  2. Databuffer (Sidst læste page)
  3. Plan Cache
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
81
Q

Hvad skal man være opmærksom på når man laver preformance test på en database?

A
  1. Indbyggede preformance forbedring i DBMS som kan mindste svartiden
  2. Belastning på selve Databaseserveren
82
Q

Hvorfor er indeks det billigste og mest kraftfulde værktøj til at opnå god preformance?

A
  1. Stor effekt på antallet at I/O’er
  2. Kan ændre dynamisk uden at skulle ændre andet
  3. Simpel kommandoer til indeksering
83
Q

Hvad er den overordnede problemstilling når man skal lave indeks?

A
  1. Indeks er en fordel for select
  2. Med indeks bliver insekt, update og delete nyere.
  3. Indeks kræver plads, men er af mindre betydning
84
Q

Hvad er fordelene og ulemperne ved at bruge indeks?

A

Fordele:
1. Hurtigere SELECTS
2. Mindre belastning på DB server
Ulemper
1. Dyrere opdateringer
2. Ved opdatering af træet låses dele af dataen

85
Q

Hvad er de to beslutninger som skal vurderes inden man vælger indeks?

A
  1. Hvilke attributter/kombinationer af attributter skal have indeks
  2. For hver tabel – hvilket indeks skal være CLUSTERED
86
Q

Hvad er nødvendig viden skal man som vidt muligt have for at vælge indeks?

A
  1. Man skal kende de queries (SELECT, INSERT, UPDATE og DELETE), der køres i systemer
  2. Man skal vide, hvor ofte de enkelte queries kaldes (frekvensen)
  3. Man skal vide, hvor vigtig god performance er for de enkelte queries
87
Q

Hvor skal man udover primary key overveje om der skal være indeks?

A
  1. Where - betingelserne
  2. Join attributerne(Fremedenøglerne)
88
Q

Hvad er fordelene og ulemperne ved at bruget et værktøj til at vælge indekser?

A

Fordele:
1. Nemt at generare indeksen
Ulempe:
1. Håndtere ikke vigtigheden af indekset rigtigt

89
Q

Hvad skal man overveje efter at man har valgt hvilke indeks der skal være?

A

Om der skal være clusteret eller non-clustered

90
Q

Hvornår er clusterede indeks markant bedre en non-clusterede?

A
  1. Ved WHERE betingelser da der søges mange resultater
  2. Ved visse fremmedenøgler
  3. Ved nogle sortererde resultater
  4. I tilfælde man ikke kan opnå den ønskede reduktionfaktor med et non-clustedet indeks
91
Q

I hvilket tilfælde vil clusteret indeks være dårligere en non-clusteret?

A

Når de attribut ofte skifter værdi

92
Q

Hvilke egenskaber har identity?

A
  1. Ved WHERE-betingelser på en tabel med Identity returneres kun et resultat
  2. Identityattributter bruges aldrig ved interval-søgninger.
  3. Identityattributter bruges ofte ved joins men kun som enkeltopslag
  4. Identityattributter bruges aldrig ved sortering
  5. Identityattributter ændrer aldrig værdi
  6. Ved en Identityattribut vil alt indsættelse ske i yderste højre side
  7. Implementeringsdetaljer i det enkelte DBMS kan påvirke valget
93
Q

Hvad skal man gøre efter at man har placeret et clusteret indeks på en tabel?

A
  1. Alle andre indeks på pågældende tabel skal være non-clusteret
  2. Efterfølgende skal man tjekke om man opnår en tilstrækkelig lav reduktionsfaktor ellers skal indeks udgå
  3. Overvejer om en covered eller include indeks kan bruges
94
Q

Hvornår skal man overveje at bruge indeks?

A

På tabeller vor der er meget at spare ift. preformance da det fx ikke giver mening at indeksere en tabel på 10 elementer ift. en på 10 millioner

95
Q

Hvad skal man overveje før man kigger på preformance?

A

Om Det kan svarer sig at kaste pengene efter det ift. hvor stor problematikken er

96
Q

Hvilke andre muligheder har en udvikler for at optimere preformance udover indeks?

A
  1. Gode hensigtsmæssige queries
  2. Tabel design
    1. Denormalisering
    2. Vertikal partitionering
  3. Override optimiser
  4. Samtidighedskontrol
97
Q

Hvad er kendetegnet ved de 4 andre muligheder for optimering udover indeks?

A

De er dyre i ift. indeks

98
Q

Hvad gør en query god helt overordnet?

A
  1. Jo simplere den ser ud jo bedre proformer den
  2. Brug kun distint eller orderby hvis det SKAL bruges
  3. Jo færre SELECT og FROM jo bedre
  4. Where frem for if
  5. En stor frem for mange små er bedre
  6. Undgå så vidt muligt cursors
99
Q

Hvad er denormalisering?

A

Det er at tilføje attributter/tabeller som beregninger af værdier som kan spares da de ikke skal beregnes ved visning

100
Q

Hvornår kan vertikal partitionering anvendes?

A
  1. Nogle få attributter, der SELECT’es ofte
  2. En del attributter, der SELECT’es sjældent
101
Q

Hvordan laver man vertikal partitionering?

A

Man laver henholdsvist en tabel:
1. Der indeholder de få attributter (inkl. Primary key)
2. Der indeholder de andre attributter (inkl. Primary key)

102
Q

Hvilke måder kan man override optimizeren?

A
  1. Sige om den skal eller ikke skal bruge indeks
  2. Bestemme join rækkefølge eller join-algoritmerne
  3. Specificere executionplan i XML
103
Q

Hvad skal man overveje før man overrider optimizeren?

A
  1. Størrelser på tabeller og fordeling på værdier kan ændre sig over tid
  2. SQL Servers teknikker og valg kan ændres i service packs/nye versioner
104
Q

Hvad indebærer database design helt overordnet?

A

Alle database relaterede aktiviteter der foregår mellem den logiske modellering (UML analyse klasse diagram) og starten på programmeringen.

105
Q

Hvordan vælges nøgler i forbindelse med database design? Hvad gør en primærnøgle god? Og hvor mange nøgler skal man overhovedet vælge?

A

En tabel kan have flere nøgler, men kun én vælges som primær.
En god primær nøgle:
○ Unik
○ Kort
○ Ændres sjældent
○ I praksis anvendes oftest en
dum nøgle (identity)

106
Q

Hvad vil det sige at en nøgle er enten informationsbærende eller ikke-informationsbærende?

A

Informationsbærende:
- En eller flere attributter fra den logiske model (UML)
-Kaldes en klog nøgle

Ikke-informationsbærende:
- Typisk et tal (identity)
- Kaldes en dum nøgle

107
Q

Hvad indebærer omformning i forbindelse med database design?

A

Efter valg af primærnøgler for alle klasser i den logiske model (UML), omformes den logiske model til tabeller.

108
Q

Hvilke tre måder kan arv omformes fra den logiske model til tabeller i databasen?

A

1-tabel implementering
N-tabel implementering
N+1 tabel implementering

109
Q

Hvad kendetegner 1-tabel implementeringen til omformning af arv fra den logiske model til tabeller i databasen?

A

Her samles alle attributter for både superklasse og subklasser i en tabel. Der defineres en “type”
Giver mange null-værdier

110
Q

Hvad kendetegner N-tabel implementeringen til omformning af arv fra den logiske model til tabeller i databasen?

A

Superklassens attributter “trækkes ned” i hver subklasses tabel.
Ingen null-værdier
Giver redundans (superklassen er repræsenteret flere steder)

111
Q

Hvad kendetegner N+1-tabel implementeringen til omformning af arv fra den logiske model til tabeller i databasen?

A

Her er der både en tabel for superklasse og alle subklasser. Sub tabellerne refererer så til supertabellen.
Ingen null-værdier
Kan give mange joins

112
Q

Hvilken af de tre måder at omforme arv fra den logiske model bør anvendes i tabellerne i databasen?

A

Hvilken implementering der vælges afhænger af om arven er “tungere” i superklassen eller subklasserne.

113
Q

Hvilke overordnede ting skal gøres i forbindelse med database design?

A
  • Der vælges nøgler på baggrund af den logiske model.
  • Det besluttes hvordan arv skal omformes
  • Der normaliseres
  • Det afgøres om der skal være historik, hvordan NULL værdier skal håndteres og om der skal bruges views.
114
Q

Hvad er normalisering? Hvad er formålet med normalisering?

A

Efter omformning skal databasen normaliseres.
Her er målet at identificere og fjerne visse former for redundans.

115
Q

Hvordan opnås første normalform?

A
  1. Normalform:
    - Alle attributter er atomare. Dvs de kun indeholder én information.
    - Ingen multiple value attributter
116
Q

Hvordan opnås anden normalform?

A
  1. Normalform:
    - 1. normalform
    - Hvis der er en sammensæt nøgle, skal attributterne være funktionelt afhængige af hele nøglen og ikke kun dele af den.
117
Q

Hvordan opnås tredje normalform?

A
  1. Normalform:
    - 2. normalform
    - Enhver attribut må kun være funktionelt afhængig af én nøgle. Altså må der ikke være funktionelle afhængighed mellem ikke-nøgler.
118
Q

På hvilken normalform siger man normalt at en database er normaliseret? Findes der højere normalformer?

A

Når en database er normaliseret mener man typisk at den er på 3. normalform. Men der findes også højere normalformer: Boyce Codd, 4. og 5. normalform.

119
Q

Hvilke overvejelser er der typisk i forbindelse med spørgsmålet om historik eller ej?

A

Når man afgør om der skal være historik stiller man sig selv spørgsmålet:
- Skal jeg kun kunne se den nyeste værdi (altså ingen historik)
- Eller skal jeg kunne se nyeste og tidligere værdier (altså med historik)

120
Q

Hvordan indfører man historik på en database?

A

Man opretter en ekstra tabel til historik.
Ønskes dette ikke kan man i stedet gøre brug af logisk sletning:
- Her bruges update til at sætte en “deleted-bit” til true i stedet for reelt at slette data. På denne måde undgår man at gøre brug af en ekstra tabel. I stedet har man blot en ekstra bit kolonne.

121
Q

Hvad er en teknisk attribut? Kom på et eksempel på en typisk teknisk attribut.

A

Det er normalt at tilføje tekniske attributter som ikke er en del af den logiske model (UML). Eks: Created by, Modified by osv.

122
Q

Hvilke forskellige steder kan man validere data integritet?

A
  • I databasen
  • I applikationen
  • Begge steder
123
Q

På hvilke måder kan man validere data integriteten i databasen?

A

Generelle contstraints:
- Fire typer:
- Primary key
- Unique
- Foreign key
- Check
- Generelle constraints er lette at bruge

  • Ikke-standardiserede faciliteter:
    • Rules
      - Er en slags check der kan
      bindes til en specifik attribut.
  • Triggere
    • AFTER-trigger
      - Den normale form for
      triggere vi har lært om, hvor
      en trigger udføres efter en
      bestemt hændelse. Eks:
      Insert, Update, Delete.
    • INSTEAD-trigger
      - Er en trigger der køres i
      stedet for SQL-kommandoen
124
Q

Hvad indebærer indkapsling med views i databasen?

A

I en del tilfælde vælger virksomhederne at placere et lag af views ovenpå tabellerne.

På denne måde kan man ændre i tabellernes udseende (oftest) uden at skulle ændre på programmerne overhovedet.

Implementeringen af disse views gøres nemmest inden programmeringen starter.

125
Q

Hvad er en transaktion?

A

Et antal SQL sætninger der udgør en helhed og som følger ACID principperne.

126
Q

Hvilke tre kommandoer er der i en transaktion?

A

Begin, rollback og commit

127
Q

Hvad er vigtigt i forhold til den connection en transaktion udføres i?

A

Den connection der bruges skal være åben under hele transaktionen.

128
Q

Hvad er ACID principperne?

A

Atomicity (alt eller intet)

Consistency (der kommer ikke “ulovlige” data i databasen når programmet bruges af flere)

Isolation (mellemresultater er usynlige for andre)

Durability

129
Q

Hvordan påvirker samtidighedskontrol performance?

A

Samtidighedskontrol påvirker performance negativt hvis der bruges låsning

130
Q

Hvad er forudsætningerne for, at der opstår samtidighedsproblematikker?

A
  • Transaktioner kører samtidig
    og/eller tilgår de samme data

Mindst en transaktion opdaterer eller sletter

131
Q

Kan man på nogen måde lave inserts, updates og deletes uden at støde på samtidighedsproblematikker? I så fald, hvordan?

A

Kan undgås med blinde opdateringer:

  • Insert, update eller delete uden foregående selects.
  • Undgår typisk samtidighedsproblemer fordi sådanne oftest opstår efter læsning af nogle data og efterfølgende opdatering.
132
Q

Hvad er forskellen på en implicit og en explicit transaktion?

A
  • Implicit (enhver query er en transaktion)
  • Explicit (der skrives begin tran/ rollback / commit explicit i query)
133
Q

Hvordan kan transaktioner bruges i samspil med stored procedures?

A

Har ikke som sådan noget med en transaktion at gøre.
En stored procedure kan placeres indeni eller udenom en transaktion, eller have en transaktion i sig.

134
Q

Hvilke to tilgange findes der overordnet til løse samtidighedsproblematikker?

A

Pessimistisk samtidighedskontrol (låsning)
eller optimistisk samtidighedskontrol (versionering)

135
Q

Hvilke tre samtidighedsproblemer arbejder vi med?

A

Dirty read, lost update (non-repeatable read) og phantom read

136
Q

Hvad er en dirty read? I hvilke tilfælde opstår den?

A

Der læses på en opdateret værdi der så efterfølgende rulles tilbage. Altså er der læst en værdi der ikke længere eksisterer.

Løses ved at låse den data der opdateres (Read commited)

137
Q

Hvad er en lost update? I hvilke tilfælde opstår den?

A

To opdaterer den samme data på samme tid. Det er så kun den sidste opdatering der er den gældende, på den måde er den første transaktions ændringer gået tabt.

Sker typisk ved select + update transaktioner

Løses ved at låse den data der er læst med Repeatable Read

138
Q

Hvad er en phantom read? I hvilke tilfælde opstår den?

A

Problemet opstår hvis en transaktion har læst data og inden transaktionen bliver færdig, indsætter en anden transaktion data, som den første transaktion ville have læst, hvis de var blevet indsat før.

Sker typisk ved select + insert transaktioner

Løses ved at låse hele datasættet med Serializable

139
Q

Hvad er en shared lås?

A

Er en delt lås (også kaldet en læse lås). Bruges på SELECT operationer og deles mellem flere transaktioner.

140
Q

Hvad er en eksklusiv lås?

A

Er en lås der kun kan bruges af en transaktion af gangen. Der er altså dermed ikke andre transaktioner der kan have hverken en eksklusiv eller shared lås samtidig.
Bruges ved insert, update og delete

141
Q

Hvordan implementerer man låsning i databasen? Hvad er fordele og ulemper?

A

Ved at bruge isolation levels på transaktioner.

Fordelen er, at det løser alle samtidighedsproblemer.

Ulempen er at det kan give ventetider ved bruger interaktion med systemet.

142
Q

Hvordan implementerer man versionering i databasen? Hvad er fordele og ulemper?

A

Kan enten gøres ved at programmøren selv skriver kode til at checke om data er ændret. Alternativt kan der sættes en ekstra attribut på tabellen af typen rowversion. Den sidste mulighed er at bruge isolation level “Snapshot”. På den måde foregår versioneringen bag ens ryg.

Versionering giver ingen ventid ved brugerinteraktion med systemet.

Til gengæld er risikoen for rollbacks større.

143
Q

Hvad er fordelen ved at bruge snapshot til versionering?

A

Selve versioneringen foregår bag ens ryg, og er derfor let at implementere. Det eneste man skal huske er at reagere på update conflict fejlen i SQL server der har koden 3960

144
Q

Hvad er granularitet? Hvilke tre niveauer af granularitet findes der? Hvordan implementeres de i SQL Server?

A

Handler om hvor meget data der låses
Tre niveauer:
- Record
- ROWLOCK
- Page
- PAGLOCK
- Tabel
- TABLOCK

145
Q

Hvilken anden lås end shared og ekslusiv lås tilbyder SQL Server? Hvordan er den anderledes? Hvordan implementeres den i SQL Server?

A

Update lås.

Andre transaktioner må godt have en
SHARED lås på de pågældende data
samtidigt. De må ikke have en
UPDATE eller en EKSKLUSIV lås på
de pågældende data samtidigt.

Hedder en UPDLOCK i SQL Server.

146
Q

Hvordan opnår man den bedst mulige performance ved brug af pessimistisk samtidighedskontrol?

A

Lad transaktionen bruge
* så få data som muligt
* i så kort tid som muligt
* med et så lavt isolation-level som
muligt

147
Q

I hvilket tilfælde er det vores eget ansvar at bruge operationerne begin, commit og rollback?

A

Ved explicitte transaktioner.
Hvis man siger begin tran skiftes til
eksplicit transaktion og det er ens
eget ansvar at afslutte
transaktionen med rollback eller
commit.

148
Q

Hvad er Oracle? Hvordan adskiller den sig fra MSSQL?

A

Verdens mest brugte relationelle database.

Meget striks med syntaks sammenlignet med MSSQL. Men kernen af SQL virker på samme måde i Oracle som i MSSQL

I de ældre versioner af Oracle findes Identity ikke
Programmeringssprogene PL/SQL og T-SQL har meget forskellig syntaks.

149
Q

Hvad indebærer flytbarhed ifht. skift af DBMS?

A

Flytbarhed i forhold til DBMS handler om hvor enkelt eller
besværligt det er at flytte en applikation fra at bruge et DBMS-
mærke til et andet.

150
Q

Hvilke tre teknikker er der til backup af en database?

A

Fuld backup, Differential backup og Log backup.

151
Q

Hvad kendetegner en fuld backup af databasen?

A

Total backup af hele databasen som den ser ud på tidspunktet

152
Q

Hvad kendetegner en differential backup af databasen?

A

En summeret backup - altså en backup af de seneste ændringer siden sidste fulde backup

153
Q

Hvad kendetegner en log backup af databasen?

A

Backup af loggen over entries i databasen

154
Q

Hvad er et backup device?

A

Der hvor backups gemmes
Når en backup gemmes får den et fil nummer, som så efterfølgende kan bruges hvis der skal laves restore

155
Q

Hvad er forudsætninger for at kunne lave restore på databasen?

A

At der findes en backup af det der ønskes at lave restore på.

156
Q

Hvilke parametre SKAL defineres på en restore kommando i SQL Server?

A

File, Replace (på den første restore), Norecovery (på alle, pånær den sidste restore), Recovery (på den sidste restore)

157
Q

Hvad fortæller File parameteren i restore kommandoen noget om?

A

Definerer hvilken backup der skal restores

158
Q

Hvad fortæller Replace parameteren i restore kommandoen noget om? Hvad er vigtigt at huske med denne parameter?

A

Sættes KUN på den første restore sætning. Sikrer at det der er i databasen i forvejen fjernes inden en fuld backup.

159
Q

Hvad fortæller Norecovery parameteren i restore kommandoen noget om? Hvad er vigtigt at huske med denne parameter?

A

Sættes på alle undtagen den sidste restore kommando. Fortæller at der kommer flere restore kommandoer, og at databasen derfor endnu ikke må låses op.

160
Q

Hvad fortæller Recovery parameteren i restore kommandoen noget om? Hvad er vigtigt at huske med denne parameter?

A

Sættes på den sidste restore sætning. Fortæller at der ikke kommer flere restore sætninger. Herefter er databasen igen låst op.

161
Q

Hvad er roles i SQL Server?

A

Definerer rettighederne for brugerne af databasen.
Svarer til grupper af brugere. Gruppen kan så gives tilladelser
En bruger kan så være medlem af en eller flere grupper, og får dermed de tilladelser der er deri

162
Q

Hvilke typer roles er der?

A

Public roles, database roles og application roles.

163
Q

Hvilke to kategorier af database roles er der? Hvad kendetegner dem?

A

Fixed - er på forhånd defineret hvilke roller der er, og hvilke rettigheder de specifikke roller har

Userdefined - defineres af os. Er ikke forudbestemt.

164
Q

Kom med eksempler på nogle fixed database roles i SQL Server

A

Db_ddladmin
□ Må create og droppe tabeller
□ Giver ikke samtidig adgang til at læse og skrive i dem

Db_accessadmin
□ Kan give adgang til andre

Db_datareader
□ Må læse alle databaser, også fremtidige

Db_datawriter
□ Må skrive i alle databaser, også fremtidige

Db_denydatareader
□ Ikke muligt at læse i databaser

165
Q

Hvad viser billedet?

A

Definering af user defined roles.

166
Q

På hvilke forskellige niveauer kan man give tilladelse i databasen?

A

På database niveau
På tabel niveau
På delmængde af tabel
På row level niveau

167
Q

Hvordan giver man kun adgang til en delmængde af en tabel?

A

Implementeres ved at lave views på en delmængde af en tabel. Hvis en bruger får tilladelse til at påvirke viewet, får brugeren kun adgang til den delmængde viewet repræsenterer - og altså ikke hele den oprindelige tabel.

168
Q

Hvad står ORM for?

A

Object Relational Mapping

169
Q

Hvad er en ORM? Hvad bruges den til?

A

Oprindeligt lavet til relationelle databaser. Er et automatiseret program til kommunikation mellem applikation og database.

170
Q

Kom med et eksempel på en ORM.

A

Entity Framework, LINQ

171
Q

Hvad brugte man til at kommunikere mellem applikation og database før ORM?

A

JDBC (Java), ADO (.Net), osv.

Her bygger programmøren det hele selv. Det er mere komplekst og bøvlet

172
Q

Hvad er vigtigt når man ønsker at persistere ændringer foretaget med Entity frameworket?

A

Save changes() sørger for at persistere ændringen.

173
Q

Hvad er en navigation property i forbindelse med Entity Framework?

A

○ Kaldes også link attributter
○ Bruges til at skabe fremmed nøgle referencer fra databasen i model klasserne.
○ Der skabes tovejs referencer, altså får begge klasser en reference til den anden.
○ Når entity skaber klasse definitionen laves både en almindelig attribut der repræsenterer fremmednøglen (samt en collection på fremmednøglens klasse definition), og samtidig laves der en link attribut, eller navigation property, som er en link reference til den fremmede nøgles klasse. Det betyder dermed også, at der er en del redundans når Entity frameworket opretter klassedefinitioner.

174
Q

Hvilken datatype returnerer LINQ’s GroupBy funktion altid?

A

En var - altså en uspecificeret type

175
Q

Hvad er vigtigt at huske når man bruger LINQ’s Using funktion?

A

Connection til db åbner når querien startes, og lukkes igen lige efter den er udført. Derfor kan eventuelle variable ikke tilgås efter connection til db er lukket.

176
Q

Hvad siger begreberne Lazy/Eager og Deffered/Immediate i Entity Frameworket noget om?

A

Det definerer forskellige tilgange til at hente data. Det handler dermed om hvor meget data der hentes, og hvornår.

177
Q

I hvilke tilfælde er det interessant at snakke lazy vs eager approach til at hente data via Entity?

A

Spørgsmålet om lazy vs eager er kun interessant at snakke om i tilfælde hvor en given operation udføres i flere mindre LINQ queries.

178
Q

Hvad er forskellen på Lazy og Eager approach til at hente data via Entity?

A

Handler om hvor meget.

- Lazy loading:
	○ Henter kun almindelige attributter på et objekts klasse til en start
	○ Henter først navigation properties når de skal bruges
- Eager loading:
	○ Både almindelige attributter og navigation properties hentes med det samme.
179
Q

Hvordan sørger man for at der bruges eager loading fremfor lazy loading i Entity?

A

Eager loading kan bruges ved at benytte Include operation på query. Her kan de link attributter der ønskes hentet til start inkluderes.

180
Q

Hvad er forskellen på Deffered og Immediate approach til at hente data via Entity?

A

Handler om hvornår.

- Deffered execution:
	○ En LINQ query udføres først når resultatet af den rent faktisk skal bruges. 
- Immediate: En LINQ query eksekveres der hvor den bliver deklareret.
181
Q

Hvordan sørger man for at der bruges immediate execution fremfor deffered execution i Entity?

A

Kan bruges ved at benytte funktioner som ToArray() på en given LINQ query.

Gøres dette hentes data op i det øjeblik

182
Q

Hvilket approach er standard til at hente data via Entity?

A

Deffered/Lazy.

Altså gøres så lidt som muligt, så sent som muligt.

183
Q

Hvad sker der hvis en navigation property hentes for anden gang via Entity?

A

Hvis en navigation property er blevet hentet en gang, så er de gemt i en cache og kan derfor bruges herfra efter første gang.

184
Q

Hvilket approach er standard til at hente data via Entity i .Net Core? Hvad betyder det i praksis?

A

Bruger som udgangspunkt eager loading, og derfor bliver man tvunget til at skrive Include() i sin LINQ query hvis man skal bruge navigation properties.

185
Q

Hvad er et dokument i en No-SQL database?

A

Er den enhed man gemmer. Svarer til en record i RDBMS

186
Q

Hvad er en collection i en No-SQL database?

A

En samling af dokumenter. Svarer til tabeller i RDBMS

187
Q

Hvilke to teknikker er der til at implementere fremmed nøgler i en No-SQL database? Nævn dem blot ved navn?

A

Redundant og Foreign keys.

188
Q

Hvad går Redundant teknikken til at implementere fremmed nøgler i en No-SQL database ud på?

A

Her placeres det andet objekts attributter redundant i det første objekt. Det vil sige at noteres en medarbejder som ansat i mere end en virksomhed, vil hans data eksistere flere gange.
Mest brugte teknik af de to.

189
Q

Hvad går Foreign keys teknikken til at implementere fremmed nøgler i en No-SQL database ud på?

A

Det første objekt får en reference til det andet objekts id.
Skal begrænses i antal, da det kan være svært at joine.

190
Q

Hvad er et denormaliseret udtræk? Hvornår bruges det typisk?

A

Der kan laves et denormaliseret udtræk af en relationel database. Dette udtræk kan eks. Placeres i en mongoDB og herfra kan data så hentes med god performance
Opdateringer af databasen sker stadig primært i relationsdatabasen.

Teknikken bruges eks. også til datawarehousing.

191
Q

Hvilken form for validering/check er indbygget i en No-SQL database?

A

Der er intet check på de data der indsættes.
Det er os selv der bestemmer hvor konsistent databasen skal være

192
Q

Hvad definerer generelt set en No-SQL database?

A
  • Intet check af data
  • Er hurtige (dels fordi de faktisk er hurtige, og dels fordi de ikke checker noget og bruger denormalisering)
  • Bedst brugt til semi strukturerede data, eller til lagring af stærkt denormaliserede data
193
Q

Hvilke tre databasemodeller arbejder vi med? Hvad kendetegner dem?

A

Relations databaser:
○ Strukturerede data
○ Normalisering
○ Validering af data

Dokument databaser:
○ Ingen kontrol (validering) af data
○ Kan håndtere ikke-strukturerede data
○ Denormalisering
○ Satser på hastig afvikling (god performance)

Graf databaser:
○ Anvendes bedst i mere komplekse løsninger, da det i de fleste tilfælde er nemmere og bedre at løse simple problemstillinger med en almindelig relationsdatabase.

194
Q

Hvad er datawarehousing?

A

Datawarehousing bruges til at gemme data (oprindeligt fundet via et almindeligt IT-system i en virksomhed) som skal bruges til at lave statistik, hente information og drage konklusioner på.

195
Q

Hvad dækker begrebet OLTP over? Hvad står forkortelsen for?

A

Online transaction processing. Begrebet bruges i forbindelse med snakken om datawarehousing.

Repræsenterer det almindelige IT-system.
Data gemmes typisk i en relationel database

196
Q

Hvad dækker begrebet OLAP over? Hvad står forkortelsen for?

A

Online Analyzing processing. Begrebet bruges i forbindelse med snakken om datawarehousing.

	○ IT-system hvis formål er at hente information ud af de data OLTP systemet har samlet
	○ Data kan både komme fra indtastede data direkte i OLTP systemet, eller det kan være såkaldt måledata der er indsamlet via eks. IoT
	○ Disse informationer kan gemmes i det man kalder et datawarehouse.
197
Q

Hvad er denormalisering i forbindelse med datawarehousing?

A

Data fra OLTP databasen denormaliseres og placeres i OLAP databasen

198
Q

Hvad er forskellen på den data der ligger i OLTP databasen og den der ligger i OLAP databasen? Hvad er formålet med den hver i sær?

A

Samme data gemt forskelligt.
- Data i OLTP = Flere mindre opdateringer og ændringer med fokus på check
- Data i OLAP = Få men store dataudtræk til store og mere komplekse analyser

199
Q

Er relations databasen egnet til at være en OLAP database?

A

Bedst egnet til OLTP systemet, men der er også lavet udvidelser til at håndtere OLAP systemer

200
Q

Hvilken arkitektur bruges til datawarehousing?

A

Den multidimensionale model (stjernearkitekturen)

201
Q

Hvad kendetegner den multidimensionale model som datawarehousing arkitektur?

A

Primær analyseområde findes (eks. Salg) og bliver dermed til fact tabellen. ○ Herefter defineres hvilke andre områder indenfor salg der også ønskes at analyseres på (eks. Produkt, Tid, Lokation).

202
Q

Hvad er den største udfordring med datawarehousing?

A

Datakvalitet er den største udfordring.
Handler om hvor godt data i databasen stemmer overens med virkeligheden