Viisiosaisen artikkelisarjamme neljännessä osassa käsittelemme tietokantoja. Aiemmissa artikkeleissa käytiin läpi WordPressin perusteet, teemat sekä lisäosat.
Mikä on tietokanta ja miten se liittyy WordPressiin?
Tietokanta on järjestetty tallennettujen tietojen kokoelma, johon ohjelmisto, tässä tapauksessa WordPress, tallentaa tietoja ja hakee sieltä niitä. WordPress-sivun tietokanta sisältää kaiken tärkeän tiedon sivuston osalta ja on sen myötä välttämätön sivuston toiminnan kannalta. Myös muut julkaisujärjestelmät kuten Joomla! ja Drupal tarvitsevat taustalleen vähintään yhden vapaan tietokannan.
WordPress käyttää PHP-ohjelmointikieltä tietojen tallentamiseen ja hakemiseen tietokannasta. WordPress tallentaa tietokantaan esimerkiksi sivuja, julkaisuja, käyttäjiä ja kommentteja käsitteleviä tietoja. WordPress tukee virallisesti kahta eri tietokantaa, MariaDB:tä ja MySQL:ää. Myös muita tietokantoja voidaan käyttää WordPressin kanssa, mutta niille ei ole virallista tukea. Verrattain suosittu ei-tuettu tietokanta on PostgreSQL.
Tavallisen käyttäjän ei tarvitse olla tietokantojen asiantuntija luodakseen ja hallinnoidakseen WordPress-sivustoa, mutta perustietämys auttaa WordPressin toiminnan ymmärtämisessä sekä vianrajauksessa.
WordPressin tietokannan käyttöönotto ja rakenne
Tietokannan nimi, isäntänimi, käyttäjätunnus ja salasana määritetään WordPress-asennuksen yhteydessä ja tallennetaan wp-config.php-konfiguraatiotiedostoon. Käyttäjän ei tarvitse itse tehdä muutoksia tietokantaan, vaan WordPress hoitaa tietokannan hallinnoimisen itsenäisesti saatuaan asennuksen yhteydessä tiedot siitä.
WordPress-asennuksen yhteydessä luotavassa tietokannassa on 12 oletustaulukkoa, joista jokainen sisältää tietoja eri WordPressin osa-alueista, ominaisuuksista ja toiminnallisuuksista. Taulukoista voi hyvin päätellä, mitä sivuston osia kukin taulukko sisältää.
wp_options
wp_options-taulukko sisältää useimmat koko WordPress-sivuston laajuisista asetuksista, joita ovat esimerkiksi sivuston url-osoite, admin-käyttäjän sähköposti, asennetut lisäosat ja aikamuoto. Kaikki WordPress-hallintapaneelissa näkyvät asetukset on tallennettu tähän taulukkoon. Lisäksi myös moni WordPressin lisäosa käyttää tätä taulukkoa lisäosan asetusten tallentamiseen.
wp_comments
wp_comments-taulukkoon tallennetaan nimensä mukaisesti julkaisujen ja sivujen kommentit, myös julkaisemattomat. Itse kommenttien lisäksi taulukosta löytyy myös esimerkiksi kommenttien välinen hierarkia.
wp_commentmeta
wp_commentmeta-taulukko sisältää WordPress-sivuston kommenttien metadatan. Esimerkkinä tähän taulukkoon tallennetusta tiedosta on kommenttien status (hyväksytty, odottaa hyväksyntää jne).
wp_posts
Tähän taulukkoon tallennetaan sivuston sisältöön liittyvä tieto, esimerkiksi julkaisut ja sivut. Taulukko sisältää lisäksi sivuston navigaatiovalikon tiedot, mediatiedostoja sekä lisäosien käyttämiä liitteitä, joita ovat esimerkiksi kuvat ja sisältötiedot.
wp_postmeta
wp_postmeta-taulukko sisältää meta- eli lisätietoa sivuista ja julkaisuista wp_usermeta-taulukon tavoin. Jotkin lisäosat käyttävät taulukkoa lisäosan tietojen tallennukseen.
wp_terms
wp_terms-taulukkoon tallennetaan julkaisujen, sivujen ja linkkien kategoriat ja tagit. WordPress lajittelee sivuston sisällön ja tiedot samankaltaisuuden perusteella luokkiin, joita kutsutaan taksonomioiksi. Esimerkiksi kategoriat ja tagit ovat taksonomioita ja jokainen niiden sisältämä yksittäinen kategoria tai tagi on termi.
wp_termmeta
Tähän taulukkoon tallennetaan termien meta- eli lisätietoja. Esimerkiksi WooCommerce käyttää tätä taulukkoa tuotteiden ominaisuuksien ja kategorioiden tallentamiseen.
wp_term_relationships
Tämän taulukon avulla hallinnoidaan julkaisutyyppien ja wp_terms-taulukossa olevien termien välistä suhdetta.
wp_term_taxonomy
Taulukko määrittää taksonomiat wp_terms-taulukon termeille.
wp_users
wp_users-taulukko sisältää rekisteröityjen käyttäjien tietoja, kuten käyttäjänimiä, kryptattuja salasanoja, sähköpostiosoitteita ja rekisteröitymisajankohtia.
wp_usermeta
Sisältää nimensä mukaisesti meta- eli lisätietoa sivuston rekisteröidyistä käyttäjistä laajentaen wp_users-taulukossa olevia tietoja. Esimerkiksi käyttäjän etunimi tallennetaan wp_usermeta-taulukkoon wp_users-taulukon sijaan.
wp_links
Taulukko sisältää tietoa sivuston sisältämistä mukautetuista linkeistä. Wp_links on vanhentunut ja poistunut käytöstä muutamia vanhoja sitä hyödyntäviä lisäosia lukuun ottamatta.
Huomaathan, jokaisen kohdan edessä oleva “wp_” on WordPressin oletusarvoinen tietokantataulukon etuliite, jonka voi vaihtaa halutessaan. WordPressin tietokantataulukon etuliitteen vaihtaminen parantaa tietoturvaa, sillä tietokantojen massahakkerointiyritykset kohdistuvat luonnollisestikin yleisimpään wp_-etuliitteeseen.
Lopuksi esittelemme vielä joidenkin WordPress-sivustoilla käytössä olevien tietokantojen ominaisuuksia. On kuitenkin tärkeää muistaa, että vain MySQL ja MariaDB ovat virallisesti tuettuja WordPressissä.
MySQL
MySQL on yksi suosituimmista web-palveluiden relaatiotietokannoista ja maailman toiseksi suosituin tietokannan hallintajärjestelmä. MySQL on kirjoitettu C- ja C++-ohjelmointikielillä ja perustuu avoimeen lähdekoodiin. MySQL:n ensimmäinen versio julkaistiin jo vuonna 1996 ja se on nykyään Oraclen omistuksessa. MySQL-tietokantaa käyttävät esimerkiksi Twitter, Facebook, Amazon ja Uber.
MariaDB
MariaDB on MySQL:ään pohjautuva relaatiotietokantajärjestelmä ja sen ensimmäinen versio julkaistiin vuonna 2009. MariaDB:n pääkehittäjänä toimii toinen MySQL:n kehittäjistä, suomalainen Michael ”Monty” Widenius. MariaDB on täysin yhteensopiva MySQL:n kanssa, minkä vuoksi MariaDB toimii MySQL:n täydellisenä korvaajana. MariaDB:tä pidetään yleisesti MySQL:ää nopeampana ja tehokkaampana ja sen käyttäjämäärä on kasvussa. MariaDB on käytössä esimerkiksi Wikipedialla ja Googlella.
PostgreSQL
PostgreSQL on MySQL:n ja MariaDB:n tapaan avoimeen lähdekoodiin perustuva relaatiotietokanta. PostgreSQL on käytössä esimerkiksi Netflixillä ja Instagramilla. PostGreSQL:n ensimmäinen versio julkaistiin vuonna 1996 ja sen suosio on yhä kovassa kasvussa. PostgreSQL ei ole virallisesti tuettu WordPressissä, mikä voi aiheuttaa ongelmia esimerkiksi lisäosien kanssa.
Redis
Redis poikkeaa muista esitellyistä tietokannoista sillä, että se ei ole perinteinen relaatiotietokanta vaan NoSQL-tietokanta. NoSQL-tietokannat skaalautuvat horisontaalisesti* huomattavasti perinteisiä relaatiotietokantoja paremmin, mikä parantaa suorituskykyä. Redis toimii myös välimuistittajana, mikä pienentää tietokannan kyselyyn käytettyä aikaa merkittävästi. Ensimmäinen Redis-versio julkaistiin vuonna 2009 ja tällä hetkellä Redis on maailman 6. eniten käytetty tietokanta. Redis ei ole virallisesti tuettu WordPressissä mutta sen suosio on jatkuvassa kasvussa sen nopeudesta ja suorituskyvystä johtuen.
*Horisontaalisella skaalautumisella tarkoitetaan sitä, että resurssitarpeen kasvaessa palvelinten määrää kasvatetaan järjestelmän toimiessa yhtenä yksikkönä, kun taas vertikaalinen skaalautuminen tarkoittaa yksittäisen palvelimen suorituskyvyn parantamista resurssitarpeen niin vaatiessa.