HELIA 1 (19) Luento 3.0 Tietokannan hajautus... 2 Haasteita... 3 Hajautusvaihtoehtoja... 4 Segmentointi... 5 Replikointi... 9 Mobiilitietokannat ja synkronointi... 10 Hajautetun tietokannan idea... 11 Paikallinen autonomisuus... 12 Alustariippumattomuus... 12 Sijainnin tuntumattomuus... 13 Hajautettu tapahtuman käsittely... 14 Hajautuksen hallinta sovelluksessa... 16 Oracle ja hajautus... 17 Tietokantojen identifiointi... 17 Linkit tietokantojen välillä... 18 Sijainnin tuntumattomuus... 19
HELIA 2 (19) Tietokannan hajautus Loogisesti yhteen kuuluvia tietoja, jotka on hajautettu eri tietokoneille / tietokantainstansseihin Ä Jokaisessa sijaintipaikassa on Autonominen tiedon prosessointi Paikallisia sovelluksia, jotka hyödyntävät paikallista tietokantaa Ainakin yksi globaali sovellus, joka tarvitsee tietoja useammasta sijaintipaikasta Ä Tietokantasuunnittelun näkökulma... Edut Ä Tietokannan rakenne vastaa organisaation rakennetta ja toimintaa Ä Hajasijoitettu yritys hajautettu tietokanta... Ä Paikallinen tieto säilytetään paikallisesti ja kaikille yhteinen data on saatavilla globaalisti Esim. pankkijärjestelmä... Å Parempi suorituskyky usein toistuvissa tehtävissä Å Parempi saavutettavuus (<- redundanssi!) Å Paikallinen autonomia Å Skaalautuvuus Haitat Ä Kompleksisuus! (ohjelmiston & hallinnoinnin) Ä Kalleus Ä Tietoliikenteen määrä minimoitava
HELIA 3 (19) Haasteita Ä Hajautetun tietokannan suunnittelu Ä Hajautettujen tapahtumien (kyselyt & päivitykset) hallinta Ä Samanaikaisuuden hallinta hajautetussa ympäristössä Ä Toipumisen hallinta hajautetussa ympäristössä Ä Käyttöjärjestelmien epäyhteensopivuus Ä Tiedonhallintajärjestelmien epäyhteensopivuus SQL Processing Directory Management Distributed DB Design Transaction management
HELIA 4 (19) Hajautusvaihtoehtoja 1. Taulujen hajautus eri (loogiset) taulut eri tietokannoissa 2. Taulun hajautus / Segmentointi / fragmentointi samasta taulusta eri toteutukset eri tietokannoissa ts. useampi taulu toteuttaa yhden loogisen olion 3. Taulun hajautus / Replikointi tiettyjen taulujen kopiointi muihin tietokantoihin Ä Tavoitteena saavutettavuuden parantaminen maantieteellisesti hajautetussa ympäristössä Ä Fragmentointi Ä Replikointi Ä Ratkaistava yhdessä... loogista suunnittelua fyysisen tallennuksen suunnittelua Ä Huom: käsitteistö yhä epäyhtenäinen
HELIA 5 (19) Segmentointi Useampi taulu toteuttaa yhden loogisen tietokantakuvauksen olion Jakaminen minimimäärään erillisiä loogisen taulun R alitauluja, segmenttejä R 1, R 2, R 3,..., R n Segmentit yhdessä sisältävät tarpeellisen informaation alkuperäisen taulun R konstruoimiseen Loogista hajautusta Ä Ei redundanssia! Ä Käyttäjien (ohjelmoijien) todennäköisesti tiedettävä segmentoinnista... Ä Riippuu RDBMS:n tuesta mm. näkymien päivitettävyydestä Ä Voi parantaa suorituskykyä: Ä segmentoidut taulut ovat pienempiä ja siten nopeampia läpilukea Ä hajautetussa ympäristössä tietoliikenteen osuus pienenee
HELIA 6 (19) Horisontaalinen segmentointi Taulun rivien osajoukkoja Ä Rekonstruointi = union
HELIA 7 (19) Vertikaalinen segmentointi Taulun sarakkeiden osajoukkoja (dekompositio) Ä Rekonstruointi = join
HELIA 8 (19) Ä Taulu voidaan segmentoida sekä horisontaalisesti että vertikaalisesti H_ID SUKUNIMI ETUNIMI SYNT_AIKA KOTIKUNTA 4058 Sihvo Heidi 1962 Mänttä 2340 Leppilam Anu 1958 Helsinki pi 5902 Keränen Asko 1962 Helsinki 2898 Tilsa Jukka 1959 Orivesi Vertikaalinen segmentti Horisontaalinen segmentti Segmentoinnin suunnittelu Ä Keskeiset tietokannan käsittelytoimenpiteet ja niissä käytetyt valintaehdot Ä Segmenttien on oltava erillisiä ts. sama rivi ei saa esiintyä kuin yhdessä fragmentissa Ä Suurin mahdollinen segmentti on alkuperäinen taulu R pienin mahdollinen segmentti on 1 rivi Sopiva koko näiden välissä...
HELIA 9 (19) Replikointi Täysi / osittainen replikointi a) Täysi kopio koko tietokannasta kussakin (osa)tietokannassa b) Kriittiset taulut / segmentit kopioidaan Pääesiintymän / samanarvoisten replikointi a) Vain master -esiintymää voi päivittää päivitys vyörytetään muihin esiintymiin joko välittömästi, viivästetysti tai ajastetusti b) Kaikkia esiintymiä voi päivittää, päivitykset vyörytetään muihin esiintymiin Ä Redundantin tiedon hallintaongelma! Replikoinnin ajoitus a) Synkroninen replikointi Tieto kopioidaan kaikkiin sijaintipaikkoihin samassa tapahtumassa b) Asynkroninen replikointi Ensisijaisen esiintymän päivitys ei riipu sen otetaulujen saatavilla olosta (ts. tapahtuma ei peruunnu, jos päivitystä ei voida välittömästi vyöryttää) Ä Toissijaisten kopioiden RDBMS:t huolehtivat päivitysten vyörytyksestä mahdollisimman pian (synkronointi) c) Ajastettu replikointi Tieto kopioidaan ajastetusti kaikkiin sijaintipaikkoihin (pääkopiosta otetauluihin)
HELIA 10 (19) Mobiilitietokannat ja synkronointi Käyttöliittymä Sovelluslogiikka DBMS Käyttöliittymä Sovelluslogiikka DBMS lite DB kiinteä DB Perinteinen Sovellusrakenne Mobiili Sovellusrakenne Ä Mobiilitietokantaan vain tarvittava osa isäntäsovelluksen Tietokannasta Toiminnallisuudesta Ä Synkronointi Asynkroninen replikointi molempiin suuntiin Virhetilanteiden käsittely Konfliktien käsittely
HELIA 11 (19) Hajautetun tietokannan idea 1. Kukin tietokanta on oma itsenäinen kokonaisuutensa 2. Tietokannat toimivat yhteistyössä se. käyttäjä voi käsitellä etätietokannan tietoja ikään kuin ne olisivat paikallisessa / keskitetyssä tietokannassa Ä Tietokannat voivat sijaita myös samassa koneessa... (esim. testi- ja tuotantokanta) Virtuaalinen tietokanta Sovellus näkee tiedot samalla tavalla ts. riippumatta niiden fyysisestä sijainnista Ä Ts. sovellus toimii samoin kuin jos kaikki data sijaitsisi yhdessä fyysisessä koneessa ja yhdessä tietokannassa Ä Tietokantatuotteiden tuki vaihteleva...
HELIA 12 (19) Paikallinen autonomisuus Operaatiot hallitaan ja toteutetaan paikallisesti (suojausten, eheyden valvonta, tilankäyttö,...) Data kuuluu aina johonkin fyysiseen tietokantaan, vaikka voikin olla tavoitettavissa toisesta tietokannasta Toiminta ei riipu minkään muun tietokannan toiminnasta Ä Ei täydellistä itsenäisyyttä, vaan mahdollisimman suuri Päätietokanta vrs. samanarvoiset tietokannat? a) Keskitetty kyselyn ja tapahtuman hallinta sekä tietohakemiston ylläpito b) Tietokannat keskenään tasa-arvoisia; ei päätietokantaa Alustariippumattomuus Käyttöjärjestelmäriippumattomuus Tietoliikenneriippumattomuus DBMS -riippumattomuus Tiedonhallintajärjestelmien tuettava samaa rajapintaa esim. standardi-sql:ää GATEWAY a) Standardi API (JDBC, ODBC) b) Toimittajakohtainen rajapinta joka saa RDBMS-A:n näyttämään RDBMS-B:ltä
HELIA 13 (19) Sijainnin tuntumattomuus Location transparency / independency Käyttäjän / sovellusohjelmoijan ei tarvitse tietää, missä tieto fyysisesti sijaitsee Käyttäjä / sovellusohjelmoija voi toimia ikään kuin kaikki käsiteltävä data olisi paikallista Ä Yksinkertaistaa ohjelmointityötä Ä Uusien tietokantojen lisääminen / olemassa olevien siirtäminen ei vaadi koskemista sovellusohjelmistoon Segmentoinnin tuntumattomuus Segmentation / Fragmentation independency / transparency Saman taulun eri rivit eri fyysisissä tietokannoissa tarkoituksenmukaisen sijoittelun vuoksi Ä esim. NY:n työntekijät NY:n tietokannassa ja LA:n LA:n tietokannassa jne. Käyttäjä / sovellusohjelmoija voi toimia suhteessa loogiseen tauluun Otetaulujen tuntumattomuus Replication independence / transparency Tietyn relaation tai sen osan (segmentin) fyysinen kopio Käyttäjä / sovellusohjelmoija voi toimia suhteessa loogiseen tauluun Otetaulut voitava pudottaa ja luoda uudelleen ilman että toiminta häiritsee sovelluksen käyttöä
HELIA 14 (19) Hajautettu tapahtuman käsittely Tapahtuma Joukko tietokannan käsittelytoimenpiteitä, (kyselyjä, lisäyksiä, muutoksia, poistoja) jotka muodostavat loogisen kokonaisuuden Yhdestä tai useammasta tietokantaoperaatiosta koostuva kokonaisuus, jolle voidaan taata jakamattomuus, pysyvyys, erillisyys ja oikeellisuus Ä Tapahtumaan kuuluvat toimenpiteet joko suoritetaan kokonaisuudessaan tai hylätään kokonaisuudessaan COMMIT TRANSACTION ROLLBACK TRANSACTION aloita tapahtuma vahvistus ONNISTUNUT VAHVISTETTU päätä tapahtuma AKTIIVINEN virhe peruutus PÄÄTTYNYT luku kirjoitus EPÄ- ONNISTUNUT PERUUTETTU Ä Samanaikaisuuden hallinta (Concurrency Control) Ä Toipuminen (Recovery)
HELIA 15 (19) 2-vaiheinen vahvistus (2-phase commit) Joko kaikki etätietokannat vahvistavat (commitoivat) tai kaikki peruvat Vaihe1 1. Koordinoiva RDBMS vaatii osallistuvat RDBMS:t valmiustilaan vahvistusta tai peruutusta varten. 2. Osallistuvat RDBMS:t kirjoittavat fyysisen lokitiedon tehdyistä muutoksista ja raportoivat koordinoivalle RDBMS:lle ok (tai ei Ok). Vaihe 2 3. Koordinoiva RDBMS kirjoittaa päätöksen fyysiseen lokiin; commit jos kaikki osallistuvat RDBMS:t vastasivat ok ja rollback jos jokin vastasi ei ok tai vastaus puuttui. 4. Koordinoiva RDBMS viestii päätöksestään osallistuville RDBMS:lle, joiden on tehtävä paikallinen commit / rollback koordinoivan RDBMS:n ohjeen mukaisesti. Ä Hajautetun tietokannan transaktion hallinta on loogisesti mahdotonta tehdä pitäväksi!
HELIA 16 (19) Hajautuksen hallinta sovelluksessa Esim. ODBC:n yli yhteys useampaan myös. eri toimittajan tietokantaan Ä Transaktion hallinta rakennettava sovellukseen (tietokantaohjelmointia...) Sovelluspalvelimet Autentikointi ja auktorisointi - tietoturva Tilan ja istunnon hallinta Tapahtumien (transaktioiden) käsittely Yhteydet moniin tietovarastoihin Sovelluslogiikka erilleen järjestelmäratkaisuista Eri komponenttiarkkitehtuurien yhdistäminen (EJB, CORBA, (Active X?)) Skaalautuvuus Toimintavarmuus 'carefree' Internet Ä Työnjako sovelluspalvelimen ja RDBMS:n välillä?
HELIA 17 (19) Oracle ja hajautus 1. SQL*Net ajurit kuhunkin tietokantapalvelimeen 2. Kullekin tietokannalle yksilöivä nimi 3. Kuhunkin tietokantaan luodaan database_link objekti kullekin muulle tietokannalle Ä Tietokantaversioiden välillä voi olla yhteensopivuusongelmia Ä Oraclessa alemmasta versiosta ei pysty päivittämään ylemmässä versiossa olevia tietoja Tietokantojen identifiointi Kullekin verkon tietokannalle yksilöivä nimi: 1. DB_DOMAIN Verkkodomain-nimi + 2. DB_NAME Tietokantainstanssin nimi Esim: DB_NAME = TEST DB_DOMAIN = MYY.HELIA.FI Í TEST.MYY.HELIA.FI Ä Nimen muuttaminen myöhemmin in hankalaa... Ä Tallennetaan tietohakemistoon GLOBAL_NAME -näkymään
HELIA 18 (19) Linkit tietokantojen välillä Ä Kuhunkin tietokantaan luodaan database_link objekti kullekin muulle tietokannalle CREATE PUBLIC DATABASE LINK <database_name> USING <connect_string> CREATE DATABASE LINK <database_name> CONNECT TO <user> IDENTIFIED BY <password> Ä Tallennetaan tietohakemistoon näkymiin USER_DB_LINKS ALL_DB_LINKS DBA_DB_LINKS DROP PUBLIC DATABASE LINK <database_name>
HELIA 19 (19) Sijainnin tuntumattomuus a) Paikallinen näkymä CREATE VIEW W_emp AS SELECT empno,... FROM scott.emp@guest.oracle.com; b) Paikallinen synonyymi CREATE SYNONYM emp FOR scott.emp@guest.oracle.com; Segmentoinnin tuntumattomuus Ä Horisontaalinen segmentointi - UNION näkymä Ä Vertikaalinen segmentointi - JOIN näkymä + synonyymi Ä Näkymien päivitettävyys todennäköinen ongelma Otetaulujen tuntumattomuus Ä Otetauluja ei voi käyttää päivitysoperaatioissa