SSD-diske vandt over RAM-klodser i danske biblioteksdatabaser
Forsinkelsen i fibernetværket, hver gang der bliver sendt en forespørgsel fra serveren og ud til diskene i storagesystemet, koster millisekunder. Det lyder måske ikke af meget, men for en database med mange søgeforespørgsler kan få millisekunder fra eller til gøre hele forskellen for ydelsen.
Forsinkelsen på hver seek-forespørgsel var netop grunden til, at DBC, der kører it-systemer som DanBib og Bibliotek.dk for de danske biblioteker, blev nødt til at finde en måde at gøre databaserne hurtigere, end det var muligt med de konventionelle diske i serverne.
Databasen er bygget op omkring søgninger i en træstruktur, der fungerer som indeks. En væsentlig flaskehals i systemet er derfor dette indeks, som fylder fra 30 til 40 gigabyte for de mindste systemer og op til 150 gigabyte for de største.
»Problemet er, at vi ikke kan have hele træstrukturen i RAM, og når du så skal lave mange punktvise nedslag, så koster det i latency,« siger konsulent Morten Garkier Hendriksen, som arbejder sammen med DBC om at optimere dets hardware.
Forbedret med en faktor 2,5 Tidligere kørte denne type servere hos DBC med interne SAS-diske i et RAID 10. Nu har DBC afprøvet nye servere fra henholdsvis IBM og Fujitsu med SSD-diske til at løse den samme opgave.
De foreløbige benchmarks, som DBC har kørt, viser en totalforbedring på omkring en faktor 2,5 for hele processen. Det skyldes dels kraftigere servere med mere RAM, men også at SSD-diskene har stort set ingen latency på seek-forespørgsler i forhold til de konventionelle harddiske.
»De største optimeringer kan du stadig lave i softwaren, men så snart du har en forbedring på en faktor to, så er det værd at skifte hardwaren,« siger systemkonsulent Piet Seiden fra DBC.
I praksis betyder forbedringen, at en ombygning af indekset nu kan gøres på 13 timer i forhold til at have taget lige knap to dage. Det gør det lettere at planlægge sådan en ombygning, fordi den nu kan ske i løbet af en lang nat i stedet for at skulle planlægges til at ske i en weekend.
Koster kassen
Den største barriere i DBC's projekt var, at prisen på Intels X25-E SSD-diske er høj. Stykprisen ligger på mellem 5.000 og 6.000 kroner alt efter, hvad man kan forhandle sig til hos leverandøren, og der findes i praksis ingen alternativer til Intels X-25-E. Især ikke fordi netop levetiden på flash-hukommelseschippene er en vigtig faktor.
Intel laver også X-25-M SSD-diske, der er væsentligt billigere og har en større kapacitet, men hvor Intel ikke kan garantere den samme levetid.
»Du kan bruge Intels X-25-M til statiske data, men hvis du har mange opdateringer, så kører du mediet i smadder. Vi slider meget på hardwaren, så min store bekymring er, om vi slider X-25-E diskene for hårdt,« siger Morten Garkier Hendriksen.
Overvejede løsning i RAM Et alternativ til de dyre Intel-diske ville være at benytte en server med så stor en mængde RAM, at indekset kunne gemmes i hukommelsen.
For de mindste af DBC's systemer ville det være muligt at lægge indekset i hukommelsen på en server med op til 48 gigabyte RAM, men de store ville kræve så meget hukommelse, at det ville kræve en server i en meget højere prisklasse. Derfor faldt valget på løsningen med SSD.
»SSD ligger lige der, hvor du har noget, der er for stort til at ligge i RAM, men ikke er for stort til, at du ikke har råd til at købe SSD-diske,« siger Morten Garkier Hendriksen.
Prisen er en meget vigtig faktor for DBC, da der primært er tale om offentlige kunder, som kraft af deres budgetter stiller store krav til, hvor meget funktionalitet og ydelse, de kan få for pengene.
»Vi skal levere rigtig meget 'bang for the buck',« siger Morten Garkier Hendriksen.
SSD havde også den fordel for DBC, at systemet ikke er ændret væsentligt. Det kører som før, men i kraft af SSD-diskene er problemet med latency ved seek-requests forsvundet.
Den væsentligste ulempe var prisen, som i praksis var dobbelt så høj i forhold til systemet uden SSD. Til gengæld kan én server så klare den samme belastning, som før krævede to servere.
Kommentarer (6)
Den største barriere i DBC's projekt var, at prisen på Intels X25-E SSD-diske er høj. Stykprisen ligger på mellem 5.000 og 6.000 kroner alt efter, hvad man kan forhandle sig til hos leverandøren, og der findes i praksis ingen alternativer til Intels X-25-E. Især ikke fordi netop levetiden på flash-hukommelseschippene er en vigtig faktor.
Er FusionIO virkelig ikke et alternativ til Intels X25-E? Min opfattelse er da ellers at de anbefaler den til netop databaser.
Hvis det er et binært søgetræ på 150 gigabyte, og 1 gigabyte kan være i ram - så er det 150 gange så stort, som ram'en tillader. Det medfører der skal fortages 8 søgninger på harddisken. Med en søgetid på 8ms, tager det ca. 64ms.
Da dette er meget, laves som regel ikke binære søgetræer, men balancerede træer med flere udgreninger. Dette er mere effektivt ved harddiske, da der her læses mindst en sektor af gangen. Den skal derfor helst fyldes op med udgreninger, så dybden bliver mindre.
Er der 4 udgreninger, halveres søgetiden til 32 ms. Er der 16 udgreninger for hver punkt i søgetræet, bliver den 16ms.
Der kan nemt være op til 1024 udgreninger for et punkt - så bliver søgtiden 6.4ms. I praksis, kan den naturligvis ikke kommer under 8ms, som er harddiskens søgetid, og der skal mindst 1 søgning til. Dertil kommer selve data der skal læses, når placeringen er fundet. Tiden bliver derfor ca. 16ms.
Naturligvis er det en god idé, at bruge solid state diske - de kan nemt have en søgetid der er 50-100 gange hurtigere end en harddisk. Derved kan opnås søgetider i størrelsesorden 200µs per opslag.
Levetiden plejer ikke at være et problem, hvis der ikke skrives så meget til lageret.
Hvis der anvendes flere advancerede søgekriterier, kan søgetiden nemt blive 2-5 gange så stor.
En god database, der anvender søgetræer med flere udgreninger, vil normalt kunne lave opslag i en database på op til en terabyte, med kun 1-2 opslag.
Problemet er, hvis der ikke tages hensyn til harddisk strukturen, og at man f.eks. bare erklærer en stor variabel med binære træer, og så lader operativsystemet tager sig af swapning.
@Jens
Jeg tror ikke du finder så mange database som benytter binære søgetræer. Jeg tror de fleste anvender varianter over træstrukturer med bucketing osv. f.eks. B-trees.
Men hvorfor denne lektion i binære søgetræer?
jo fusion io er et særdeles kapabelt alternativ til mindre databaser - de kommer desværre kun i mini PCI-e slots på 80GB som kan "daisychaines" (eller kobles i raid for at bruge en mere korrekt term) og hvert modul koster så til gengæld 4x spidsen af en jetjager. Ud over det - så er der pt 4-6mnds leveringstid på kortene ser det ud til hvis du skal have det gennem deres oem-partnere (HP og dell)
Så teknisk jo så ville det være den optimale løsning, men så ville jeg næsten hellere investere i en Texas Instruments RAMSAN løsning. med de datamængder ville prisen nærme sig hinanden.
Nej Pt er den løsning de har lavet faktisk den der giver mest "bang for the buck". men vigtigst af alt - de får forhåbentlig også nogle langt mere tilfredse kunder i butikken! :-)
Men hvorfor denne lektion i binære søgetræer?
Måske pga denne sentens fra artiklen:
Databasen er bygget op omkring søgninger i en træstruktur, der fungerer som indeks.
Hvis man ikke har direkte hashing, er B-træer vel den (næst) bedste løsning..?
Nu er jeg ikke helt klar over, om løsningen kører i et cluster, men hvis det er tilfældet kan FusionIo vel ikke komme i betragtning - det er sin sag, at lave 'fail over', med lokale diske.
Sidder og grunder lidt over, hvornår der kommer et enclosure til PCI-kort, så man kan gøre brug af FusionIO, og lignende teknologier, i et enterpricemiljø.

