Gå til innhold

Bok om databasedesign og store datamengder


Anbefalte innlegg

Videoannonse
Annonse
Av ren nysgjerrighet lurer jeg på hva du definerer som store datamengder og hva slags data du lagrer som utgjør disse store datamengdene.

 

I jobbsammenheng er det snakk om å få tips og innspill på design av databaser for å håndtere data effektivt for webstatistikk, prisstatistikk fra prisguide, prishistorikk i prisguide, m.m.

 

For meg så er alle datamengder som overstiger 1 GB å regne som store datamengder, men jeg erfarer at dårlig design, eller krevende løsninger møter ytelsesproblemer på kraftige servere også før de når 1 GB. Det hele kommer veldig an på hvor mye oppdateringer (spesielt SQL UPDATEs) man har i databasene, og hvor mange tunge oppslag (f.eks. SELECT med GROUP BY) som gjøres.

 

"Best practices", og databasepartisjonering er av stor interesse. Nå kommer jo MySQL med partisjonering etterhvert også.

 

Mvh,

Amund

Lenke til kommentar

Førstnevnte omhandler datavarehus, og etter det jeg kan se av innholdsfortegnelsen så er veldig mye av boken rettet mot spesifikke scenarier, f eks rettet mot helsesektoren, telecom, logistikk og så videre. Hvis du har planer om å jobbe seriøst som konsulent innen datavarehus er det sikkert en god bok, ellers frykter jeg at den inneholder alt for mye informasjon som er for spesifikk og totalt irrelevant for deg. Men, når det er sagt så har jeg ikke noe godt forslag til en annen bok heller (annet en bøker spesifikke for Microsoft SQL Server).

 

Sistnevnte bok kan godt anbefales, men vær klar over at den ikke har noe som helst informasjon om MySQL spesielt. De databasene som i noen grad behandles spesielt er MSSQL, Oracle og DB2/UDB. Mye av det som omhandles i boken føler jeg at er selvfølgeligheter, men selvfølgeligheter eller ei så er det i hvert fall svært så nyttig informasjon.

Lenke til kommentar

Jeg får bestille en eller to av dem for å se hva de har å by på. Enig i at datavarehus for helsesektoren ikke blir helt riktig, men samtidig er nyttig å se noen aktuelle case, og ikke bare den grunnleggende SQL-teorien. Et alternativ er at man setter seg enda bedre inn i hvordan databasemotorene arbeider (derav forslaget med "Relational Database Index Design and the Optimizers"), for på den måten forstå hvordan det er smartest å bruke teknologien.

Lenke til kommentar
  • 2 uker senere...

Av erfaring så vet jeg at en helt normalisert database ikke nødvendigvis fungerer i praksis. La oss si at du har en ordretabell og en statustabell med en tabell i mellom med ordrestatuser. Hvis du er interessert i siste status kan du skrive noe sånt som:

 

SELECT orderstatusid FROM orderstatus WHERE orderid = ? ORDER BY orderstatusdate DESC LIMIT 1

 

Det blir ikke spesiellt pent når du skal hente ut f.eks de siste 100 ordrene som statusen ferdig:

 

SELECT orderid 
FROM order
INNER JOIN orderstatus ON orderstatusid = (
SELECT orderstatusid FROM orderstatus WHERE orderid = ? ORDER BY orderstatusdate DESC LIMIT 1)
WHERE orderid = ?

 

Når orderstatus tabellen din kommer opp i 2 millioner rader så går det ikke kjappt, selv om hele tabellen ligger i minne.

 

Det som da fungerer er å legge siste status i ordretabellen.

 

Mao, man må denormalisere litt.

 

PgAdmin 1.4 har forresten noe ganske genialt, en grafisk fremstilling av hvor lang tid hver enkelt operasjon tar. Mao, hvis du har joinet sammen 5 tabeller og en av tabellene f.eks mangler en indeks vil du se det med en gang. Genialt verktøy for å optimalisere sql spørringer.

 

PgAdmin er et av databaseverktøyene til Postgres.

Endret av blackbrrd
Lenke til kommentar

Godt poeng dette. Det å dobbeltlagre data slik du beskriver er helt klart noe som gir forbedret ytelse i mange tilfeller, og det er blant annet dette jeg ønsker å se eksempler på. Jeg skulle tro dette er en vanlig problemstilling i store datavarehus brukt for eksempel i ulike systemer for handel.

 

Mvh,

Amund

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...