[go: nahoru, domu]

Näkymä

(Ohjattu sivulta View (SQL))

Näkymä (engl. view) on tietokantajärjestelmään määriteltävä johdettava taulu.[1] Näkymä määritellään tietokantakyselynä, jolla on yksilöllinen nimi. Näkymät ovat siten virtuaalisia tulosjoukkoja (tauluja), koska niiden tieto kerätään fyysisesti tietokannassa olevista tauluissa (base tables, physical tables) olevista tiedoista. Joissakin tietokantajärjestelmissä näkymät voivat olla myös väliaikaisia, eli ne poistetaan istunnon päätteeksi.

Tavallisen näkymän kysely ajetaan joka kerta kun sitä (näkymän tunnistetta) kutsutaan. Näin ollen näkymien data on ajantasaista.

Näkymien tarjoamia etuja ja hyviä puolia ovat mm:

  • Yksinkertaistaa kyselyjen tekemistä kun kyselyn tulosjoukkoon päästään käsiksi vain käyttämällä sen nimeä (ks. esimerkki alempana).
  • Yksinkertaistaa asiakkaan (client) työtä, kun tarvittava kysely on jo määritetty tietokantaohjelmiston sisällä. Esimerkiksi ohjelmoijan ei tarvitse osata kirjoittaa haluamaansa SQL-kyselyä tai edes ymmärtää sen toiminnasta.
  • Näkymät vievät hyvin vähän tilaa. Tallentamiseen tarvitaan vain itse kyselyn koodi.
  • Turvallisuus. Tietyille käyttäjille voidaan sallia oikeudet lukea ja/tai hallita näkymiä, ei itse fyysisiä tauluja joista tieto on peräisin.

Esimerkki

muokkaa
Fyysinen taulu (henkilot)
id etunimi sukupuoli syntymavuosi
1 Aatu M 1991
2 Bella N 1992
3 Caro N 1993
4 Daniel M 1994
5 Elli N 1950

Näkymän (nimeltä naiset), jonka tulosjoukko sisältää vain naispuoliset taulun henkilot rivit, luominen onnistuisi seuraavasti:

CREATE VIEW naiset AS SELECT * FROM henkilot WHERE sukupuoli='N';

Kun näkymä on onnistuneesti luotu tietokannanhallintajärjestelmään, voidaan tulosjoukkoon viitata käyttäen näkymän nimeä. Esimerkiksi seuraavan kyselyn tuloksessa olisi vain yksi rivi jonka avain on ID 3.

SELECT * FROM naiset WHERE syntymavuosi >= 1993;

Materialized View

muokkaa

Näkymä, jonka data muodostetaan esimerkiksi kerran vuorokaudessa ja jonka data siten tallennetaan fyysisenä kopiona, kutustaan Materialized View:ksi (ei virallista suomenkielistä termiä).[2] Tällaisen näkymän etu on puhtaasti suoritusnopeudessa, sillä näkymän kyselyä ei ajata joka kerta kun sitä kutsutaan, vaan sama tulosjoukko voidaan antaa nopeasti tietokantaohjelmiston muistista. Fyysisen näkymän haittapuolena on sen antama mahdollisesti epäajantaisenen tieto, mutta se soveltuu hyvin tilanteiisiin joissa tiedon ei tarvitse olla täysin ajantasaista. Materialisoitu näkymä voidaan uudelleenlaskea esimerkiksi kerran vuorokaudessa.

Esimerkkitilanne voisi olla tilanne, jossa vuorokauden myyntitilastot tallennetaan fyysiseen näkymään. Fyysinen näkymä koostetaan siten kerran vuorokaudessa. Fyysinen tallentaminen on laskennallisesti tehokkaampaa, sillä vanhat myyntitilastot tuskin muuttuvat, joten yhteenvedon tallentaminen on hyödyllisempää fyysisesti, kuin että se laskettaisiin joka kerta erikseen.

Lähteet

muokkaa
  1. Näkymät cs.helsinki.fi. Viitattu 26.6.2019.
  2. PostgreSQL: Documentation: 9.3: Materialized Views www.postgresql.org. Viitattu 8.8.2018. (englanniksi)