Mitä on kardinaalisuus tietokannassa?

Tietokannoissa on paljon jargonia, ja kardinaalisuus on yksi niistä sanoista, joita kokeneilla ihmisillä on taipumus unohtaa, että he eivät tienneet aikoinaan. Mutta jos et tiedä sitä – ja kestää jonkin aikaa, ennen kuin kardinaliteetti on todella tuttu – se on erittäin hämmentävää, kun DBA vain pudottaa sen keskelle lausetta hidastamatta! Ei hätää: Cardinality tarkoittaa tietokannoissa kahta asiaa. Meidän tarkoituksiimme toinen merkitsee paljon enemmän kuin toinen. Tutustutaan ensin yksinkertaiseen ja sitten siihen, jolla on merkitystä kyselyn suorituskyvyn kannalta.Kyselyn suorituskyvyn kannalta tärkeä kardinaalisuuden määritelmä on datan kardinaalisuus. Kyse on siitä, kuinka monta erillistä arvoa sarakkeessa on.Kardinaalisuuden ensimmäinen merkitys on silloin, kun suunnittelet tietokantaa – tätä kutsutaan tietomallinnukseksi. Tässä mielessä kardinaalisuus tarkoittaa sitä, onko suhde yksi yhteen, moni yhteen vai moni moneen. Cardinalityn virallinen, tietokannan ulkopuolinen sanakirjamääritelmä on matemaattinen: arvojen lukumäärä joukossa. Tietokantoihin sovellettuna merkitys on hieman erilainen: se on taulukon sarakkeessa olevien erillisten arvojen lukumäärä suhteessa taulukon rivien lukumäärään. Sarakkeessa toistuvia arvoja ei lasketa.Tavallisesti emme kuitenkaan puhu kardinaalisuudesta numerona. Yleisemmin puhutaan vain ”suuresta” ja ”pienestä” kardinaalisuudesta. Paljon erillisiä arvoja on korkea kardinaalisuus; paljon toistuvia arvoja on matala kardinaalisuus.Kuvitellaanpa tuotekuvaustaulukko sähköisen kaupankäynnin tietokannassa:Sarakkeessa ProductID on korkea kardinaalisuus, koska se on luultavasti kyseisen taulun ensisijainen avain, joten se on täysin uniikki. Jos taulukossa on tuhat riviä, on tuhat erilaista ProductID-arvoa. Category-sarakkeessa on paljon toistoa, ja sen kardinaalisuus on pieni tai keskisuuri: ehkä 50 tai 100 erilaista Category-arvoa. Name-sarakkeessa on luultavasti suuri kardinaliteetti, ellei taulukossa ole enemmän kuin silmämääräisesti näyttää (esimerkiksi useita rivejä eri tuoteväreille ja muille variaatioille).Kardinaliteetti vaikuttaa paljon suorituskykyyn, koska se vaikuttaa kyselyn suoritussuunnitelmaan. Suunnittelija tutkii saraketilastoja ja käyttää niitä muun muassa päättelemään, kuinka monta arvoa kysely todennäköisesti vastaa. Riippuen siitä, mitä se havaitsee, se saattaa käyttää erilaisia kyselyn suoritussuunnitelmia parhaan suorituskyvyn saavuttamiseksi. Mutta tämä on eri blogikirjoituksen aihe, koska sen selittäminen vaatii hieman työtä.Kun joku seuraavan kerran sanoo lauseessa ”suuri kardinaalisuus” ilman taukoa, tiedät, että hän tarkoittaa oikeasti ”paljon erilaisia arvoja”. Ja siinä se on!

Vastaa

Sähköpostiosoitettasi ei julkaista.