Helöy
minä kun en kaikkea tiedä mitä vaikkapa MySQL:n konepellin alla tapahtuu, niin kysyn teiltä enempi tietäviltä, mitä mieltä olette tämmöisestä jutusta. Kyse on siitä, kumpaa kannattaa ennemmin käyttää. Otsikossa lukee relaatiotietokannat, mutta käytännössähän se tarkoittaa MySQL:ää, koska se on niin laajalti käytetty tässä kontekstissa.
Puuhaan PHP:lla järjestelmää, joka kääntää XML:stä XHTML:ää ja parhaimmillaan XHTML-sivu rakennetaan melko pienistä osista. Tässä kohtaa on alkanut tuntua vähän väärältä muodostaa XML:ää tietokantaan tallennetun datan pohjalta kun saman datan voisi tallentaa XML:nä suoraan, parsia PHP:llä websivuksi, mahdollisesti välimuistittaa valmis sivu ja esittää se käyttäjälle.
Käsitykseni asian eri puolista tähän mennessä:
- XML on intuitiivinen ja looginen tapa tallentaa tietoa
- Molempien implementaatio PHP:tä käyttävissä www-ratkaisuissa kutakuinkin yhtä helppoa. (Tiedon tallentaminen tietokantaan on musta ollut aina jotenkin vaivalloista, entiämiks)
- XML:n joustavuus. Ks. koodiesimerkki1: kaavamaisessa rakenteessa voi olla poikkeuksia. Tietokantataulussa niille pitäisi tehdä jokaiselle oma kenttä, eli kaavaa pitää laajentaa sisältämään poikkeukset, ts. poikkeuksia ei sallita.
- XML on helppo kuljettaa paikasta toiseen, esim. paikallisesti rakennettun MySQL:ää hyödyntävän saitin julkaisu (MySQL-osuus) on ärsyttävää
- Palvelinresurssien käyttö vs MySQL? Onko tiedonhaku tietokannasta a) nopeampaa, b) resurssipihimpää kuin XML-tiedoston parsiminen (XML-filun koko tietysti vaikuttaa - kai)?
- SQL-datan kohdalla datan "järjestys" menettää merkityksensä. SQL:llä on helpompi järjestää dataa eri kriteerien mukaan
Koodiesimerkki1:
<uutinen> <kirjoittaja>Mä</kirjoittaja <pvm>12.12.2012</pvm> <teksti>Maailma loppuu!</teksti> </uutinen> <uutinen> <kirjoittaja>Mä</kirjoittaja <pvm>13.12.2012</pvm> <teksti>Maailma ei loppunutkaan!</teksti> <kuva>elossa_ollaan.jpg</kuva> </uutinen>
Tämmöisiä. Kommentoikaa pliis.
Lukitseminen ja datan eheys. SQL-palvelin huolehtii, että mitään tietoa ei muuteta juuri, kun joku muu yrittää lukea siitä. XML-tiedostojen kanssa tämä pitäisi hoitaa itse. Lisäksi datan pituuden muuttuessa täytyy muokata koko tiedoston rakennetta.
Datan tiiviys. XML-tiedostossa on aivan mielettömästi ylimääräistä dataa, nimittäin toistuvat tagit. Laske vaikka esimerkistäsi. Lisäksi XML-tiedoston formaatin johdosta todellakin parsiminen kestää erittäin kauan suhteessa tietokannan vaatimusten mukaan suunniteltuun tietokantaformaattiin.
Muistinkäyttö ja nopeus. XML-tiedoston kohdalla jokaisen PHP-prosessin pitäisi käydä läpi koko tietokantatiedosto. SQL-palvelin toimii juuri päinvastoin: palvelin tietää kaiken, PHP:lle kerrotaan vain olennaiset asiat. Lisäksi vielä usein toistuvien kyselyiden tulokset ovat SQL-palvelimella välimuistissa.
SQL-ominaisuudet. Onko järkeä toteuttaa itse uudestaan tietotyyppien tarkistuksia, viite-eheystarkistuksia, hakukyselyitä ynnä muuta SQL:n perustoimintoja?
Vetosit tuohon erikoiskenttäasiaan. Jos noille todella on tarvetta, voidaan tehdä erillinen taulu erikoisuuksille:
uutinen_id | erikoisuus | arvo |
---|---|---|
1 | kuva | jeejee.jpg |
7 | video | sorsa.mpg |
Riippuu toki datasta, onko se tietokantaan sopivaa. Tietokannan taulun on tarkoitus listata useita samanlaisia asioita.
Aihe on jo aika vanha, joten et voi enää vastata siihen.