Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: XML vs relaatiotietokannat

Triskal [17.01.2010 16:38:38]

#

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.

Metabolix [17.01.2010 17:31:33]

#

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_iderikoisuusarvo
1kuvajeejee.jpg
7videosorsa.mpg

Riippuu toki datasta, onko se tietokantaan sopivaa. Tietokannan taulun on tarkoitus listata useita samanlaisia asioita.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta