«

»

Oct 23

Temporal Data Management

Temporal Data Management – IBM DB2

2012. godine, u verziji DB2 10, IBM je implementirao temporal features. Za razliku od Oracle-a, ovde se već na prvi pogled uočava dosledno poštovanje definicija koje je dao standard. DB2 implementira sve tipove temporal tables: System-period, Application-period i Bitemporal tables, sintaksa je gotovo preuzeta iz standarda i ono najvažnije, podržane su sve DML operacije!

Prilikom implementacije System-period tabela odlučili su se za uvođenje istorijske tabele koja je namenjena verzionisanju slogova originalne tabele dok originalna tabela sadrži samo aktuelne vrednosti zapisa. Sve operacije nad podacima su podržane u skladu sa standardom. Jedino odstupanje je proširenje sintakse kojom se povezuju tekuća i istorijska tabela. Nakon povezivanja, korisnik se uvek referencira na originalnu tabelu a sistem obezbeđuje pogled nad unijom ove dve tabele.

Application-period tabele je bilo značajno komplikovanije implementirati. Međutim, IBM je i tu ponudio rešenje koje se oslanja na standard. To znači da su sve operacije ažuriranja podržane. Ako se vratimo na primere iz predavanja koji objašnjavaju cepanje slogova prilikom ažuriranja, odnosno kako se jedna DML operacija razlaže u dve ili više nalazimo da nam DB2 donosi baš takvu implementaciju. Odstupanje nalazimo u nemogućnosti da aplikativnom periodu dodelimo korisničko ime. To ujedno znači i ograničenje na jedan aplikativni period u jednoj tabeli. Spoljni ključ za period takođe nije podržan.

Kako je Bitemporal tabela kombinacija prethodna dva tipa to se ni ovde neću posebno baviti ovim tipom.

I na kraju treba naglasiti da je IBM prilikom implementacije imao u vidu svoje korisnike, uvažio praksu i njene zahteve i omogućio lak prelazak sa regularnih na temporal tabele. Nekoliko članaka i uputstava za migraciju se može naći na njihovom sajtu. Ove preporuke mogu da se posmatraju iz još jednog ugla: ako MS SQL već ne podržava ovaj tip tabela onda naša implementacija treba da bude takva da se lako uklopi u neki od predviđenih scenarija migracije u nadi da će Microsoft imati isti ili sličan pristup kao i IBM.

Da bi ohrabrio svoje korisnike da usvoje ovaj tip tabela u budućem radu, IBM je izvršio istraživanje produktivnosti iz koga je proizašao sledeći grafikon koji neću dodatno komentarisati: Temporal Features

Microsoft SQL

Od verzije 2008 do danas Microsoft je implementirao mnoge preporuke koje su formalno postale standard decembra 2011. Tako već u verziji 2008 dobijamo komandu MERGE u punoj implementaciji standarda. U istoj verziji primenjena je preporuka za kombinovanje ažuriranja i preuzimanja podataka u vidu OUTPUT klauzule. Tu je i ograničavanje FETCH kursora uz opcije PERCENT i WITH TIES. I da ne zaboravimo sve opcije Window proširenja koje smo dobli od verzije 2008 na ovamo i koje su nam značajno olakšale rad. Da pomenemo NTILE i OVER  iz 2008, kao i LEAD i LEG te FIRST_VALUE, NTH_VALUE i  LAST_VALUE iz 2012.

Na našu žalost, Microsoft se nije uhvatio u koštac sa Temporal Tables tako da čak ni u verziji 2014 nema pomena o novom tipu tabela. Ostaje da se nadamo da će u nekoj budućoj (pod)verziji dati odgovor na ovo pitanje. A ako pođu od iskustva konkurencije i potreba korisnika verujem da će biti u stanju da implementiraju još bolje rešenje kao što su u dosadašnjoj praksi umeli da urade.

1 comment

  1. Nebojša Ilić

    Nismo čekali dugo. Pogledajte preview za SQL 2016
    Pod Performance Enhancements su napisali: Temporal Database: Track historical changes
    I još mnogo, mnogo novosti.

Leave a Reply