Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
RĪGAS TEHNISKĀ UNIVERSITĀTE
Datorzinātnes un informācijas tehnoloģijas fakultāte
Informācijas tehnoloģijas institūts
Referāts mācību priekšmetā
„Progresīvās datu bāzes”
ORACLE12. ORACLE TIMESTEN IN-MEMORY DATABASE AND
ORACLE IN-MEMORY DATABASE CACHE
Izstrādāja: Anna Boguševiča
091RDB060
2013./2014. māc. gads
Saturs
Oracle TimesTen In-Memory Database.........................................................................3
Oracle In-Memory Database Cache...............................................................................7
Literatūra......................................................................................................................11
2
Oracle TimesTen In-Memory Database
Oracle TimesTen In-Memory Database ir relāciju datu bāzu vadības sistēma, kas strādā operatīvajā
atmiņā un tiek izpildīta lietotņu slānī. Svarīgākā atšķirība no tradicionālajām datu bāzēm ir ātra
atbildes reakcija transakciju izpildes un apstrādes laikā. Sākotnēji tehnoloģija tika izstrādāta
Hewlett-Packard laboratorijās (90-to gadu beigās), taču 2005. gadā Oracle to nopirka un turpināja
attīstīt pēc saviem ieskatiem. TimesTen In-Memory Database strādā praktiski uz visām Unix/Linux
platformām un vairākām Windows platformām (gan 32-bitu, gan 64-bitu arhitektūrām). Viena no
svarīgām TimesTen priekšrocībām ir tāda, ka tas nodrošina efektīvu OLTP-lietotņu darbību reālā
laikā, veiktspēja ir ierobežota tikai ar pieejamo fiziskās atmiņas apjomu.
Svarīgas iespējas, kuras nodrošina Oracle TimesTen In-Memory Database:
1. ar sistēmu var vienlaicīgi strādāt liels daudzums lietotāju (tūkstoši pieslēgumu vienai datu
bāzei);
2. atbildes reakcija ir ātra pat pārslodzes gadījumos;
3. kešatmiņas datu paralēla sinhronizācija ar Oracle datu bāzi;
4. sarežģītu vaicājumu optimizācija un SQL agregācija;
5. atbalsts „lielajiem” objektiem – BLOB, CLOB (parādījās jaunākajā versijā);
6. pēc tehnoloģijas pievienošanas Oracle produkcijas saimei, tajā tika iekļauti PL/SQL un
integrācija ar Oracle DB. [1]
TimesTen nodrošina ātrāku atbildi uz vienkāršiem vaicājumiem pateicoties tam, ka dati tiek glabāti
atmiņā un netiek izmantoti sarežģīti mehānismi kešatmiņas uzturēšanai. Kopumā var teikt, ka
izmantot šo tehnoloģiju ir lietderīgi tad, ja ir stingri laika ierobežojumi attiecībā uz lietotnes atbildes
ātrumu un pietiekams atmiņas apjoms, lai izvietotu tajā visas nepieciešamas tabulas. Neskatoties uz
to, ka izstrādātājs sola pielāgošanas un ērtu savietojamību praktiski ar jebkuru lietotni, tomēr jāņem
vērā, ka bieži vien nāksies pārveidot shēmu un veikt izmaiņas pašā lietotnē. [5]
Reāla laika operatīvās datu apstrādes vadībā eksistē divi veiktspējas rādītāji – reakcijas laiks un
caurlaides spēja. Izmantojot Oracle TimesTen In-Memory Database, ieraksta lasīšana no datu bāzes
aizņem ne vairāk kā 5 mikrosekundes, bet tā atjaunināšana vai pievienošana – ne vairāk kā 15
mikrosekundes (šāda veida pētījumi tika veikti ar Red Hat Linux palīdzību uz AMD Opteron
procesora). Tas nozīmē, ka šīs tehnoloģijas caurlaides spēja ir desmiti, pat simti tūkstošu transakciju
sekundē izmantojot standarta aprīkojumu. [1, 2]
Oracle TimesTen datu bāzes darbības princips tiek parādīts 1.1. attēlā.
3
1.1.att. Oracle TimesTen datu bāzes darbības princips
Lietotnes pieslēdzas TimesTen datu bāzēm vai nu tiešā veidā (direct connection) vai ar
klientservera savienojumu (client/server connection), izmantojot standarta SQL un PL/SQL caur
JDBC, ODBC, ODP.NET, Oracle Call Interface (OCI) un Pro*C/C++ programmēšanas
interfeisiem. Replicēšana ir iespējama LAN un WAN tīklos.
Pieslēgšanas shematisks attēlojums tiek parādīts 1.2. attēlā.
1.2.att. Pieslēgšanas sistēmai
Oracle TimesTen In-Memory arhitektūra balstās uz sekojošām komponentēm:
koplietojamās bibliotēkas;
atmiņai rezidentas datu struktūras (piemēram, indeksi ir optimizēti darbam tieši RAM vidē);
datu bāzes procesi;
4
administratīvās programmas;
kontrolpunkti un žurnālu faili.
Arhitektūras shematisks attēlojums tiek parādīts 1.3. attēlā.
1.3.att. TimesTen arhitektūra
Tāpat kā jebkura relāciju datu bāze, dati iekš TimesTen tiek glabāti shēmās, kuras veido vairākas
tabulas. Šīs tabulas sastāv no vairākām informācijas rindām, katru rindu veido vairākas kolonnas.
Pamata koncepcijas, kas tiek izmantotas TimesTen tehnoloģijā – shēmas, lietotāji, tabulas, indeksi,
skati utt., ir savietojamās ar Oracle datu bāzēm.
TimesTen ir transakciju datu bāze – ir iespējams saglabāt izpildi (commit) un atritināt to (roll back).
Lietotāji tiek izveidoti un identificēti ar paroļu palīdzību, tāpat kā tas notiek Oracle datu bāzu
lietotājiem, kā arī pieeja datiem tiek kontrolēta ar pazīstamu komandu GRANT un REVOKE
palīdzību. TimesTen tehnoloģiju var izmantot arī kopā ar Oracle datu bāzi, izveidojot kombināciju
no šīm bāzēm. [6]
Oracle TimesTen In-Memory datu bāze ir izveidota kā iegulstama programmās datu bāze, kas
nodrošina labāku veiktspēju, tiek izslēgtas nevajadzīgas tīkla operācijas un likvidēta starpprocesu
komunikācija.
5
TimesTen arhitektūras salīdzinājums ar RDBMS arhitektūru tiek parādīts 1.4. attēlā.
1.4.att. TimesTen arhitektūras salīdzinājums ar RDBMS
Viens no spilgtākajiem Oracle TimesTen In-Memory Database izmantošanas piemēriem ir mobilo
telefonu operatoru datu bāzes. Pēdējos gados pakalpojumu klāsts ir kļuvis pietiekami plašs – ne
tikai zvani un ziņojumi, bet arī internets telefonos, datu vai lietotņu lejupielādēšana, zvani vai
īsziņas uz fiksētiem numuriem, kā arī daudz kas cits. Mobilo telefonu lietotāji izpilda tūkstošiem
transakciju un tas notiek vienlaicīgi vienā tīklā – šis arī ir tas gadījums, kad Oracle TimesTen In-
Memory datu bāze būtu vispiemērotākais risinājums, lai nodrošinātu stabilu veiktspēju augstās
noslodzes apstākļos.
Vēl viens piemērs, kur Oracle TimesTen varētu sniegt vairākas svarīgas priekšrocības ir dispečeru
sistēma reaģēšanai uz ārkārtējām situācijām. Tāda sistēma ir piemēram ASV, kad cilvēki zvana uz
911. Šādas sistēmās atbildes laiks ir kritisks, tas var ietekmēt dzīvības jautājumus. [8]
Bieži TimesTen tehnoloģiju izmanto sekojošās jomās:
1. tirdzniecība;
2. komunikācijas;
3. biļešu rezervēšana;
4. pašapkalpošanas portāli;
5. klientu atbalsta centri;
6. krāpšanas atklāšanai.
6
Kā jau tika minēts iepriekš, tādēļ, ka TimesTen glabā datus RAM atmiņā, datu bāzes apjoms ir
ierobežots ar pieejamo fiziskās RAM atmiņas apjomu mašīnā. Mūsdienīgajās 64-bitu sistēmās šis
ierobežojums nav tik jūtams, jo ir pieejamas mašīnas ar RAM, kas izmērāms terabaitos (TB).
Tomēr salīdzinot ar citām datu bāzēm, var konstatēt, ka eksistē arī lielākas bāzes un TimesTen
nemaz nav jaudīgākā no tam. Tāpēc var uzskatīt, ka šodien ideālais risinājums būtu TimesTen
veiktspējas apvienojums ar Oracle datu bāzu lielo jaudu, bet šāda veida risinājums vēl nav
izveidots!
Oracle In-Memory Database Cache
Oracle In-Memory Database Cache ir opcija, kas nodrošina darbu reālā laikā un kešatmiņas
atjaunināšanu priekš Oracle datu bāzes. Oracle In-Memory Database Cache samazina transakciju
apstrādes laiku pateicoties kritiski svarīgo tabulu kešēšanai (caching). Šo tabulu kešēšanu nodrošina
ar SQL palīdzību, tāpat kā parastās relāciju datu bāzu tabulas iekš TimesTen In-Memory Database.
Šādi Oracle In-Memory Database Cache sniedz lietotnēm relāciju datu bāzes pilno funkcionalitāti
un nodrošina darbu reālā laikā ar datu bāzēm, kas ir optimizētas darbam ar operatīvo atmiņu.
Rezultātā dati tiek apstrādāti reālā laikā, tā it kā datu bāze būtu izvietota operatīvajā atmiņā.
Kešēšanas tabulas var tikt izveidotās gan kā atjaunināmas tabulas, gan arī tikai lasīšanai. Datu
sinhronizēšana starp kešatmiņu un Oracle DBVS tiek izpildīta automātiski. [4]
In-Memory Database Cache opcija ir izveidota tā, ka pat savienojuma ar serveru zaudēšanas
gadījumos, procesi var turpināties. Visas transakcijas, kas tiek piefiksētas kešatmiņas tabulās tiek
izplatītas uz Oracle DB, tikko savienojums ir atgūts atpakaļ.
Opcija In-Memory Database Cache izmanto jēdzienu „kešēšanas grupas”, kas apraksta vairākas
datu bāzes tabulas, kuras ir izvietotās operatīvajā atmiņā un tiek salīdzinātas ar visām vai dažam
tabulām no Oracle DBVS ar paplašināta SQL palīdzību. Eksistē divas „kešēšanas grupu” pamata
kategorijas:
Vadāmas ar sistēmu – pilnībā tiek kontrolētas ar In-Memory Database Cache tehnoloģiju.
Šajā gadījumā sinhronizēšanas vadība starp Oracle DB un kešēšanas tabulām notiek
automātiski, bez lietotnes iesaistīšanas.
Vadāmas ar lietotāju – ļauj lietotnēm noteikt kešēšanas uzvedību, piedāvājot visas SQL
komandas un atribūtus. Lietotnes ir atbildīgas par ielādēšanas mehānismu inicializēšanu,
datu atjaunināšanu un izplatīšanu tā, lai apmierinātu lietotnes prasības pilnā apjomā.
„Kešēšanas grupu” aizpildīšanai un pastāvīgai to satura atjaunināšanai tiek izmantotas tādas SQL
operācijas kā LOAD un REFRESH. „Kešēšanas grupas” tiek kontrolētas caur Cache Administrator,
kas ir grafiskais lietotāja interfeiss. [3]7
In-Memory Database Cache arhitektūra ir praktiski tāda pati kā Oracle TimesTen In-Memory
Database, vienīga atšķirība, ka In-Memory Database Cache arhitektūrā ir iekļauti Oracle datu bāze
un kešēšanas aģents. [7]
Oracle In-Memory Database Cache arhitektūra tiek parādīta 2.1. attēlā.
2.1.att. Oracle In-Memory Database Cache arhitektūra
Dinamiskās kešēšanas priekšrocības
Dažām lietotnēm nav iespējams savlaicīgi noteikt tiem nepieciešamos kešdatus. Šādos gadījumos
kešdati tiek ielādēti pēc vaicājuma, kad rodas nepieciešamība pēc šiem datiem. Piemēram, zvanu
apstrādes centra programmnodrošinājumam ir nepieciešams ielādēt abonenta pašreizējo konta
izrakstu tajā pati laikā veicot zvana pāradresēšanu attiecīgajām operatoram, bet pirms tam ir jāielādē
visu abonentu kontu izraksti kešatmiņā, kas atrodas operatīvajā atmiņā.
Dinamiskās datu ielādes papildus iespēja – automātiskā informācijas novecošanas funkcija, kas ļauj
dzēst novecojušos datus vai tos, kuri netika izmantoti ilgu laiku. Datu novecošanas funkcija sniedz
lietotnēm iespēju atbrīvot vietu jaunu datu kešēšanai, turklāt saglabājot atmiņā pieeju „aktīvajiem”
datiem.
8
Augsta pieejamības pakāpe
Pieejamība ir viena no svarīgākām prasībām lietotnēm, kas strādā reālā laikā. In-Memory Database
Cache nodrošina pieejamību ar transakciju replicēšanu reālā laikā. Eksistē replicēšanas aģents, kurš
nolasa ierakstus no transakciju žurnāla un pārsūta visas izmaiņas citam aģentam, kurš savukārt
izmanto pārsūtītas izmaiņas, lai atjauninātu datus lokālajā datu bāzē. Tiek realizēta divu veidu
replicēšana – sinhronā un asinhronā. Asinhronā replicēšana nodrošina maksimālo veiktspēju,
replicēšanas procesa laikā lietotne tiek pilnīgi atdalīta. Sinhronā replicēšana nodrošina labāku datu
saskaņošanu starp galveno un replicēšanas bāzi, taču šajā gadījumā lietotne tiek bloķēta līdz brīdim,
kad izmaiņas tiek fiksētas replicēšanas DB.
Oracle In-Memory Database Cache var tikt izmantota dažādās sfērās. Piemēram, to var izmantot
interneta komercijas nolūkiem, vērtspapīru pārdošanas sistēmās, dažādu maksājumu sistēmās,
biznesa procesu monitoringam reālā laikā, datu analīzei reālā laikā, lietotāju profilu uzturēšanai.
Kešēšanas tabulas ir iespējams saglabāt un atjaunot operatīvajā atmiņā. Šo saglabāšanu nodrošina
transakciju žurnāli un datu bāzes kontroles punktu kopēšana uz diska, kuru izpilda Oracle TimesTen
In-Memory Database.
TimesTen un In-Memory Database Cache izmanto vaicājumu optimizētāju, kas balstās uz
izmaksām un izvēlas labāko vaicājumu izpildes scenāriju atbilstoši tādiem faktoriem kā indeksu
esamība, tabulu saites, ORDER BY daļas esamība vaicājumā. Metode, ar kuras palīdzību TimesTen
un In-Memory Database Cache optimizētājs analīzē SQL vaicājumu, lai uzlabotu veiktspēju,
atšķiras no metodēm, kurus izmanto tradicionālajās disku sistēmās, tāpēc ka atšķiras pašu struktūru
izmaksas – priekš TimesTen un In-Memory Database Cache disku pieejamība nav galvenais
faktors. TimesTen un In-Memory Database Cache optimizētājs izmanto diapazonus (range),
jaucējkodus (hash) un rastra indeksus (bitmap index). Vaicājuma optimizētājs izmanto divu tipu
savienojumu metodes: nested-loop un merge-join. Pie nepieciešamības optimizētājs var izveidot
pagaidu indeksus.
Kopumā, pēc abu tehnoloģijas izpētes, var secināt, ka tās ir diezgan specifiskas (turklāt arī diezgan
dārgas), ir savas priekšrocības un savi trūkumi, tāpēc jāatzīst, ka pirms izvēlēties Oracle TimesTen
In-Memory Database vai Oracle TimesTen In-Memory Database Cache, ir nepieciešams labi
izanalizēt sistēmas prasības un precīzi noteikt vai nepieciešama kāda no šīm tehnoloģijām vai arī
var veikt nepieciešamas izmaiņas esošā struktūrā.
9
Literatūra
1. http://www.slideshare.net/highload/oracle-timesten-presentation
2. http://www.oracle.com/technetwork/database/database-technologies/timesten/overview/
index.html
3. http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/arch.htm#TTCIN150
4. http://www.oracle.com/us/products/database/options/in-memory-database-cache/overview/
index.html
5. http://www.oracle.com/technetwork/products/timesten/faq-091526.html#GENERAL6
6. http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/overview.htm#TTCIN120
7. http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/arch.htm#BAAEBJEF
8. http://www.itjungle.com/tug/tug061605-story03.html
10