Forest header image

Symfony Finland
Random things on PHP, Symfony and web development

Graafitietokannat ja sisällönhallinta

Yleisissä avoimen lähdekoodin sisällönhallinnan tuotteissa sisältö mallinnetaan ja tallennetaan taustajärjestelmässä relaatiotietokantoihin. Näitä tuetaan tuetaan tarvittaessa indeksoivalla hakukoneella kuten Solr tai ElasticSearch. Vastaavalla mallilla toimivia yleisiä järjestelmiä ovat esimerkiksi WordPress, Drupal ja eZ Publish.

Toisinaan tukena voidaan käyttää myös ns. dokumenttitietokantoja kuten MongoDB. Viime vuosina näiden rinnalle on nousseet graafitietokannat. Näitä ei vielä ole laajalti käytössä suosituissa avoimen lähdekoodin sisällönhallinnan tuotteissa, mutta niiden käyttäminen olisi täysin mahdollista.

Suosittuja avoimen lähdekoodin graafitietokantoja ovat esimerkiksi:

Mikä on graafitietokanta?

Graafitietokanta on tietokanta joka käyttää verkkoteoriaa (eli graafiteoriaa) semanttisten kyselyiden rakentamiseen pisteiden (tai solmujen) ja niiden liitosten välillä. Wikipedian englanninkielinen kuva esittää graafitietokannat tavalla joka on välittömästi tuttu kenelle tahansa kuka on joskus mallintanut jonkinlaisia objekteja ja niiden välisiä sidoksia:

Graph Databases

Normaalisti puumaisen rakenteen ja taksonomioiden avulla mallinnetun sisällön kuvaaminen graafimallissa mahdollistaa monia uusia asioita. Graafiteoriaa hyödyntävää tietokantaa varten tarvitaan tietenkin erillinen kyselykieli. Esimerkiksi Neo4j graafitietokannassa käytetään Cypher kieltä.

Graafitietokannat ja sisällönhallinta käytännössä

Graafitietokannat ovat yleisessä käytössä ympäri maailmaa. Esimerkiksi Google, Facebook ja Twitter hyödyntävät omia graafitietokantojaan laajalti, osittain niiden toiminta ei edes olisi mahdollista ilman tätä teknologiaa. Mediaseksikkäiden internet-yritysten lisäksi graafitietokantoja käytetään laajalti esimerkiksi lentoliikenteen järjestämisessä sekä liiketoiminnan ja rahoituksen mallintamisessa.

Avoimen lähdekoodin sisällönhallinnan piirissä on olemassa teknologiaa käyttäviä tuotteita. Sisällönhallinta on kuitenkin itsessään laaja ja haastava aihepiiri ja kypsän tuotteen rakentaminen ei ole helppo tehtävä - esimerkiksi Drupal sisällönhallinnan versiota 8 on työstetty jo lähes viisi vuotta. Alunperin työn ajateltiin olevan valmis muutamassa vuodessa.

Norjalainen eZ Systems on rakentanut sisältömalliltaan joustavia avoimen lähdekoodin sisällönhallinnan työkaluja jo yli 15 vuotta. Järjestelmässä on perinteisesti ollut erinomainen integrointi indeksoivaan Solr hakukoneeseen. Kesällä 2015 julkaistiin tuore versio tästä hakukoneesta.

Tuore Solr integraatio on rakennettu sisällönhallintajärjestelmän uuden sukupolven, eZ Platformin rajapintoja käyttäen. Järjestelmän avoimen lähdekoodin ja hyvien rajapointojen avulla on mahdollista rakentaa jo olemassaolevasta sisällöstä kattava mallinnus graafitietokantaan.

Graafitietokantojen mahdollisuudet sisällönhallinnassa

Mikäli tallennetussa sisällössä on riittävästi tietoja eri sisältöjen keskinäisistä liitoksista, voidaan niistä rakentaa graafimalli johon on mahdollisesta tehdä aidosti lisäarvoa tuovia kyselyitä. eZ Publishin sisältömalli on perinteisesti hyvin joustava ja semanttisesti toimiva - järjestelmä tallentaa kaiken sisällön (varsinainen sisältö, käyttäjät, käyttäjäryhmät, kuvat, jne.) samankaltaisina objekteina.

Objekteiden välisistä liitoksista pidetään automaattisesti yllä viittaustietokantaa. Mikäli esimerkiksi tiettyä kuvaa käytetään sisältösivuilla, tallentuu tästä automaattisesti viittaus - tai viittauksia, mikäli kuvaa käytetään useissa eri sisällöissä. Viitteiden lisäksi järjestelmän sisältömalli tukee täydellisesti sisältöjen kieliversioita - tästä syntyy yhä syventävää metadataa sisällöstä.

Rikas sisältömalli mahdollistaa graafitietokannan luonnin olemassaolevasta sisällöstä

Ylläoleva tieto tallennetaan relaatiotietokantaan ns. masterdatana, jonka kyselyt voivat etenkin suurilla sisältömallilla olla erittäin hitaita. Mikäli sisältömallista rakennetaan graafimalli, ovat siihen tehtävät kyselyt huomattavan nopeita. Malliin voidaan eZ:n sisältömallista tallentaa ainakin:

  • Sisältöjen väliset liitokset (automaattiset sekä käsin tehtävät)
  • Sisällön puurakenne (lapsi-vanhempi, jne.)
  • Osiot, joilla voi määritellä abstrakteja sisältöjä määriteltyihin ryhmiin
  • Tiedot sisältöä luoneista ja muokanneista käyttäjistä
  • Taksonomiat (tagit ja kategoriat)
  • Käyttäjäoikeudet ja omistussuhteet
  • Sijaintidata (sisällölle määritellyt koordinaatit)

eZ Publish (ja eZ Platform) ovat käyttäneet yllämääriteltyä sisältömallia vuodesta 2003. Jo olemassa olevasta sisältötietokannasta voidaan siis luoda kattava graafimalli jota vasten voidaan tehdä aivan uudenkaltaisia kyselyitä. Erimerkiksi olisi melko triviaalia kirjoittaa kysely joka listaa artikkelit joissa on käytetty videoita jonka on luonut tietyn käyttäjäryhmän jäsen jonka kuva on mustavalkoinen.

Graafitietokantakyselyjen mahdollisuudet ja tulevaisuus

Edellä mainittu kysely on täysin fiktiivinen ja luultavasti melko hyödytön. Tarkoitus on lähinnä osoittaa että graafimallia käyttävään sisältötietokantaan on mahdollista tehdä uudenlaisia kyselyitä. Nämä mahdollistavat täysin uudenlaisia näkymiä jo olemassaolevaan dataan.

Graafitietokannan ei tarvitse myöskään olla eksklusiivisesti sisällönhallintajärjestelmän käytössä, vaan esimerkiksi CRM-järjestelmän tietoja sekä verkkokauppan ostoshistoriaa voidaan käyttää rikastamaan jaettua graafitietokantaa. Tämä avaa jälleen lukemattomia uusia mahdollisuuksia kyselyiden ja päätösten tekemiseen.

Kun avoimen lähdekoodin tietokannat kehittyvät, niin sisällönhallinnan käyttäjät voivat tehdä itse haluamiaan kyselyitä ilman kehittäjän rakentamaa monimutkaista relaatio- tai dokumentitietokantakyselyä. Facebookin haku on erinomainen esimerkki yksinkertaisesta graafitietokantakyselystä.

Graph Databases

On huomionarvoista että Neo4j graafitietokanta luotiin alunperin sisällönhallinnan järjestelmää varten. Ja se ei ole sattumaa.


Written by Jani Tarvainen on Tuesday September 1, 2015
Permalink -

« WordPress, Drupal ja eZ Publish sisältömigraatiot - eZ Platform: Sisällönhallintaa Symfony sovelluskehyksellä »