Oliotietokannat Nääsvillen Oliopäivät 2004 15.12.2004 Pekka Kähkipuro Kehitysjohtaja, FT pekka.kahkipuro@sysopen.fi
Oliotietokanta Idea: pysyvän tiedon tallentaminen suoraan oliomuodossa Tietosisältö ja viitteet tallentuvat sellaisenaan Otettavissa käyttöön luokka kerrallaan perinnän, attribuutin tms. kautta Lisäksi taustalla skeema, jonka pohjalta luodaan indeksejä jne. Käyttö on helppoa Persistentin olion käyttö tapahtuu kuin minkä tahansa muun olion käyttö Tyypillisesti myös käsittelylogiikka tallentuu ja sitoo toteutukset johonkin/joihinkin ohjelmointikieliin Parhaimmillaan Täysin tuntumaton ympäristöön (kieli + kehikko) uppoava malli Mukaan voi upottaa mm. transaktioiden toteutuksen, hajautuksen, välimuistit jne. Pahimmillaan Ohjelmointityylin tiukasti rajaava kehikko, jonka sivuvaikutuksena saadaan pysyväistiedon tallennuskyky 15.12.2004 Copyright SysOpen 2
Relaatiomallin haasteita Todellisuuden, mallin ja säilytystavan ero Viitteet Viite-eheysongelmat Suorituskyky Kannan virittely SQL:n hankaluus Eheysongelmat Triggerit ja skriptit Kuvaus relaatiokannan näkökulmasta Todellisuus on luonnollisesti mallinnettavissa olioina eikä suinkaan kolmannen normaalimuodon relaatioina Relaatiomallissa viitteet eksplisiittisesti näkyvissä ja käsiteltävissä (= myös sotkettavissa) Eksplisiittiset viitteet ja niiden väärinkäyttö tuovat eksplisiittisen viite-eheysongelman Tiedon pilkkominen, vieminen relaatioihin, haku ja kasaaminen johtaa merkittäviin suorituskykyhaasteisiin (autovertaus). Merkittävät suorituskykyhaasteet ovat johtaneet laajoihin virittelyhommiin Todellinen käyttö edellyttää ei-triviaaleja kyselyitä, joiden tekijältä edellytetään jopa kannan optimointimekanismien tuntemusta; Tiettyä kannan kohtaa käytetään usein monesta kohtaa sovellusta, näiden erilainen logiikka johtaa usein loogisiin eheysongelmiin Osa käsittelystä on sittenkin pakko viedä tiedon lähelle, ja käyttöön on otettukin oliomaisia mutta hankalia konsepteja 15.12.2004 Copyright SysOpen 3
OODB:n ratkaisuja Todellisuuden, mallin ja säilytystavan ero Viitteet Viite-eheysongelmat Suorituskyky Kannan virittely SQL:n hankaluus Eheysongelmat Triggerit ja skriptit Kuvaus OODB-teknologian ratkaisusta Työstä jää yksi vaihe pois, kun ohjelmoinnin malli on suoraan myös pysyväistiedon malli Viitteet näkyvät suoraan ohjelmointiviitteinä ja kannan viitteet syntyvät automaattisesti Ongelmat katoava kun koko homma on automatisoitu Merkittävästi tehokkaampi (paitsi ad-hoc-kyselyissä) Miksi viritellä, kun suorituskyky on riittävä? Hankalat kyselyt tehdään kannassa navigoimalla, ja merkittävästi voimallisemmilla välineillä kuin SQL Olion dataa käsittelee pääsääntöisesti vain olio itse, ja eheysongelmat vähenevät merkittävästi Nämä kömpelöt konseptit katoava, tilalle tulee normaalia olio-ohjelmointia 15.12.2004 Copyright SysOpen 4
OODB:n haasteita Nykyiset kannat Relaatiomallin riittävyys Kaupalliset syyt Liika sidonnaisuus ohjelmointikieleen Ohjelmointikielten puutteellisuus Ad-hoc-kyselyt Standardi Relaatiokantojen kehitys Miksi OODB:tä ei voikaan käyttää Pitkä elinkaari, tiedon epäeheys Miksi parantaa kokonaisuutta kohdasta, joka ei sittenkään ole suorituskyvyn tai tuottavuuden pahin pullonkaula? Oracle et Co. Isäntäkieli on usein liian tiukasti sidottu kantaan. Toteutuksia löytyy rajallisesti: C++, Java?, C#???, muille aika vähän. Ei valmiita attribuutteja tai koukkuja, joten OODBframework on usein keinotekoisesti liitetty sovellukseen. Edellyttävät ohjelmointia. Kyselykielet useimmiten puuttuvat. Puuttuu, ODMG on kuollut. Uudet versiot helpottavat oliokäsittelyä (ei varsinaisia oliopiirteitä, mutta oliotallennus binäärimuodossa toimii) 15.12.2004 Copyright SysOpen 5