Joukahaisen tietokannan sisällöstä tehdään automaattisesti kopio joka yö. Uusin kopio löytyy aina tiedostosta joukahainen.pgdump ja vanhempia kopioita voi tutkia hakemistosta pgdumps. Vaikka tarkoitus onkin, että Joukahaista pystyy kaikessa normaalissa käytössä käyttämään www-liittymän kautta, koko tietokannan käsittelystä omalla koneella voi joissain tilanteissa olla hyötyä:
- Www-liittymän hakutoiminnot ovat toistaiseksi jossain määrin rajoittuneita, eikä hakutuloksia ole saatavissa muissa muodoissa kuin html-listana ja XML-muodossa.
- Joitakin hyödyllisiä hakutyyppejä ei ole mahdollista toteuttaa järkevästi www-liittymän avulla. Esimerkiksi hakuehtoja saman tietokantataulun eri tietueiden välillä on hyvin vaikea esittää "graafisesti", mutta niiden ilmaiseminen SQL-kielellä on suhteellisen helppoa. Tällainen haku voisi olla esimerkiksi listaa kaikki sanat, joissa sanan alkuosa on jokin toinen sana. Mahdollisuutta tehdä suoria SQL-hakuja ei voida kuitenkaan lisätä www-liittymään tietoturvasyistä. Monet tällaiset haut voivat myös viedä paljon prosessoriaikaa, jolloin on parempi että ne tehdään omalla koneella eikä palvelimella, joka palvelee samanaikaisesti monia käyttäjiä.
- Jotkut voivat olla kiinnostuneita rakentamaan omia, Joukahaisen tietoja käyttäviä sovelluksia. Näitä on hyvä ainakin alkuvaiheessa testata omilla tietokantakopioilla, vaikka valmiita toimintoja sitten liitettäisiinkin osaksi Joukahaista.
Julkisesti saatavilla olevat kopiot ovat käytettävissä kokonaisuudessaan samalla lisenssillä kuin Voikko (GPL:n versio 2 tai uudempi). Myös julkinen osa käyttäjien tiedoista (käyttäjätunnus, nimi ja yhteys muutostietoihin) tulee tämän tietokannan mukana. Sen sijaan esimerkiksi sähköpostiosoitteet, salasanat, käyttöoikeustiedot ja tiedot viimeisestä kirjautumisajankohdasta eivät kuulu näihin julkisiin tietoihin, ja niitä säilytetään muualla.
Kuinka päästä alkuun?
Tämän ohjeen tarkoitus ei ole toimia perinpohjaisena oppimateriaalina tiedonhallintajärjestelmien käyttöön. Seuraavassa on vain vihjeitä, kuinka päästä liikkeelle. Ensimmäisenä on asennettava tarvittava tietokantaohjelmisto. Joukahaisen käytössä on PostgreSQL versio 13, joten tarvitset tämän tai uudemman version. Kun ohjelmisto on asennettu, suorita seuraavat toimenpiteet:
- Siirry käyttäjäksi postgres ja anna komento psql template1
- Päädyt PostgreSQL-päätteeseen, jossa pitää suorittaa seuraavat komennot (korvaa käyttäjänimi
aku koneellasi käyttämällä käyttäjätunnuksella):
template1=# create role joukahainen; CREATE ROLE tempalte1=# create user aku; CREATE ROLE template1=# grant joukahainen to aku; GRANT ROLE template1=# create database joukahainen with template template0; CREATE DATABASE template1=# \q
- Edelleen käyttäjänä postgres, kopioi Joukahaisen sisältö juuri luomaasi tietokantaan komennolla pg_restore -d joukahainen /tmp/joukahainen.pgdump Tämä antaa liudan varoituksia, joissa sanotaan mm. ERROR: role "hatapitk" does not exist. Tämä johtuu siitä, että alkuperäisessä tietokannassa on sen varmuuskopiointiin käytetty käyttäjätunnusta "hatapitk" jota omassa PostgreSQL-asennuksessasi ei todennäköisesti ole. Nämä varoitukset ovat harmittomia.
Nyt tietokannan pitäisi olla käyttövalmis. Voit varmistaa asian antamalla omalla käyttäjätunnuksellasi (yllä "aku") komennon psql joukahainen. Tällöin toivottavasti päädyt PostgreSQL-päätteeseen. Siellä voit antaa esimerkiksi komennon select count(*) from word; jonka pitäisi tulostaa tietokannassa olevien sanatietueiden kokonaismäärä. Jos näin tapahtuu, on asennus valmis ja tietokanta käytettävissä hakuja (ja muutoksia) varten.
Myöhemmin tietokannan sisällön voi päivittää poistamalla vanhan sisällön ja tuomalla tuoreemman sen tilalle. Käyttäjänä postgres suorita:
template1=# drop database joukahainen; DROP DATABASE template1=# create database joukahainen with template template0; CREATE DATABASE template1=# \q
jonka jälkeen annetaan jälleen komento pg_restore -d joukahainen /tmp/joukahainen.pgdump.
Tärkeimmät taulut
word
Taulu word sisältää sanatietueet. Word-taulun oleellisimmat sarakkeet ovat seuraavat:
Nimi | Tyyppi | Huomioita |
---|---|---|
wid | integer | Avainkenttä, käytetään sanojen tunnistamiseen mm. URL-osoitteissa. |
word | character varying | Varsinainen sana |
class | integer | Sanaluokka, viittaus tauluun wordclass(classid) |
attribute
Taulu attribute sisältää tiedot Joukahaisen tuntemista sanoja kuvaavista attribuuteista (siis lipuista ja tekstikentistä). Attribute-taulun oleellisimmat sarakkeet ovat seuraavat:
Nimi | Tyyppi | Huomioita |
---|---|---|
aid | integer | Avainkenttä, attribuutin tunniste. |
descr | character varying | Attribuutin kuvaus |
type | integer | Attribuutin tyyppi, viittaus tauluun attribute_type(type) |
string_attribute_value
Taulu string_attribute_value sisältää tiedot sanojen tekstikenttien arvoista. Huomaa, että jos sanan jokin tekstikenttä on tyhjä, sitä vastaava tietue puuttuu tästä taulusta. Koska Joukahaisen tekstikentissä ei tunneta eroa puuttuvan arvon ja nollamittaisen merkkijonon välillä, tässä taulussa olevat tietueet sisältävät aina vähintään yhden merkin mittaisen merkkijonoarvon. Taulun oleellisimmat sarakkeet ovat seuraavat:
Nimi | Tyyppi | Huomioita |
---|---|---|
wid | integer | Sanan tunniste, viittaus tauluun word(wid) |
aid | integer | Tekstikentän tunniste, viittaus tauluun attribute(aid) |
value | character varying | Tekstikentän arvo |
flag_attribute_value
Taulu flag_attribute_value sisältää sanoille asetetut liput. Jos taulussa on sanan ja lipun yhdistävä tietue, lippu on asetettuna, muutoin se ei ole asetettuna. Taulun oleellisimmat sarakkeet ovat seuraavat:
Nimi | Tyyppi | Huomioita |
---|---|---|
wid | integer | Sanan tunniste, viittaus tauluun word(wid) |
aid | integer | Lipun tunniste, viittaus tauluun attribute(aid) |
related_word
Taulu related_word sisältää sanojen kirjoitusasut. Oleellisimmat sarakkeet ovat seuraavat:
Nimi | Tyyppi | Huomioita |
---|---|---|
wid | integer | Sanan tunniste, viittaus tauluun word(wid) |
related_word | character varying | Kirjoitusasu |
Käyttöesimerkkejä
Alla on esimerkkejä muutamista hyödyllisistä kyselyistä. Jos SQL-kieli ei ole hallussa, kannattaa tutustua PostgreSQL:n laadukkaaseen dokumentaatioon, erityisesti sen Tutorial-osuuteen.
- Luettele kaikki sellaiset kahden eri sanan parit, joiden viisi viimeistä kirjainta ovat samat ja
jotka kuuluvat samaan sanaluokkaan, mutta joilla on eri taivutusluokat. Sanoja, jotka kuuluvat
taivutusluokkiin "paperi", "risti" tai niiden astevaihtelullisiin versiohin ei huomioida.
joukahainen=> select w1.word, w2.word joukahainen-> from word w1, word w2, string_attribute_value s1, string_attribute_value s2 joukahainen-> where length(w1.word) > 5 and length(w2.word) > 5 joukahainen-> and substr(w1.word, length(w1.word)-4) = substr(w2.word, length(w2.word)-4) joukahainen-> and w1.class = w2.class joukahainen-> and w1.wid = s1.wid and w2.wid = s2.wid joukahainen-> and s1.aid = 1 and s2.aid = 1 joukahainen-> and s1.value <> s2.value joukahainen-> and s1.value not like 'paperi%' and s1.value not like 'risti%' joukahainen-> and w1.word < w2.word;
- Luettele käyttäjät, jotka ovat tehneet tietokantaan muutoksia (muita kuin uusien sanojen
lisäyksiä) järjestettynä muutostapahtumien määrän mukaan laskevassa järjestyksessä. Näytä myös
käyttäjien muutostapahtumien sekä lisättyjen kommenttien määrä. Yksittäiseksi tapahtumaksi
tulkitaan kaikki yhdellä "Tallenna muutokset"-nappulan painalluksella tehdyt muutokset ja kommentit.
joukahainen=> select u.uname, u.firstname, u.lastname, count(*) as events, count(e.comment) as comments joukahainen-> from event e, appuser u joukahainen-> where e.euser = u.uid joukahainen-> group by u.uname, u.firstname, u.lastname joukahainen-> order by events desc;
Tämän sivun sisältö on käytettävissä GPL 2.0 -lisenssillä, tai vaihtoehtoisesti Creative Commons Attribution-ShareAlike 2.5 -lisenssillä. Käyttö ja levitys on sallittu myös molempien mainittujen lisenssien uudempien versioiden ehdoilla.