3. Distribuovaná data
SELECT * FROM T T
SELECT * FROM T
SELECT * FROM T
SELECT * FROM T
4. Distribuovaná data - problém
SELECT * FROM T T
SELECT * FROM T
SELECT * FROM T
SELECT * FROM T
5. Replikace
T
T
T
SELECT * FROM T
SELECT * FROM T
6. Replikace
• replikace je technika zajišťování dostupnosti dat v distribuovaných
databázových systémech.
• data jsou fyzicky uložena v systému ve více kopiích (replikách) na
více místech (uzlech)
• k distribuovaným datům můžeme přistupovat lokálně
• při zachování určité míry konzistence
7. Replikační objekty
• co všechno můžeme replikovat:
▫ tabulky
▫ indexy
▫ pohledy
▫ balíky
▫ procedury, funkce
▫ typy
▫ triggery
▫ synonyma
▫ operátory
8. Jak replikovat
• nereplikovat
▫ triviální
• export import
▫ utiltity, CREATE TABLE AS SELECT
▫ bez dalších datových přenosů
▫ jednou a dost
• Oracle Dataguard
▫ neflexibilní
• zařídit replikaci sami
▫ procedurálně pomocí triggerů (PL/SQL)
▫ složité pro obecné situace
9. Database link
• potřebujeme komunikovat se vzdálenou databází
• spojení pomocí database linku
▫ jako client-server
• CREATE [PUBLIC] DATABASE LINK name
CONNECT TO user IDENTIFIED BY pass
USING ‘database‘
• tnsnames.ora
▫ $ORACLE_HOME/network/ADMIN
10. Typy replikací
• základní
▫ basic replication
▫ jen pro čtení
▫ data proudí jedním směrem
• pokročilá
▫ advanced replication
▫ přenos oběma směry
▫ Enterprise
11. Materializovaný pohled
• materialized view
• pohled ~ pohled na data ~ předkompilovaný optimalizovaný SQL
dotaz
• materializovaný pohled ~ pohled, který fyzicky obsahuje data
• dříve snapshot
• CREATE MATERIALIZED VIEW pohled AS SELECT …
12. Základní replikace
• můžeme replikovat jenom tabulky
▫ a to jako materializované pohledy
▫ read only materialized view
• slovník:
▫ zdrojová tabulka: target master table
▫ patří do databáze master definition site
▫ read-only mviews jsou v destination site
• replikované mviews musí mít identifikovatelné řádky
▫ primární klíč
▫ ROWID
13. Výhody replikovaných mviews
• nižší nároky na přenos dat
• lepší výkon (lokální data)
• data subsetting
• konzistence
14. Materialized view log
• proč?
▫ chceme mít v mview aktuální data
• zaznamenávají změny v datech, které jsou zajímavé pro mview
▫ na úrovni řádků
• přísluší master site
• CREATE MATERIALIZED VIEW LOG ON tabulka TABLESPACE ts
15. Aktualizace mview
• 3 metody:
▫ FAST
aktualizuje na úrovni řádků
potřebuje MV log
▫ COMPLETE
MV se kompletně vymaže znovu naplní
▫ FORCE
pokud to jde, provede se FAST, jinak COMPLETE
• CREATE MATERIALIZED VIEW mv
REFRESH FAST NEXT sysdate + 1 AS
…
16. Refresh group
• uvažme příklad:
▫ v master site máme tabulky zaměstnanec a plat, které replikujeme do
destination site
▫ MV se aktualizují každé 3 minuty
▫ v destination site chce někdo přiřadit platy zaměstnancům (JOIN)
není zaručeno, že se to povede (resp. může vzniknout zaměstnanec bez platu)
protože zaměstnanci můžou být aktuální a platy budou aktuální až za 2 minuty
to protože IO cizího klíče je jen v master site
• řešením jsou refresh groups
▫ pohledy v jedné skupině se aktualizují najednou
17. Příklad
dbadmin@semora remoteUser@semora client@everywhere
CREATE TABLE remoteTable (id INT PRIMARY KEY,zprava
VARCHAR2(255));
CREATE USER remoteUser IDENTIFIED BY remoteUser;
GRANT CREATE SESSION TO remoteUser;
GRANT CREATE SYNONYM TO remoteUser;
GRANT SELECT ON remoteTable TO remoteUser;
CREATE SYNONYM
remoteTable FOR
dbadmin.remoteTable;
CREATE PUBLIC DATABASE LINK semoraLink CONNECT TO
remoteUser IDENTIFIED BY remoteUser USING 'semora';
CREATE MATERIALIZED VIEW selectFromRemote AS SELECT * FROM
remoteTable@semoraLink
INSERT INTO remoteTable VALUES (1,'Hello, this is the
remote table');
COMMIT;
19. Replikační skupiny
• pokud máme replikovaných objektů více než málo, je obtížné je
individuálně spravovat
• používají se replikační skupiny (replication groups)
▫ sdružujeme objekty, které spolu logicky souvisí
• každý objekt patří do nejvýše jedné replikační skupiny
• objekty z replikační skupiny mohou patřit do různých schémat
20. Updatable materialized views
• jedna master tabulka podporuje neomezeně UMV
• protože je ! master tabulka, všechny konflikty se řeší v jednom
bodě systému
• nejsou tolik náročné na zdroje
• dají se použít společně s multimaster replikací
• CREATE MATERIALIZED VIEW view FOR UPDATE …
• a navíc přiřazením do replikační skupiny a registrací replikačního
objektu do katalogu
22. Writeable materialized view
• jsou to MV, do kterých je možné zapisovat (DML)
• ale změny se nepropagují směrem ven
• po refreshi se data ztratí
• vytváří se stejně jako updatable MV, ale nepřiřazují se do replikační
skupiny
23. Replikační katalog
• každý prvek zapojený do replikace má svůj replikační katalog
• sada pohledů a slovníků s informacemi o replikačních objektech a
skupinách
• používá se při provádění replikace
• procedury pro správu
▫ DBMS_REPCAT.CREATE_MASTER_REPGROUP
vytváří novou master group
24. Multimaster replikace
• peer-to-peer
• replikují se vždy všechna data
• více master-site v systému, které komunikují mezi sebou
• informace se aktualizují hned po dokončení transakce
▫ pokud je to možné
25. Multimaster replikace
• implementována procedurálně na úrovni triggerů
▫ generují se
▫ nepoužívají se MV
• umožňuje zároveň z dvou míst přistupovat (měnit) jeden záznam
▫ může dojít ke konfliktům
řeší se podle definovaných pravidel
26. Multimaster komunikace
• manipulace s daty neprobíhá
přímo
• akce se vloží do fronty Local DB Remtoe DB
odložených transakcí (deferred
transaction queue) Deferred Deferred
• odtud se šíří po replikační transaction transaction
skupině queue DB link queue
• pokud dojde k chybě (např. ztráta
připojení), transakce se přesune
do fronty chybových transakcí Table Table
(deferred error queue) A A
• replikace je pozastavena, dokud
chyba není opravena INSERT INTO A…
28. Konflikty
• u asynchronní multimaster replikace může dojít ke konfliktům (kolizím)
▫ můžeme zvolit i synchronní zpracování
• řeší se podle pravidel
▫ buď implicitní
▫ nebo uživatelsky definovaná
• např.
▫ latest timestamp value
▫ earliest timestamp value
▫ min/max value
▫ …
29. Reference
• Oracle documentation
• Jiří Vytasil; Conicov Andrej – Replikace
• John Garmany, Robert Freeman - Oracle Replication
RAMPANT TECHPRESS, 2003
• orafaq.com