Staš Kopina. ADMINISTRACIJA PODATKOVNE BAZE MySQL. Diplomsko delo

Size: px
Start display at page:

Download "Staš Kopina. ADMINISTRACIJA PODATKOVNE BAZE MySQL. Diplomsko delo"

Transcription

1 Staš Kopina ADMINISTRACIJA PODATKOVNE BAZE MySQL Diplomsko delo Maribor, junij 2014

2 ADMINISTRACIJA PODATKOVNE BAZE MySQL Diplomsko delo Študent: Študijski program: Smer: Mentor: Staš Kopina Informatika in tehnologije komuniciranja VS Sistemska podpora informatiki in tehnologijam komuniciranja Viš. pred. doc. dr. Boštjan Brumen, univ. dip. inž. rač. in inf.

3 i

4 ZAHVALA Zahvaljujem se mentorju doc. dr. Boštjanu Brumnu za pomoč in vodenje pri opravljanju diplomskega dela. Posebna zahvala velja tudi moji družini in dekletu, ki so me med študijem podpirali. ii

5 Administracija podatkovne baze MySQL Ključne besede: Podatkovne baze, administrator podatkovnih baz, MySQL, optimizacija sistema UDK: (043.2) Povzetek V diplomskem delu Administracija podatkovne baze MySQL smo predstavili naloge administratorja podatkovne baze MySQL. Predstavljena je tudi namestitev sistema MySQL z nastavitvenimi parametri, ki omogočajo boljšo optimizacijo sistema. Pri tem smo se omejili na operacijski sistem Windows 7. Zavedajoč se pomembnosti optimizacije sistema, smo vso pozornost usmerili v boljšo optimizacijo in poskušali predstaviti kar se da najboljše rešitve. iii

6 Administration MySQL database Key words: Database, database administrator, MySQL, System Optimization UDK: (043.2) Abstract In this thesis we describe the activities of a MySQL data base administrator.the MySQL system installation on a Windows 7 Operating system with parameters settings that enable better system optimization is described. With awareness of the importance of system optimization, we deal with the better optimization and take an effort to find better solutions. iv

7 KAZALO 1 UVOD MYSQL NAMESTITEV S POMOČJO UPORABNIŠKEGA VMESNIKA NASTAVITVENI PARAMETRI MY.INI SHANJEVALNI MEHANIZMI OZ. TIPI TABEL MyISAM Storage Engine InnoDB Storage Engine MERGE Storage Engine MEMORY Storage Engine ARCHIVE Storage Engine FEDERATED Storage Engine Napotki pri izbiri shranjevalnih mehanizmov VARNOSTNI VIDIKI V MYSQL Uporabniki in njihove pravice Varnost PROŽILEC (ANGL. TRIGGERS) IN OMEJITVE (ANGL. CONSTRAINTS) PROCEDURE IN FUNKCIJE V MYSQL PRIMER UPORABE MYSQL SKLEP VIRI v

8 KAZALO SLIK SLIKA 2-1 NAMESTITVENI KORAKI, SKOZI KATERE NAS VODI "ČAROVNIK"... 3 SLIKA 2-2 DODAJANJE NOVEGA UPORABNIKA... 6 SLIKA 2-3 MYSQL WORKBENCH... 9 SLIKA 5-1 DIAGRAM PRIKAZUJE POSTOPEK PREVERJANJA PRIVILEGIJEV UPORABNIKA[1] SLIKA 5-2 ADMINISTRATORJEV VMESNIK IN TRIJE KORAKI VNOSA NOVEGA UPORABNIKA Z NASTAVITVIJO PRIVILEGIJEV SLIKA 5-3 SCHEMA PRIVILEGES SLIKA 8-1 E-R MODEL vi

9 UPORABLJENE KRATICE MySQL PB SQL TCP/IP SSL SHA1 MVCC E-R PL/SQL - Open Source SQL database management system - Podatkovna baza / Data - Structured Query Language - Transmission Control Protocol/Internet Protocol - Secure Sockets Layer - Secure hash algorithm - Multiversion Concurrency Control - Entity Relationship model - Procedural Language/Structured Query Language vii

10 Administracija podatkovne baze MySQL 1 UVOD Danes živimo v dobi, ki naši celotni družbi»vsiljuje«povezanost z informacijskimi storitvami, ki jih povezuje internet. Internet je v celoti sestavljen iz manjših omrežij, ki si med seboj pošiljajo podatke. Iz nabora podatkov dobimo informacijo. Da pa lahko iz podatkov tvorimo informacijo, moramo poskrbeti za beleženje le-teh. Še pred desetletji so podatke shranjevali v arhivih. Ker pa smo sedaj prešli v informacijsko dobo, ki je»zahtevala«velik nabor podatkov s hitrim dostopom, kar pa z arhivi ni bilo možno, jih je zamenjala podatkovna zbirka oz. podatkovne baze (v nadaljevanju PB). Da podatki ne bi bili zgolj podatki in bi iz njih lahko tvorili informacijo, je podatke treba pravilno shranjevati. Za pravilno hierarhijo podatkov in optimalno delovanje podatkovnih baz skrbi administrator administrator PB. Namen diplomske naloge je, da predstavimo delo administratorja PB. Predstavili bomo namestitev MySQL PB z naborom vseh pripadajočih se programov za delo s PB in administracijo. V celotni nalogi bomo poskušali predstaviti in opisati rešitve, ki temeljijo na boljšem delovanju in optimizaciji MySQL PB. Podrobneje bomo predstavili shranjevalne mehanizme oz. tipe tabel, lastnosti in princip delovanja. Varnost v sistemih je ključnega pomena in zato bomo v poglavju Varnostni vidiki predstavili najnujnejše varnostne ukrepe. V tem poglavju smo predstavili tudi pomembnost dodeljevanja pravic uporabnikom, saj tudi to sodi k varnostnim ukrepom. Predstavili bomo»napredne«bazne objekte, kot so prožilce, omejitve, procedure in funkcije, s katerimi lahko del logike, ki bi jo morali razvijalci vključiti v aplikacijah, vključimo kar v MySQL. S pomočjo»naprednih«baznih objektov lahko odkrijemo oz. preprečimo napako, ki bi lahko nastala v PB. Na koncu bomo s praktičnimi primeri zajeli celotno tematiko diplomske naloge in predstavili administratorjevo praktično delo. 1

11 Administracija podatkovne baze MySQL 2 MYSQL NAMESTITEV S POMOČJO UPORABNIŠKEGA VMESNIKA Za preprostejšo namestitev smo izbrali»mysql Installer«, ki vsebuje uporabniku prijazen vmesnik za lažjo namestitev. Pri namestitvi sistema MySQL smo se omejili na operacijski sistem Windows 7. Pred namestitvijo MySQL-a je treba namestiti programsko opremo Microsoft.NET Framework Začetna konfiguracija in nastavitev parametrov: 1. ustvari MySQL Server povezavo v MySQL delovnem okolju; 2. ustvari se konfiguracijska datoteka - my.ini, ki se med namestitvenim postopkom dopolnjuje; 3. uvozi primere podatkovnih baz; 4. ustvari uporabniški računi z nastavitvijo primernih dovoljenj, katere temeljijo na vlogah specifičnih uporabnikov, kot so administrator podatkovne baze (v nadeljevanju PB), administrator varnostnih kopij...; 5.»Advanced Configuration«vključuje opredelitev log datotek (error log, general log, slow query log in bin log).[13] Ob zagonu namestitvenega programa se nam pojavi»welcom Screen«. Ponudi nam tri možnosti: 1. Namestitev MySQL izdelka čarovnik za namestitev. 2. O izdelku opis in spoznavanje funkcionalnosti izdelka MySQL. 3. Viri informacije in pomoč pri namestitvi in konfiguraciji MySQL-a. Po izboru namestitve, nas čez celotno namestitev po korakih, ki so razvidni s slike 2-1, vodi namestitveni čarovnik. 2

12 Administracija podatkovne baze MySQL Slika 2-1 Namestitveni koraki, skozi katere nas vodi "čarovnik" License Information Namestitveni čarovnik najprej zahteva, da potrdimo licenco, s katero soglašamo s pogoji podjetja Oracle, saj lahko le tako nadaljujemo z namestitvijo. Find latest products Ponuja nam možnost, da se povežemo z internetom za iskanje najnovejših komponent MySQL. Če želimo, lahko komponente doda namestitvenemu paketu, če pa tega nočemo, lahko ta korak izpustimo. Izbrali smo»povezava z internetom«in sprožili zahtevo, da poišče posodobitve. Ko je iskanje končano, nas preusmeri na stran, kjer izberemo vrsto nastavitve. Setup Type Ponujene so možnosti različnih namestitvenih tipov, ki ponujajo specifične namestitve glede na uporabnikove želje in zahteve. Izberemo lahko tudi namestitveno pot za shranjevanje datotečnih ter namestitvenih datotek. Developer Default Namesti vse izdelke in orodja, ki so potrebni za razvojne namene MySQL. 3

13 Administracija podatkovne baze MySQL Nastavitev vsebuje: - MySQL Server, - MySQL Workbench uporabniški vmesnik za razvijanje in administracijo serverja, - MySQL Visual Studio Plugin delo z MySQL strežnikom iz Visual Studia, - primeri in vaje za hitrejši in lažji začetek razvoja, - dokumentacijo. Server only Namesti se samo MySQL Server, brez razvijalskih aplikacij. Client only Namesti potrebna orodja za razvoj aplikacij MySQL in ne vsebuje MySQL Server. Koristno v primeru, če nameravate razvijati aplikacije na obstoječem strežniku. Nastavitev vsebuje: - MySQL Workbench uporabniški vmesnik za razvijanje in administracijo serverja, - MySQL Visual Studio Plugin delo z MySQL strežnikom iz Visual Studia, - MySQL konektorji Connector / Net, Java, C / C++, ODBC in drugi, - primeri in vaje za hitrejši in lažji začetek razvoja, - dokumentacijo. Full Namesti celoten nabor aplikacij, ki so na voljo, vključno z MySQL Server, MySQL Workbench, MySQL konektorji, dokumentacijo, vzorci in primeri ter veliko več. Custom Omogoča, da izberete točno določen izdelek, ki bi ga želeli namestiti. To omogoča tudi, da izberete druge različice serverja - strežnika in arhitekture. Check Requirements Po izbranem tipu namestitve, MySQL Installer preveri vaš sistem za izvajanje potrebnih zunanjih zahtev in nameščanje manjkajočih produktov. Installation Naslednje okno prikaže MySQL produkte, ki so načrtovani za vgradnjo. S potrditvijo Execute se sproži namestitveni postopek. 4

14 Administracija podatkovne baze MySQL Configuration - Korak 1. Po uspešni namestitvi vseh produktov nastopi korak, ki vključuje konfiguracijo izdelkov. Idealna konfiguracija MySQL Serverja je odvisna od namembnosti računalnika.[13] Server Configuration Type Določa, koliko sistemskih virov bo dodeljenih MySQL Serverju. Na izbiro imamo tri različne tipe namembnosti računalnika, s čimer omejimo delovanje MySQL-a in preprečimo preobremenitev pomnilnika. Development Machine računalnik je namenjen razvijalstvu in so v sistemu nameščeni tudi drugi razvijalski programi, ki potrebujejo nemoteno delovanje pomnilnika. MySQL bo uporabljal le minimalno»količino«pomnilnika. Server Machine računalnik bo izključno namenjen samo serverju in za nemoteno delovanje potrebuje polovico pomnilnika. Dedicated Machine je izključno namenjen za poganjanje MySQL podatkovne baze in spletnega strežnika. Za delovanje potrebuje celoten pomnilnik. Enable TCP/IP Networking Omogočimo, da se lahko v bazo prijavimo z računalnika, ki je izven domačega omrežja, v nasprotnem primeru lahko do baze dostopamo samo preko localhost povezave. TCP/IP deluje preko porta Port lahko ročno tudi spremenimo na želeno vrednost ter s potrditvijo dovoljujemo, da port odpremo v požarnem zidu. Advanced Configuration Funkcija vključuje dodatno nastavitev poti datotek v dnevniku napak (glej Korak 4). 5

15 Administracija podatkovne baze MySQL Slika 2-2 Dodajanje novega uporabnika - Korak 2. Konfiguriramo izbrane podatke o svojem računu definiranje root gesla. Tukaj se nahaja tudi možnost dodajanje novih uporabnikov z vnaprej določenimi vlogami različne ravni delovanja slika 2-2.[13] Vloge, ki so nam ponujene: - Backup Admin varnostno kopiranje podatkov; - DB Admin ima vse privilegije; - DB Designer ustvarjanje in obratno inžinerstvo sheme baze podatkov; - DB Manager upravljanje podatkovnih baz; - Instance Manager vzdrževane strežnika; - Monitor Admin spreminjanje strežniških nastavitev; - Process Admin spreminjanje in ugašanje kill uporabniških procesov; - Replication Admin vzpostavitev in upravljanje replikacij; - Securty Admin upravljanje prijav, odobravanje in preklic privilegijev strežnika; - User Admin dodajanje in spreminjanje uporabnikov in uporabniških gesel. - 6

16 Administracija podatkovne baze MySQL - Korak 3. Vkjučuje konfiguracijo imena storitve, kako je potrebno zagnati MySQL Server ob zagonu sistema Windws in kateri uporabniški račun bo zagnan ponuja možnost med Standard System Account in Custom User.[13] Opomba: V primeru, da izberemo možnost Custom User, mora izbrani uporabnik imeti pravice za prijavo. Nastavitev pravic v sistemu Windows 7: Star Menu, Control Panel, Administrative Tools, Securty Policy, Local Policies, User Rights Assignment, nato Log On As A Service. Izberemo Add User or Group tukaj dodamo uporabnika, s katerim se želimo prijaviti v sistem.[13] - Korak 4. Zadnji korak konfiguracije je na voljo le v primeru, če smo v prvem koraku vključili možnost Advanced Configuration. Tukaj lahko izberemo, katere Log datoteke želimo aktivirati nastavimo tudi pot, za shranjevanje datotek na želeno mesto.[13] Log datoteke so v MySQL lahko ključnega pomena, saj nam pomagajo odkrivati napake in pripomore k proaktivnosti, da se izognemo težavam že vnaprej. Log datoteke zagotovijo informacije, ki so potrebne za upravljanje strežnika. Error Log dnevnik napak se ustvari ob samem začetku, torej že ob prvem zagonu MySQL strežnika. Beležijo se informacije o zagonu, izklopu strežnika in kritične napake. Privzeto je datoteka shranjena v podatkovnem imeniku in se imenuje <ime_strežnika>.err. Vpis napak v dnevnik se začne z datumom in časom YYMMDD HH:MM formatu, nato sledi sporočilo, ki prikazuje, kaj se dogaja v bazi v tistem času. Dnevnik napak je dragocen vir informacij pri odpravljanju težav s strežnikom, saj ta ne vsebuje le zapisa podrobnosti o težavah strežnika, na katere je naletel, vendar ima celotno zgodovino preteklih napak, ponovnega zagona strežnika (ročno ali samodejno mysql_safe). General Query Log - splošen dnevnik poizvedb shranjuje vse informacije in poizvedbe, ki so bile poslane MySQL strežniku. Vsaka poizvedba se zapiše v datoteko, še preden jo strežnik prejme in z njo operira. Privzeto je datoteka shranjena v podatkovnem imeniku in se imenuje <ime_strežnika>.log. 7

17 Administracija podatkovne baze MySQL Primer poizvedbe shranjene v datoteki: Datum in ura Tip poizvedbe Podrobnosti oz. opis :09:18 10 Query SELECT * FROM sakila.address LIMIT 50, Prepare SELECT TABLE_CATALOG AS TABLE_CAT, TABLE_SCHEMA AS TABLE_SCHEM, TABLE_NAME, COLUMN_NAME, SEQ_IN_INDEX AS KEY_SEQ, INDEX_NAME AS PK_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA LIKE? AND TABLE_NAME LIKE? AND INDEX_NAME='PRIMARY' ORDER BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX :09:19 10 Execute SELECT TABLE_CATALOG AS TABLE_CAT, TABLE_SCHEMA AS TABLE_SCHEM, TABLE_NAME, COLUMN_NAME, SEQ_IN_INDEX AS KEY_SEQ, INDEX_NAME AS PK_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA LIKE 'sakila' AND TABLE_NAME LIKE 'address' AND INDEX_NAME='PRIMARY' ORDER BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX 10 Close stmt Slow Query Log je dnevnik, v katerega se shranjujejo poizvedbe, katere trajajo dalj časa, kot smo določili v nastavitvah (long_query_time, privzeto 10 sekund). Je idealen način za optimizacijo zmogljivosti. Vse poizvedbe, ki se pojavijo v tem dnevniku, so primerne za revizijo zmanjšanje vpliva uspešnosti strežnika. Bin Log MySQL podpira beleženje ukazov, ki omogočajo spreminjanje podatkov v tabelah; ukazi, kot so INSERT, REPLACE, DELETE, GRANT in REVOKE, skupaj z UPDATE, CREATE TABLE in DROP TABLE spadajo v isto kategorijo. Vse te informacije so shranjene v bin datoteki, katera zagotavlja večji učinek shranjevanja podatkov z večjo količino informacij. Mysqlbinlog pretvori binarno datoteko v textovni dokument, ki je berljiv. Priporočeno je, da se binarni dnevnik shrani na drug pogon ali napravo, kot je tista, ki ima datoteke podatkovne baze MySQL, saj je ključnega pomena pri odkrivanju okvar.[1][2] MySQL Workbench Po končani namestitvi strežnika smo v fazi, ko lahko začnemo z upravljanjem podatkovne baze. Nemudoma bi lahko ustvarili novo PB, nove tabele, katere bi napolnili s podatki, vendar naš namen je, da je vse optimizirano in skrbno načrtovano za kasnejše nemoteno delovanje. 8

18 Administracija podatkovne baze MySQL MySQL ima dve možnosti upravljanja z nastavitvenimi parametri (naloga administratorja PB), in sicer: - prva možnost je vnos nastavitvenih parametrov preko ukazne vrstice, - kot druga možnost nam MySQL ponuja uporabniku prijaznejši način, in sicer uporabniški vmesnik MySQL Workbench, ki združuje vsa orodja za delo s podatkovnimi bazami. Za kasnejšo lažjo predstavo še nekaj besed o MySQL Workbench-u. Razdeljen je v tri sklope, in sicer upravljanje PB, fizično načrtovanje PB in administracijo PB vidno na sliki 2-3. Vsak sklop ima svoja specifična orodja za delo: 1) SQL Development: orodja za delo s PB. Uporabnik se najprej poveže s strežnikom, šele nato lahko začne z delom (dodajanje novih PB, tabel, povpraševanj, vnos podatkov...). 2) Data Modeling: fizično načrtovanje PB (načrtovanje E-R diagramov). 3) Server Administration: nastavitev delovanja strežnika, dodajanje in urejanje uporabnikov.[1][2][13] Slika 2-3 MySQL Workbench 9

19 Administracija podatkovne baze MySQL 3 NASTAVITVENI PARAMETRI MY.INI MySQL strežnik uporablja veliko različnih uporabnikov, vsak uporabnik ima svoje specifične zahteve. Treba je le urediti nastavitvene parametre, kateri se nahajajo v datoteki my.ini. Za veliko večino projektov zadostuje privzeto urejena nastavitev parametrov, katera se sprotno ureja med samo namestitvijo programa. Za zahtevnejše projekte privzete nastavitve ne zadoščajo, saj bosta odzivni čas in hitrost delovanja zelo opešala sistem, nakar bo treba optimizirati ter urediti nastavitvene parametre za hitrejše delovanje strežnika. Datoteka my.ini omogoča vnos nastavitvenih parametrov, ki bi jih morali drugače vnesti v ukazno vrstico, vsakič, ko zaženemo program. Lokacija datotek Datoteka z nastavitvenimi parametri my.ini se nahaja v direktoriju C:\ProgramData\MySQL\MySQL Server 5.6. MYSQL_HOME je spremenljivka, katera vsebuje pot do datoteke. V primeru, da MYSQL_HOME ob zagonu strežnika ni nastavljen, bo s pomočjo skripte mysqld_safe poskušala določiti pot: BASEDIR in DATADIR predstavljata imena poti osnovnega imenika MySQL in imenika podatkov, če je my.ini datoteka v DATADIR in ne v BASEDIR imeniku, mysqld_safe določi MYSQL_HOME za DATADIR, v nasprotnem primeru, če MYSQL_HOME ni določen in datoteke my.ini ni v imeniku DATADIR, skripta mysql_safe določi MYSQL_HOME za BASEDIR.[16] DATADIR je podatkovni imenik, ki je bil določen v času nastavitve. Uporaba -datadir med delovanjem sistema ne vpliva na to, kje strežnik išče opcijske datoteke. MySQL išče opcijske datoteke v točno določenem vrstnem redu in v primeru, da datoteke, katero želi uporabiti ne obstaja, datoteko ustvari z navadnim urejevalnikom besedila. V primeru, da se ugotovi več danih izbir, ima prednost zadnja instanca. Trije argumenti, ki vplivajo, kako MySQL bere datoteko z nastavitvenimi parametri: no-defaults MySQL naj ne prebere datoteke defaults-file=/pot/do/datoteke MySQL naj prebere le datoteko, ki je izrecno določena, vse druge ignorira. defaults-extra-file=/pot/do/datoteke MySQL naj po globalni nastavitveni datoteki prebere še dodatno datoteko. 10

20 Administracija podatkovne baze MySQL Z argumenti lahko rešimo težave v primeru, da želimo na istem gostitelju upravljati z več strežniki. Tako lahko na vseh strežnikih uporabimo kopijo, ki določa vse skupne vrednosti, ter hkrati niso le za en sam strežnik. Tako lahko za vsak strežnik dodatno nastavimo nastavitvene parametre, glede na njegovo stojno opremo in s tem dosežemo učinkovitost. Oblika nastavitvene datoteke Datoteka je oblikovana in razdeljena na enega ali več delov oz. skupin, ki so med seboj ločeni z imeni v oglatih oklepajih, kot je npr. [mysqld]. Prav tako, kot v programskih jezikih, lahko dodamo komentarje, kateri služijo za boljše razumevanje dokumenta. Komentarji se začnejo z # ali, in veljajo do konca vrstice. MySQL ne pozna večvrstičnih komentarjev. Pravilno komentiranje: # Številka vrat, skozi katera bo potekal»promet«protokola TCP/IP port=3308 Nepravilno komentiranje: port=3308 # Številka vrat, skozi katera bo potekal»promet«protokola TCP/IP - [group]: je del poglavja ali skupine, kot smo že omenili na začetku. Po navedbi skupine sledijo nastavitve, ki so možne za to skupino. To določa programu, da od tu in vse do naslednje»skupine«, veljajo nastavitve za to skupino strežnika. - opt_name = value: je ukaz oz. opcija z vrednostjo, katera strežniku poda podatke za delovanje po željah, ki smo jih navedli. Vsi ti ukazi so enakovredni ukazom, ki se vnašajo v ukazno vrstico, le da pred opcijo izpustimo znak -. Presledki med opcijskimi imeni in vrednostmi se prezrejo.[5][16][17] Optimizacija my.ini datoteke Med namestitvijo strežnika MySQL se hkrati v ozadju namestitve dopolnjuje tudi datoteka z namestitvenimi parametri. Po končani namestitvi lahko brezpogojno upravljamo strežnik, vendar se moramo zavedati, da so nastavitve posplošene za povprečen strežnik in ni optimiziran našim zahtevam. Torej bomo morali sami poskrbeti za optimizacijo. - InnoDB Najprej optimizirajmo shranjevalni mehanizem InnoDB, saj je mehanizem privzeto izbran. Če smo se odločili zanj, moramo poskrbeti za optimizacijo, saj privzete nastavitve ne zadostuje za popoln sistem.[13] 11

21 Administracija podatkovne baze MySQL Določimo lahko lokacijo, kot tudi velikost datotek tabel InnoDB. Uporabimo možnost innodb_data_file_path v skupini [mysqld]. Določimo lahko več datotek hkrati, katere ločimo s» ; «. Vsako datoteko lahko tudi omejimo na določeno velikost s» : «, npr.: [Mysqld] innodb_data_file_path = datoteka1: 50M; datoteka2: 60M: autoextend: max: 200M Velikosti datotek označimo s K, M ali G, ki uprizarjajo KB, MB oz. GB. Datoteko1 smo torej omejili s fiksno velikostjo 50MB, datoteko2 pa na 60MB, le da hkrati določamo, da se lahko velikost datoteke dinamično spreminja, kar smo določili z autoextend. Kadar nismo povsem prepričani glede velikosti datotek, lahko dodamo pogoj maksimalne velikosti datoteke. Če bi datoteka presegla 60MB, z določitvijo max: 200M, razširimo dinamično velikost datoteke do 200MB. Kadar ustvarite več datotek je priporočljivo, da se ustvari tudi skupen»direktorij«, v katerih bodo shranjene te datoteke: [Mysqld] innodb_data_home_dir = / datoteka innodb_data_file_path = datoteka1: 50M; datoteka2: 60M: autoextend: max: 200M Lahko se nastavijo tudi absolutne vrednosti poti za podatkovne datoteke: innodb_data_file_path = / dir/datoteka1: 50M Nastavitvene parametre za InnoDB shranjevalni mehanizem, lahko prav tako nastavimo glede na zahtevnost strojne opreme strežnika. S tem lahko optimiziramo sistem na višjo raven in pri tem ne obremenimo delovanja strežnika. Podani primer nastvitvenih parametrov je primeren za strežnike s kapaciteto delavnega pomnilnika 512MB in z dvema trdima diskoma: [mysqld] innodb_data_file_path = disk1/ dir/datoteka1: 2000M ;/ disk2/ dir/datoteka2: 2000M: autoextend # # Strežniku lahko določimo maksimalno 50 80% pomnilnika innodb_buffer_pool_size=256m innodb_additional_mem_pool_size=20m # # Datoteki log dodelimo maksimalno 25% pomnilnika innodb_log_file_size=64m 12

22 Administracija podatkovne baze MySQL innodb_log_buffer_size=8m # innodb_flush_log_at_trx_commit=1 Splošne nastavitve za optimizacijo strežnika: # Nastavitve za strežnik [mysqld] # Vrata omogočajo povezavo MySQL strežnika preko TCP/IP protokola port = 3306 # # Nastavitve za predpomnilnik moramo omejiti med 50% - 80% delavnega pomnilnika # strežnika # Omejitev glede na bit operacijskega sistema # 32-bit windows sistem lahko obremenimo na maksimalno 4GB # 64-bit windows sistem dopušča večje obremenitve, omejitev je na 50% - 80% maksimalne # zasedenosti delavnega pomnilnika key_buffer_size = 256M # # Največja velikost paketov - največja dovoljena velikost 1GB max_allowed_packet = 1M # # Št. hkrati odprtih tabel table_open_cache = 256 # # Kadar pri povpraševanju sprožimo sortiranje podatkov z ORDER BY lahko pri veliki # količini podatkov zelo obremenimo strežnik # Priporočljiva omejitev dovoljene velikosti je med 512kB in 2MB sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 13

23 Administracija podatkovne baze MySQL # # Količina pomnilnika, ki je dodeljena za uporabo predpolnjenja poizvedb query_cache_size= 16M # # Ni dostopa do MySQL strežnika z oddaljenega računalnika skip-networking # # Replication Master Server (privzeto) log-bin="stas-bin" # # binary logg format - mixed priporočeno binlog_format=mixed # # Id strežnika server-id = 1 # Privzet shranjevalni mehanizem strežnika MySQL default-storage-engine=innodb 14

24 4 SHANJEVALNI MEHANIZMI OZ. TIPI TABEL MySQL podpira različne shranjevalne mehanizme (angl. storage engines) za shranjevanje tabel. Vsak shranjevalni mehanizem ima svoje prednosti in slabosti. Vsak izmed mehanizmov je dokaj učinkovit, vendar z napačnim shranjevalnim mehanizmom lahko oviramo zmogljivost delovanja. Na primer, z Arhive shranjevalnim mehanizmom bomo manj učinkoviti pri branju in pisanju istih tabel, kot če bi izbrali MyISAM. Torej izbira shranjevalnega mehanizma je zelo pomembna pri delovanju podatkovne baze. Zato mora administrator PB zelo dobro poznati delovanje posameznih mehanizmov, če želi, da njegova PB deluje po njegovih željah. V nadaljevanju vam bomo predstavili nekaj najbolj pogosto uporabljenih shranjevalnih mehanizmov. Nekaj nasvetov pri izbiri shranjevalnega mehanizma: Moramo vedeti, kolikšna je frekvenca zapisov. Če je potrebna podpora transakcij. Ali potrebujemo tuje ključe. Zahteva po indeksiranju. Velikost tabel in hitrost naraščanja. Prenosljivost arhitekture tabel med operacijskimi sistemi. Zahteve in prilagodljivost na spreminjajoče se zahteve glede podatkov. Omeniti velja, da MySQL omogoča izbor shranjevalnih mehanizmov za posamezno tabelo, s čimer lahko dobimo večjo uspešnosti delovanja PB. Torej, za tabele, ki bodo namenjene dodajanju velikih količin podatkov, lahko izberete InnoDB. Tabele, katere bodo obremenjene s transakcijami oz. veliko količino povpraševanj, je primernejši MyISAM shranjevalni mehanizem. Izbor shranjevalnega mehanizma za posamezno tabelo je edinstven za MySQL in je lahko ključnega pomena pri doseganju večje uspešnosti delovanja PB. 15

25 V naši razpravi o shranjevalnih mehanizmih, bomo zajeli naslednje teme: MyISAM storage engine. InnoDB storage engine. MERGE storage engine. MEMORY storage engine. ARCHIVE storage engine. CSV storage engine. FEDERATED storage engine. NDB Cluster storage engine. Nasvet: ob kreiranju nove tabele lahko dodate tudi možnost nastavitev shranjevalnega mehanizma CREATE TABLE (...) ENGINE=Storage engine, kjer je Storage engin eden izmed zgoraj omenjenih shranjevalnih mehanizmov. 4.1 MyISAM Storage Engine MyISAM je razširjena različica osnovnega ISAM shranjevalnega mehanizma s številnimi dodatnimi optimizacijami in izboljšavami. MyISAM je optimiziran za hitrost in stiskanje ter je prenosen med različnimi operacijskimi sistemi enaka MyISAM tabela se lahko uporablja v Windows in UNIX OS. Podpira velike tabele - velikosti vse do 256TB - ter omogoča indeksiranje BLOB in TEXT stolpcev. Tabele in indeksi tabel se lahko stisnejo in tako prihranimo prostor. Ta funkcija pride v poštev, ko shranjujemo velika BLOB ali TEXT polja. VARCHAR polja lahko omejimo na določeno dolžino ali dinamično prilagodimo na podatke v poljih, prav tako pa podpira iskanje zapisov katerega koli dela in pa tudi celoto. Kot smo že omenili je MyISAM optimiziran prav za MySQL PB, zato ne preseneča, da so izvajalci dodali veliko inteligence v ta shranjevalni mehanizem. Ob zagonu MySQL samodejno preveri MyISAM tabele in v primeru napak le te tudi odpravi. Tabele podatkov in indeksnih datotek je mogoče shraniti na različnih datotečnih sistemih. Zagotavlja visoko zmogljivost ob velikih vnosih podatkov v tabele, pri posodobitvah in brisanju tabel. Velike tabele je mogoče stisniti v manjše pakete, ki zasedejo manj prostora na disku. Datoteke in imeniki Vsi shranjevalni mehanizmi v MySQL uporabljajo eno ali več datotek za obdelavo operacij v nizu podatkov, strukturiranih v skladu z arhitekturo shranjevalnega mehanizma. Imenik 16

26 data_dir vsebuje eno mapo za vsako shemo, ki je nameščena na strežniku. MyISAM ima ločene datoteke za podatke o tabelah, indeksih in meta-podatkih: table_name.frm podatki o meta-podatkih, table_name.myd podatki o vrsticah tabel, table_name.myi podatki o indeksih. MyISAM ima organizirane tabele tako, da jih lahko prenesemo z enega v drug strežnik na preprost način, in sicer premaknemo le te tri omenjene datoteke. Ko se MySQL strežnik in MyISAM zaženeta, strežnik najprej prebere datoteko table_name.frm, nato pa pridobljene podatke, ki so podobni zapisu hash, shrani v predpomnilnik tabele. Opomba: datoteka ni isto kot deskriptor datotek. Datoteka je zbirka podatkov, evidence in podatkovnih strani, ki so povezane v logične enote. Deskriptor datotek je število, ki ustreza datoteki oz. napravi, ki je odprta s posebnim postopkom. Naloga deskriptorja je, da obvešča sistem, če je datoteka odprta za branje ali pisanje. MyISAM uporablja samo indeksne podatke in ne beleži podatkov na straneh. Kot sekvenčni dostop pomeni, da MyISAM zapisuje enega za drugim v eni sami datoteki (.MYD). Zapise predpomnilnika bere preko IO_CACHE strukture v glavnem pomnilniku, zapis za zapisom. Za razliko od InnoDB naloži in upravlja zapise podatkov v pomnilniku v celoti, 16KB na stran. Torej, ker MyISAM podatkov ne shranjuje na disk v obliki strani, ne zapravlja nepotrebnega prostora ob polnjenju med zapisi v datoteko.myd (zato ima dodaten prostor za vnašanje novih zapisov). Praktično gledano to pomeni, da je dejanski del podatkov iz MyISAM tabele lahko manjši od enake tabele, ki jo upravlja InnoDB. Vendar to dejstvo je zanemarljivo v primeru, ko se odločamo med shranjevalnimi mehanizmi. Veliko lastnosti je, katere so bolj pomembne in pripomorejo k boljšemu delovanju. Za upravljanje indeksnih podatkov MyISAM uporablja 1KB strani (interno, razvijalci se na to sklicujejo kot na indeks blok). Če bloka ni mogoče najti v predpomnilniku ključa, lahko blok indeksa preberemo tudi z diska temu služi.myi datoteka. Formati zapisov Kadar analiziramo in ustvarjamo tabele (CREATE TABLE ali ALTER TABLE), MyISAM določa dva različna formata zapisov tabel. Ali bomo podatke shranjevali v vsaki vrstici tabele statične (fiksne) velikosti ali se bo dolžina podatkov v vsaki vrstici razlikovala (dinamično). 17

27 Fizična oblika.myd datoteke in evidence, ki jih vsebuje v datoteki, je odvisna od tega razlikovanja. Poleg fiksnih in dinamičnih oblik zapisa, shranjevalni mehanizem MyISAM pozna tudi stisnjen format vrstic. Opomba: MyISAM zapisi oblik se izvajajo v naslednjih izvornih datotekah: - /myisam/mi_statrec.c (fiksni zapis), /myisam/mi_dynrec.c (dinamični zapis), - /myisam/mi_packrec.c (stisnjen format zapisa). 1. Fiksni format zapisa Kadar je format zapisa fiksne dolžine, bo.myd dokumentacija vsebovala vsak zapis MyISAM v zaporedju, z NULL bajtom (0x00) med vsakim zapisom. Vsak zapis vsebuje bitno sliko zapisa glave. Omenimo naj, da se ta bitna slika ne navezuje na grafiko. Bitna slika v programiranju pomeni skupek posameznih bitov, razporejenih v segmentih (da bi jih uskladili v bitno strukturo), kjer je vsak bit v bajtu»zastava«, katera predstavlja neko stanje ali logično vrednost. Na primer, bitna slika v binarni (ali 0xF5 v šestnajstiški) obliki, ima drugi in četrti bit izklopljen (nastavljen na 0), vsi ostali so vklopljeni (nastavljeni na 1). Upoštevajte, da je bajt sestavljen iz bitov in je berljiv iz desne proti levi, torej prvi bit je najbolj desni bit. MyISAM bitni zapis, glava za fiksne dolžine zapisov, je sestavljena iz naslednjih bitov v tem vrstnem redu: En bit predstavlja ali je bil zapis izbrisan - če je bit 0, pomeni, da se vrstica izbriše. En bit za vsako polje v MyISAM shranjevalnem mehanizmu je lahko vrednost NULL. Torej, če zapis vsebuje vrednost NULL v polju, pomeni, da ima bit vrednost 1, sicer je vrednost 0. Skupna velikost glave zapisa bitne slike je odvisna od števila NULL zapisov oz. polj, ki jih vsebuje tabela. Če tabela vsebuje osem NULL polj, torej od 0 7, je bitna slika glave velikosti 1 bajt, 8 15 NULL polj, 2 bajta itn. Priporočljivo je, da se izogibamo poljem z NULL vrednostjo, vendar ne bo praktičnega učinka na velikosti.myd, razen, če tabela vsebuje več kot sedem NULL polj. Po vsakem zapisu glave bodo vrednosti zapisov sicer v vrstnem redu stolpcev, ki so opredeljeni v oblikovanju tabele. Upoštevati pa je potrebno, da porabijo toliko prostora, kot zahteva vrsta podatkov. Ker se lahko zanese le na statično dolžino vrstice podatkov za fiksni format zapisa, bo predpomnilnik, MyISAM shranjevalnega mehanizma, vseboval informacije o največji dolžini vrstice podatkov. S 18

28 pomočjo te informacije, ko se podatki v vrsticah berejo vzporedno (skenirajo) po posameznih MyISAM zahtevah za dostop, ni več potrebno preračunavati zamik zapisov v predpomnilniku. Torej, namesto tega bo vedno nekaj x bajtov v predpomnilniku, kjer je x največja dolžina vrstice»+«velikost glave bitne slike. Kadar išče podatkovni zapis s ključem, predpomnilnik shranjevalnega mehanizma MyISAM, lahko zelo hitro izvede iskanje potrebnih podatkovnih vrstic, s preprostim množenjem vsote dolžine zapisa in velikosti glave bitne slike z interno številko zapisa, ki je / se začne pri ničli. To omogoča hitrejši dostop do tabel s fiksno dolžino zapisov, vendar lahko pride do povečanega dejanskega prostora na disku. Opomba: MySQL lahko»prisilite«, da uporabi specifičn format vrstic s pomočjo možnosti ROW_FORMAT v vaši CREATE TABLE. 2. Dinamični format zapisa Kadar MyISAM tabela vsebuje spremenljivo velikost tabel, kot so podatkovni tipi VARCHAR, TEXT, BLOB..., takrat je format zapisov v datoteko.myd znan kot dinamičen format zapisa. Podobno kot pri fiksnem formatu, ima prav tako vsak dinamični zapis»glavo«, katera beleži podatke. Vsi ti podatki so zapisani v datoteki.myd v točno določenem zaporedju. Glava dinamičnega zapisa je sestavljena iz več elementov. Ti elementi so: Začetni element, ki zaseda 2 bajta, označuje začetek zapisa glave. To je potrebno zato, ker se shranjevalni mehanizem ne more sklicevati na zapis glave, čeprav je statično podoben fiksnemu formatu zapisa v.myd datoteki. Eden ali več bajtov, ki shranjujejo dejansko dolžino (v bajtih) zapisa. Eden ali več bajtov, ki shranjujejo neuporabljeno dolžino (v bajtih) zapisa. MyISAM pušča prostor v vsakem zapisu, ki omogoča podatku razširitev določene dodatne velikosti, ne da bi morali premakniti zapis znotraj datoteke.myd. Ta del zapisa v glavi prikazuje, koliko prostega prostora še ostaja ob koncu vnosa podatkov shranjenih v zapisu, torej na začetku naslednjega zapisa. Bitna slika je podobna bitni sliki, ki se uporablja za zapis s fiksno dolžino, kar kaže na NULL polja in ali je bil zapis izbrisan.»overflow«kazalec kaže na mesto v datoteki.myd, ali je evidenca posodobljena in ali zdaj vsebuje več podatkov, kot jih je bilo v prvotni dolžini zapisa. Lokacija kazalca je preprosto naslov drugega zapisa, kjer je shranjeno preostanek zapisa podatkov. Po tem zapisu v glavi se shrani dejanski podatek, nato sledi neuporabljen prostor do naslednjega zapisa. 19

29 Dinamični zapis za razliko od fiksnega zapisa ne porabi celotne velikosti polja, ko se vstavi vrednost NULL. Namesto tega shrani le eno vrednost NULL (0x00), namesto enega ali več ničelnih vrednosti istega NULL polja zapisa s fiksno dolžino. Pomembna razlika med fiksno in dinamično dolžino zapisa je povezana s posodobitvijo zapisa. Za statično dolžino vrstice zapisa posodobitev podatkov nima nobenega vpliva na samo strukturo zapisa, ker je dolžina podatkov, ki se vstavi enaka podatku, ki bo izbrisan. Za razliko od dolžine vrstic zapisa v izrednem primeru, če bi morda vnosni podatek presegel velikost, ki jo ima na razpolago. Izjemoma se lahko vstavi povezava v vrstico naslednjega podatka, v katerem so ostali podatki (overflow kazalec). Razlog za to je povezovanje, ki preprečuje potrebe za olajšanje preureditev več novih zapisov. Povezava služi kot ogrodje za nove informacije, povezava bo opozorila na lokacijo naslova, ki je na voljo na shranjevalnem mehanizmu v času posodobitve. Tovrstna razdrobljenost zapisov podatkov lahko popravi ukaz optimizacija tabele (angl. OPTIMIZE TABLE) ali z zagonom #> myisamchk-r. Zaklepanje tabel v MyISAM Da se zagotovi celovitost podatkov, shranjevalni motor MyISAM podpira samo eno vrsto zaklepanja zaklepanje tabele (angl. table locking). V določenih pogledih je lahko ta vrsta zaklepanja»pomanjkljivost«, ampak za številne aplikacije se ta vrsta zaklepanja ter njeno specifično izvajanje pri shranjevalnem mehanizmu MyISAM, precej dobro obnese oz. deluje, in je lahko učinkovita tudi pri zelo visokih scenarijih vzporednosti. MyISAM pozna tri različne tipe zaklepanja, glede na zahtevo jih povezuje»nit«: Lokalno branje podatkov (angl. READ LOCAL): kadar povprašujemo s SELECT stavkom, se v pomnilnik shrani kopija podatkovnega zapisa, nato MyISAM zaprosi za READ LOCAL način zaklepanja podatkov. Ta tip zaklepanja ne preprečuje vstavljanja v tabelo; če bodo podatki dodani, bodo dodani na konec datoteke. V primeru, če bi želeli podatek vriniti v sredino podatkovne zbirke, moramo po izvršitvi ukaza INSERT počakati, da se READ LOCK zaklepanje zaključi s SELECT povpraševanjem. Branje podatkov (angl. READ): v primeru, ko se.myd datoteka uporablja zgolj za pridobivanje informacij uporabniku (angl. client), se uporabi tip zaklepanja READ (poimenovano tudi kot skupno zaklepanje). Z READ zaklepanjem onemogočimo vse nadajljne operacije, kot so UPDATE, INSERT in DELETE. 20

30 Pisanje podatkov (angl. WRITE): zaklepanje se aktivira, kadar se nad določeno tabelo izvajajo zahteve UPDATE, DELETE,ali če prejme INSERT zahtevek, da naj zapolni obstoječ prostor podatkovne zbirke, ki je bil prej izbrisan z ukazom DELETE. Torej, z READ LOCAL zaklepanjem, lahko MyISAM shranjevalni mehanizem, zapisuje podatke v tabele brez zaklepanja za branje podatkov. Kako je to mogoče? MyISAM lahko zahtevo INSERT, ki je bila zahtevana za tabelo s primarnim ključem (angl. primary key), povečuje samodejno na konec indeks datoteke, za razliko od branja v indeksno datoteko, da bi našli ustrezen prostor za vstavitev novih podatkov. Ker se nov ključ vedno doda na konec indeksne datoteke za to vrsto datoteke, ni treba, da imajo SELECT operacije zahtevane ključe ali podatke od kjerkoli drugje v tabeli. Iz teh razlogov je MyISAM odlična izbira za tabele, katere večinoma beležijo podatke. Na primer, izbor MyISAM je odlična izbira za tabele, ki vsebujejo podatke, do katerih neprestano dostopamo, medtem ko se nemoteno dodajajo novi zapisi s frekvenco dodajanja več tisoč zapisov na minuto. Izbira indeksov Čeprav dejanski podatki niso shranjeni v vrstnem redu primarnega ključa, MyISAM ne vodi seznama kazalcev (kot interne številke zapisov) oz. podatka zapisov znotraj indeksov. Ta ključ predpomnilnika vsebuje povezan seznam kazalcev, kateri se sklicujejo na naslove v notranjosti datoteke.myd, kjer so shranjeni dejanski podatki vrstic. Ne glede na število indeksov, ki so»pritrjeni«na MyISAM tabele, se vsi indeksi izvajajo z uporabo ne-nakopičene oz. gručaste organizacije. MyISAM podpira tri različne tipe indeksov, s katerimi lahko pridobimo podatke s svojega ključnega predpomnilnika B- drevo (angl. B- tree), R-drevo (angl. R-tree) in FULL TEXT. [1][2][4][5] 4.2 InnoDB Storage Engine Shranjevalni mehanizem InnoDB je bil prvič predstavljen v različici 4.0. Je zelo učinkovita oblika tabel, ki zagotavlja polno podporo transakcij v MySQL ter ne ogroža hitrosti in zmogljivosti. Maksimalna velikost InnoDB tabel je veliko manjša v primerjavi z MyISAM tabelami, dosežejo lahko le do 64TB. Asinhroni vhod / izhod ter zaporedno branje izboljša hitrost pridobivanja podatkov, s čimer optimizira datoteke in upravljanje pomnilnika. 21

31 Inno DB podpira samodejno ustvarjanje hash indeksov, kar izboljša uspešnost, zanesljivost in hitrost delovanja baze podatkov kot rezultat. InnoDB tabele ujamejo, včasih tudi presegajo, delovanje in uspešnost MyISAM tabele. InnoDB tabele so prenosljive med različnimi različicami operacijskih sistemov, arhitektura transakcij je zelo»stabilna«ter s preverjanjem napak ob zagonu naredi MySQL še bolj robusten. Shranjevalni mehanizem InnoDB obravnava nekatere pomanjkljivosti MyISAM shranjevalnega mehanizma. Zagotavlja izvršitev omejitve tujih ključev in vse transakcije zmožne obdelovanja. Velika»moč«InnoDB shranjevalnega mehanizma izvira prav iz zaklepanja, saj ima multiversion nadzor sočasnosti MVCC (angl. multiversion concurrency control). InnoDB ima podporo na več ravneh»izolacije«transakcij, kar omogoča nadzor nad tem, kako so transakcije obdelane. Izvrševanje razmerij tujih ključev InnoDB uveljavlja referenčne integritete tujih ključev (angl. foreign key), razmerje na ravni baze podatkov. Ob kreiranju nove tabele - CREATE TABLE, z dodanim tujim ključem, je najprej potrebno preveriti klavzulo reference med tabelo»starš«, katera ima primarni ključ in novo tabelo, da se preveri obstoj ključa, ko se vstavi zapis v tabelo»otrok«. Pogost primer razmerja starš-otrok je enak scenariju stranka naročilo in stranka naročilnica postavka, kar pomeni, da lahko vsebuje eno ali več podrobnosti o naročilu. Upoštevati je potrebno, da mora biti najprej kreirana tabela s primarnim ključem in šele nato lahko kreiramo tabele s tujimi ključi, katere se sklicujejo na tabelo s primarnim ključem. Primer kreiranja tabel, katere bodo v relaciji stranka naročilnica postavka: mysql> CREATE TABLE stranka ( > id INT NOT NULL AUTO_INCREMENT, > ime_priimek VARCHAR(30) NOT NULL, > naslov VARCHAR(100) NOT NULL, > PRIMARY KEY (id)) ENGINE = INNODB; mysql> CREATE TABLE narocilnica ( > id INT NOT NULL AUTO_INCREMENT, > stranka_id INT NOT NULL, > datum_narocila INT NOT NULL, > PRIMARY KEY (id), > FOREIGN KEY (stranka_id) REFERENCES stranka (id)) ENGINE = INNODB; 22

32 mysql> CREATE TABLE postavka ( > id INT NOT NULL AUTO_INCREMENT, > narocilo INT NOT NULL, > produkt VARCHAR(30) NOT NULL, > PRIMARY KEY (id), > FOREIGN KEY (narocilo) REFERENCES narocilnica (id)) ENGINE = INNODB; Zaklepanje tabel v InnoDB Raven privzetega zaklepanja InnoDB shranjevalnega mehanizma je zaklepanje vrstic. Prav tako lahko zaklene celotno tabelo, kot MyISAM. Zaklepanje tabel je bolj učinkovito iz pomnilniške perspektive, medtem ko zaklepanje vrstic je ključnega pomena za aplikacije, katere namen je velika frekvenca branja, pisanja in je pri tem odločilna hitrost ter pogosta posodobitev podatkov. Porodi se vprašanje, kako je lahko zaklepanje celotne tabele bolj učinkovito, saj veže večji blok zapisov. Pri zaklepanju tabel, MyISAM»postavi ključavnico«na informacijsko strukturo tabel, katera nit je v skupni rabi branja in pisanja. Uporabi se le en sam zapis, ki poteče v relativno kratkem času (navadno nanosekundi). Raven zaklepanja vrstic beleži velik logični blok informacij o zaklenjenih vrsticah, nad katerimi se izvajajo transakcije, posledično obremeni procesor in pomnilnik. InnoDB pri zaklepanju vrstic uporablja notranjo tabelo, ki vsebuje podatke o ključih. Podoben učineku hash stiskanja, kateri beleži primarne ključe tabel (eden izmed razlogov, zakaj InnoDB tabele moraj imeti primarni ključ). Pri sistemih, kjer je velika verjetnost, da bo več uporabnikov hkrati sprožilo zahtevek po transakciji UPDATE ali SELECT, je priporočeno izbrati možnost OLTP/OLAP4. Kadar zaklepamo celotno tabelo, mora zahtevek za branje počakati, da se zahtevek za pisanje v celoti konča, šele nato lahko beremo podatke v tabeli. Pri zaklepanju vrstic pa velja samo za vrstico, nad katero se izvaja zahtevek pisanja, za vse ostale podatke v tabeli pa se lahko zahteva zahtevek za branje podatkov. Zaklepanje vrstic in shranjevalni mehanizem InnoDB sta odlična kombinacija, kadar se odločamo med shranjevalnimi mehanizmi, katerih bo privzeta naloga izvajanje velikih frekvenc pisanja in branja podatkov. Prav tako kot MyISAM, InnoDB izvaja mehanizem, ki omogoča vstavljanje podatkov na konec podatkovne datoteke, kar je v primeru InnoDB vedno konec nakopičenih indeksov, brez hkratne izdaje izključnega zaklepanja tabele. 23

33 Datoteke in imeniki Organizacija datotek v InnoDB je drugačna, kot v MyISAM. Med tem, ko strežnik MySQL vzdržuje datoteko.frm za vsako tabelo InnoDB, podobno pri MyISAM, InnoDB ohranja tudi svoje meta informacije o svojih tabelah. S tem ni mogoče na preprost način prenesti InnoDB bazo podatkov iz enega strežnika v drugega s pomočjo kopiranja tabel. Privzeto se vse InnoDB tabele zgledujejo po zasnovi Oracle z istim imenom. Tabele so sestavljene iz več datotek, njihova velikost je omejena na velikost operacijskega sistema in se dinamično spreminja. V datoteki my.ini, se privzeto ime začne z ibdata in nato s številko. Primer iz datoteke: innodb_data_home_dir = /usr/local/var/ innodb_data_file_path = ibdata1:2000m;ibdata2:10m:autoextend V ibdata so vsi podatki o tabelah in indeksih InnoDB tabel. Ibdata datoteke se nahajajo v innodb_data_home_dir, med tem, ko so.frm datoteke v glavnem imeniku MySQL data_dir. Datoteka je sestavljena z InnoDB, kar pomeni, da tvori prostor tabel InnoDB. Tabele lahko vsebujejo poljubno število datotek, autoextend funkcija zagotavlja, da lahko velikost tabel sorazmerno narašča z bazo podatkov. To pomeni tudi, da omejene velikosti datotek (na primer, 2GB v večini distribucij) je mogoče»prekoračiti«, saj lahko tabela vsebuje več datotek, za razliko od MyISAM (.MYD datoteka). Tabele imajo dve»notranji«datoteki oz. segmenta, vendar ti segmenti niso vidni. En segment se uporablja za gručaste podatkovne strani indeksa, drug segment se uporablja za sekundarne indekse, ki temeljijo na gručastem ključu. Razlok za to je narejen tako, da se lahko zapisi zaporedno dodajo v velike bloke, tako podatke kot tudi sekundarne indekse strani v tabeli. Za izvajanje sistema InnoDB za procesiranje transakcij, nastanejo tudi dnevniki datotek. V datoteki my.ini lahko nastavimo parametre, kje se shranjujejo dnevniki: innodb_log_group_home_dir = /usr/local/var/ innodb_log_arch_dir = /usr/local/var/ To so imeniki, kjer so shranjene glavne log datoteke in log arhivi datotek. Privzeto so te datoteke poimenovane ib_logfile in nato sledi število, ki predstavlja segment dnevnika. Od različice MySQL naprej se lahko določi, da se organizacija datotek formata InnoDB, nastavi tudi za MyISAM shranjevalni mehanizem. Da omogočimo to obliko datoteke, vstavimo opcijo innodb_file_per_table pod odsek Mysqld v my.ini datoteki. Vendar ne smemo pozabiti, da se ta možnost ne sme onemogočiti in niti ne sme dovoliti, da se 24

34 prenese InnoDB shema na drug računalnik s kopiranjem.ibd datotek, kot to lahko storimo z.myd datotekami, MyISAM shranjevalnega mehanizma. Opomba: trenutni tabeli ni mogoče ročno dodeliti več ibdata datotek, zato ni možno, da so InnoDB tabele shranjene ločeno na več ločenih diskovnih ali drugih napravah. Organizacija podatkovne strani InnoDB shranjuje, tako na disku kot tudi v pomnilniku, podatke o zapisih in indeksih v 16KB velikih straneh. Strani so organizirane v datotekah ibdata kot obseg 64 zaporednih strani. Razlog za to je, da zagotovi dovolj velik del prostora na disku in v pomnilniku, da se lahko, kolikor je le mogoče, podatki zapisujejo sekvenčno. To je proaktivno stališče pri vzdrževanju, na način defragmentacije sistema.[1][2][4][5] Ostali shranjevalni mehanizmi Čeprav sta MyISAM in InnoDB najpogosteje uporabljena shranjevalna mehanizma, MySQL ponuja tudi druge shranjevalne mehanizme, ki so bolj specifični. 4.3 MERGE Storage Engine Je virtualna tabela, kombinacija več MyISAM tabel, ki so združene v eno samo tabelo. Takšna kombinacija tabel je mogoča le v primeru, da imajo vse tabele, ki so vključene, popolnoma identično strukturo tabel. Vsaka razlika v vrsticah ali indeksih lahko prepreči uspešnost združitve tabel. MERGE shranjevalni mehanizem uporablja indekse njegovih združitvenih tabel. Torej nima svojih lastnih indeksov, kar pomeni, da ne moremo izboljšati hitrosti delovanja. Omogoča SELECT, DELETE in UPDATE operacije ter je zelo priročno, kadar združujemo podatke različnih tabel. Pospeši delovanje združitve in iskanja med več tabelami. 25

35 Spajanje tabel iz več tabel MyISAM: mysql> CREATE TABLE primer1 ( -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> ime_priimek CHAR(20)); mysql> CREATE TABLE primer2 ( -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> prebivalisce CHAR(20)); mysql> INSERT INTO primer1 (ime_priimek) VALUES ('Staš Kopina'),('tabela1'); mysql> INSERT INTO primer2 (prebivalisce) VALUES ('Maribor'),('tabela2'); mysql> CREATE TABLE virtual ( -> id INT NOT NULL AUTO_INCREMENT, -> sporocilo CHAR(20), INDEX(id)) -> ENGINE=MERGE UNION=(primer1,primer2); Upoštevati je potrebno, da so definicije stolpcev v vseh treh tabelah enake. Namesto primarnega ključa, ki je opredeljen v spajanju tabel, je normalen indeks, ki se uporablja za kolone. Primer MyISAM tamele beleženje prometa letališča: mysql> CREATE TABLE dnevnik_prometa ( > id INT UNSIGNED NOT NULL AUTO_INCREMENT, > destinacija_potovanja VARCHAR(255) NOT NULL, > tip_letala VARCHAR(255) NOT NULL, > datum_poleta TIMESTAMP NOT NULL, > PRIMARY KEY (id), > INDEX (datum_poleta, destinacija_potovanja(30))) ENGINE=MYISAM; Čeprav je ta tabela preprosta, se lahko hitro napolni z veliko informacijami tekom enega meseca. Predstavljajmo si, da se tekom meseca v naši tabeli, dnevnik_prometa, zabeleži podatkov. Sčasoma bo količina podatkov zavzela veliko prostora na disku. Da bi rešili nastalo zmedo velike tabele, lahko ustvarimo mesečne tabele, poimenovane dnevnik_prometa_yymm, kjer je yy leto in mm mesec. Za izdelavo poročila na koncu leta, preprosto kreiramo novo tabelo s shranjevalnim mehanizmom MERGE, katera bo ustvarila virtualno tabelo in s tem povezala vse tabele, ki jih želimo združiti. 26

36 Kreiranje MERGE tabele, združenje tabel: mysql> CREATE TABLE dnevnik_prometa_12 ( > id INT UNSIGNED NOT NULL AUTO_INCREMENT, > destinacija_potovanja VARCHAR(255) NOT NULL, > tip_letala VARCHAR(255) NOT NULL, > datum_poleta TIMESTAMP NOT NULL, > INDEX (id), > INDEX (datum_poleta, destinacija_potovanja(30))) > ENGINE=MERGE >UNION=(dnevnik_prometa_1201, dnevnik_prometa_1202, dnevnik_prometa_1212) > INSERT_METHOD=NO; S tem smo ustvarili tabelo s podatki za celotno leto V nastavitvenem parameteru UNION, določimo katere tabele vse bomo povezali v eno samo tabelo. INSERT_METHOD=NO, nastavitveni parameter, ki omogoča enkratno vstavljanje zapisa v tabelo. Ustvarili smo indekse na id, datum_poleta in destinacija_potovanja, ker se bo večina povpraševanj zahtevalo prav po teh stolpcih, ki so združeni v novi tabeli. Upoštevati je potrebno tudi, da nismo definirali primarnega ključa v MERGE tabeli, saj bi povzročilo napako. Do napake bi prišlo, ker MERGE shranjevalni mehanizem za združitev ne more uveljaviti primarnega ključa nad združenimi UNION tabelami. Sedaj imamo lažji dostop do vseh podatkov. Zbrani podatki MERGE tabele: mysql> SELECT LEFT(destinacija_potovanja, 30) AS 'Destinacija', >COUNT(*) AS 'Št. poletov' > FROM dnevnik_prometa_12 > WHERE datum_poleta BETWEEN ' ' AND ' ' > GROUP BY LEFT(destinacija_potovanja, 30) > HAVING 'Št. poletov' > 20 > ORDER BY 'Št. poletov' DESC > LIMIT 5; Rezultat povpraševanja nam vrne prvih pet najbolj obiskanih destinacij (ki so omejene na 30 znakov), v prvih desetih dneh januarja 2012 in število poletov, večje od

37 Zavedati se je potrebno, da ima MERGE tabela tudi nekatere pomembne omejitve. Ne morete uporabiti REPLACE zahtevka na MERGE tabelo, UNIQUE INDEX se ne izvaja na celoto nabora kombiniranih podatkov. [1][2][4][5] 4.4 MEMORY Storage Engine MEMORY shranjevalni mehanizem shranjuje svojo celotno vsebino zapisov, podatke in indekse v pomnilnik. Za svoje delovanje uporablja hash indekse, kar pripomore k hitrejšemu delovanju - deluje vsaj 30 odstotkov hitreje kot MyISAM. So dostopni in delujejo na enak način kot MyISAM ali ISAM. Podatki, ki so shranjeni v Memory tabelah, so nam na voljo le v času trajanja MySQL strežnika, to pomeni, če se strežnik MySQL zruši ali izklopi, se podatki izbrišejo - ta lastnost je velika pomanjkljivost shranjevalnega mehanizma Memory. Čeprav tabela nudi zmogljivost pri doseganju hitrosti, so primernejše, če jih uporabljamo za začasno shranjevanje in upravljanje s podatki. Zato je zelo pomembno vedeti, da vsi podatki, shranjeni v MEMORY tabeli, služijo zgolj kot začasen podatek in bo možno ta podatek z lahkoto pridobiti z aplikacijo ali skripto. Ko ustvarimo MEMORY tabelo se ustvari datoteka table_name.frm, ki vsebuje definicije tabel. Nahaja se v imeniku /data_dir/schema_name. Da se izognemo ustvarjanju MEMORY tabel po vsakem novem zagonu sistema, imamo možnost, da v ukazno vrstico vnesemo ukaz --init-file=file,. Datoteka naj vsebuje SQL stavek, ki se uporablja za zapolnitev MEMORY tabele iz obstoječih tabel. Veliko krat se nam zgodi, da za določene poizvedbe, ki si jih želimo poenostaviti, potrebujemo dodatne tabele s katerimi bomo operirali samo enkrat. Takrat je idealno, da si kreiramo MEMORY tabelo in vanjo s preprostim SQL ukazom napolnimo podatke: INSERT INTO letala_memory SELECT tip_letala FROM dnevnik_prometa_12; Ko kreiramo MEMORY tabelo lahko neposredno v izjavi CREATE TABLE implementiramo algoritme indeksov, npr. B-drevo: mysql> CREATE TABLE dnevne_cene_vozovnic > let VARCHAR(8) NOT NULL, > prvi_razred DECIMAL(6,2) NOT NULL, > ekonomski_razred DECIMAL(6,2) NOT NULL, > datum DATE NOT NULL, > INDEX USING BTREE (datum, vir)) ENGINE = MEMORY; 28

38 Kaj je začasna tabela? Ali je isto kot tabela, ki je ustvarjena kot Memory shranjevalni mehanizem? Začasna tabela in tabela Memory nista enaki. Memory tabela deluje na osnovi»mehanizem = spomin«, kar je v nasprotju z začasno tabelo, katera je ustvarjena, da obstaja le v času delovanja strežnika oz. deluje za eno sejo odjemalca. Začasna tabela je podprta v vseh shranjevalnih mehanizmih za shranjevanje podatkov v PB MySQL, vendar se samodejno izbrišejo, ko zapremo povezavo s strežnikom. Kot taka pride v poštev za prehodne seje, ki temeljijo na shranjevanju podatkov ali izračunov. Ker ni odvisna od sej, lahko dva popolnoma različna mehanizma hkrati souporabljata isto tabelo, ne da bi prišlo do nasprotij. [1][2][4][5] 4.5 ARCHIVE Storage Engine Zagotavlja način shranjevanja velikih zapisov, ki so vidni kot manjši berljivi zapisi v stisnjeni obliki. Ključna značilnost tega shranjevalnega mehanizma je njegova sposobnost za stiskanje zapisov, vstavljanje in razširjanje. Mehanizem je podprt s strani zlib knjižnice programska oprema za stiskanje podatkov. Ima odlične lastnosti za shranjevanje dnevnikov in arhivnih podatkov, kateri zavzemajo preveč prostora na disku. Archive shranjevalni mehanizem ni namenjen za pogosto branje podatkov, podpira le INSERT in SELECT operacije. Ne podpira indeksov, kar pomeni, da opravlja popolno skeniranje tabel v času branja. Archive ima boljše lastnosti stiskanja kot MyISAM, saj podpira operacije branja in pisanja ter porabi manj prostora na disku. ARCHIVE shranjevalni mehanizem v MySQL ni privzeto določen in ga je potrebno ročno dodat v datoteko z nastavitvenimi parametri, kar storimo tako, da v ukazno vrstico vnesemo ukaz: --with-archive-storage=engine option. Indeksi niso dovoljeni v tabelah ARCHIVE. Edina metoda za pridobivanje podatkov temelji na skeniranju celotne tabele podatkov. [1][2][4][5] 4.6 FEDERATED Storage Engine Podpira dostop do baze podatkov na oddaljenih strežnikih. Do podatkov dostopamo na enak način, kot bi to storili na lokalnem strežniku, saj nima svojih lastnih tabel in služi zgolj povezovanju. FEDERATED v MySQL ni privzet shranjevalni mehanizem, zato je treba z ukazom --with-federated-storage-engine optimizirati, da želimo uporabiti ta tip tabele. Ko je ustvarjen shranjevalni mehanizem - ENGINE=FEDERATED, se na lokalnem strežniku ustvari.frm datoteka. To pomeni, da se tabele in vse nastale datoteke kreirajo na 29

39 oddaljenem strežniku. Ko dostopamo do zapisov s pomočjo FEDERATED shranjevalnim mehanizmom, MySQL uporablja mysql odjemalec API, katerega naloga je, da posreduje zahtevane podatke iz oddaljenega v lokalni strežnik. Potrebno je omeniti, da pri pridobivanju podatkov iz oddaljenega strežnika s pomočjo FEDERATED shranjevalnim mehanizmom, ohrani prvotni tip tabele, kar pomeni, da če povprašujemo iz InnoDB tabel, bo mehanizem poskrbel, da se podatki pretvorijo nazaj v prvotno stanje v InnoDB. [1][2][4][5] 4.7 Napotki pri izbiri shranjevalnih mehanizmov Spoznali smo lastnosti posameznih shranjevalnih mehanizmov, njihove prednosti in slabosti. MySQL ponuja možnost, da znotraj iste podatkovne baze, vsaki tabeli dodelimo drug shranjevalni mehanizem in s tem prilagodimo zmogljivost. Za izbor idealnega shranjevalnega mehanizma je treba skrbno preučiti algoritme, ki se izvajajo nad indeksi, za ustrezno vrsto podatkov, ki jih želimo shraniti. Shranjevalni mehanizmi se med seboj razlikujejo, posledično zagotavljajo različne algoritme indeksov. Pri izbiri indeksnih algoritmov bo na primer InnoDB izbral algoritem B-drevo ali hash indeks, kateri temelji na oceni nabora podatkov. V primeru, ko izberemo FULL TEXT ali»prostorsko«indeksiranje, je najboljša in trenutno edina možnost, da izberete MyISAM. Prav tako je najboljša izbira takrat, kadar shranjujemo veliko podatkov in hkrati ne izvajamo, oz. zelo poredko, da posodabljamo (UPDATE) ali brišemo (DELETE) podatke. Pri poizvedbi COUNT, je priporočljivo izbrati shranjevalni mehanizem MyISAM, saj področje MyISAM indeksiranja zagotavlja takojšnje rezultate poizvedb, medtem ko InnoDB pri veliki količini podatkov razpade, ker mora skenirati indeksne podatke, da bi našel število vrstic v tabeli. Zasledili smo podatek, da razvijalci odpravljajo tovrstno napako in izboljšujejo tovrstno poizvedbo. Za obdelavo transakcij in pri določenih aplikacijah, katere pogosteje upravljajo prijavo v sistem (lahko pride do več prijav hkrati), je primernejši InnoDB shranjevalni mehanizem. Prav tako ima InnoDB lastnost uveljavitve omejitev tujih ključev v primeru, ko imamo relacijo med dvema tabelama, ki je povezana s tujim ključem. Zelo priporočljiv je pri aplikacijah za spletne strani, katere uporabljajo seje (angl. session), saj temelji na intenzivni ažurnosti sej spletnih aplikacij. Nove seje so ustvarjene, spremenjene ali uničene v ciklu novih prejetih zahtev HTTP. Zaradi tega so seje nato razporejene in vnovič preslikane v tabelo podatkov. Tukaj pride v poštev lastnost InnoDB shranjevalnega mehanizma, katera temelji na ravni zaklepanja vrstic, saj omogoča hiter in takojšen dostop prošenj transakcij branja in pisanja. V današnjem hitrem tempu življenja hočemo, 30

40 da sta hitrosti odzivov na spletu zelo hitri, torej v tem primeru bi lahko pomislili na shranjevalni mehanizem MEMORY, katerega lastnost je prav hitrost, vendar so razlog, zakaj je vseeno boljše izbrat InnoDB. Razlog je, da MEMORY shranjevalni motor ne podpira TEXT in BLOB podatkov, saj ne more vključiti besedila v hash algoritem. Spletne seje podatke shranjujejo prav v TEXT, kot serijski niz vrednosti. Zelo pomembno je, kadar se odločamo kateri tip shranjevalnega mehanizma izbrati, da se predvsem zavedamo tega, da z»življenjsko dobo«podatkovne baze, kot tudi aplikacije, lahko pride do sprememb podatkov, aplikacije... Priporočljivo je tudi, da si ustvarimo testno okolje in predvidene spremembe vedno prej testiramo v testnem okolju.[1][2][4][5] 31

41 5 VARNOSTNI VIDIKI V MYSQL V tem poglavju vam bomo predstavili, kako administrator skrbi za varnost podatkovne baze, kako nadzoruje uporabnike, ki souporabljajo podatkovno bazo. 5.1 Uporabniki in njihove pravice Dodeljevanje uporabniških pravic uporabnikom je zelo pomembno opravilo administratorja, saj mora skrbno poznati delovanje MySQL-a, kako preverja privilegije uporabnikov. MySQL upravlja nize tabel, ki so v podatkovni bazi. Ena izmed teh tabel je tabela, ki beleži»dodeljene«oz. odobrene pravice uporabnikom (angl. grant table). Ob zagonu strežnika se vsebina tabele naloži v pomnilnik sistema. Kadar ročno spreminjamo tabelo za dodajanje pravic uporabnikom (v MySQL različicah), se hkrati podatki tudi takoj dodajo v pomnilnik. Drugi podatkovni strežniki uporabljajo še dodatno shemo dodeljevanja pravic, dve osnovni obliki, ki sta prav tako v MySQL: odobreno (angl. granted), preklicano (angl. revoked) in privzeto (angl. default). Kadar je uporabniku dodeljena privzeta vloga pravic, podeduje celoten nabor dovoljenj skupine, kateri pripada. MySQL ne podpira skupin in tako ni mogoče podedovati lastnosti dodeljenih pravic, drugih uporabnikov. Primer sintaks: GRANT priv_type ON {*.* * db_name.* table_name} TO username; REVOKE priv_type ON {*.* * db_name.* table_name} FROM username; V MySQL so pravice uporabnikov razdeljene na več različnih ravneh uporabe, in sicer: globalno (angl. global), na ravni podatkovne baze (angl. database), tabele (angl. table), stolpcev (angl. column) in rutinsko (angl. routine). Prav tako v istem vrstnem redu MySQL preverja stopnjo privilegijev uporabnikov. Najprej v najvišji stopnji (globalno) in če tukaj ne najde potrebnega privilegija, išče naprej po stopnjah navzdol. Ko se privilegij na ustrezni ravni najde, se zahtevi ugodi. Dodeljenih je lahko več privilegijev na različnih ravneh hkrati. 32

42 Globalno področje privilegijev Privilegiji tabele mysql.user so v celoti na najvišji ravni privilegijev globalni. Prav tako velja, da so vse podatkovne baze na strežniku enako priviligirane. Administrator mora uporabniku, kateremu dodeli globalni privilegij povsem zaupati, saj mu s tem omogoča celoten nabor opravil, s katerimi lahko operira nad podatkovno bazo. Primer, kako uporabniku dodati področje globalnega privilegija: mysql> GRANT PROCESS ON *.* TO 'root'@'localhost'; Query OK, 0 rows affected (0.00 sec) Za spreminjanje tabele s stavkom ALTER TABLE, mora imeti uporabnik privilegij za CREATE, ALTER in INSERT. ALTER omogoča uporabniku, da preimenuje tabelo, vendar hkrati s tem tvegamo, da trenutni uporabnik preimenuje tabele, ki jih uporablja MySQL. Hkrati se lahko določi tudi več privilegijev, katere med sebolj ločimo z vejico: mysql> GRANT SELECT, INSERT, DELETE, UPDATE ON *.* -> TO 'username'@'localhost'; Query OK, 0 rows affected (0.01 sec) Področje privilegijev za podatkovno bazo Uporabniku, kateremu je dodeljen privilegij za raven podatkovne baze, lahko dostopa in upravlja podatkovno bazo, za katero je pridobil privilegij. S tem pridobi tudi privilegije nižjih slojev, torej privilegije na ravni tabel, stolpcev in rutin. Za dodelitev tega privilegija sta možna dva načina, in sicer s sintakso, kjer lahko takoj določimo, za katero podatkovno bazo uporabniku dodeljujemo privilegij, ali samo z»*«, kar pomeni, da dodeljujemo privilegij za trenutno podatkovno bazo (pomanjkljivost drugega načina je, da v primeru, če ni trenutne podatkovne baze, posledično uporabnik prejme privilegij na globalni ravni kar lahko privede do varnostnega tveganja). Primer sintakse, kjer uporabniku takoj določimo privilegij določene podatkovne baze: mysql> GRANT SELECT ON podatkovna_baza.* -> TO 'username'@'localhost', 'username_2'@'localhost'; Query OK, 0 rows affected (0.01 sec) Področje privilegijev za tabele Uporabnik prejme privilegij samo za določeno tabelo. Primer sintakse, kjer ustvarimo novega uporabnika, mu dodelimo privilegij za določeno tabelo, hkrati ga omejujemo, da bo lahko opravil le operacije branja, vstavljanja, spreminjanje vrednosti in brisanje podatkov: 33

43 mysql> GRANT SELECT, INSERT, UPDATE, DELETE -> ON podatkovna_baza.tabela TO Query OK, 0 rows affected (0.33 sec) Področje privilegijev za začasne tabele Uporabniku lahko na enak način, kot ostalim tabelam, dodelimo privilegij za začasno tabelo, vendar hkrati prejme vse privilegije za»nadrejeno«tabelo. V MySQL ni podprt ločen način dodeljevanj pravic, torej prvotnim in začasnim tabelam. Kadar smo v položaju, da določenemu uporabniku res ne želimo dodeliti privilegijev prvotne tabele, ampak le za začasno tabelo, Dietrich Feist na spletni strani MySQL opisuje način, kako je mogoče rešiti nastali problem.»priporoča, da ustvarite ločeno podatkovno bazo, izključno za delo z začasnimi tabelami. Le tako lahko določite ločene privilegije. Naslednji koraki opisujejo vzpostavitev ločene podatkovne baze za začasne tabele: 1. Ustvarite podatkovno bazo za začasne tabele: mysql> CREATE DATABASE zacasna; 2. Dodelimo privilegije uporabniku za delo v novi podatkovni bazi: mysql> GRANT SELECT, INSERT, UPDATE, DELETE, ->DROP, ALTER, CREATE TEMPORARY TABLES -> ON zacasna.* -> TO 'username'@'localhost'; 3. Globalni privilegij za tabelo podjetje, ki je v prvi bazi, kjer: mysql> GRANT SELECT, INSERT, UPDATE, DELETE -> ON podjetje.* -> TO 'username'@'localhost'; Treba je vedeti, da username (uporabnik) potrebuje predpono CREATE TEMPORARY TABLE s predpono zacetna. (predstavlja podatkovno bazo), če je bila tabela ustvarjena v drugi podatkovni bazi. mysql> USE podjetje; mysql> CREATE TEMPORARY TABLE zacetna.zaposleni SELECT * FROM zaposleni; Postopek je podoben pristopu, kako drugi strežniki podatkovnih baz omogočajo, da upravljate z različnimi nabori dovoljenj za tabele in začasne tabele.«34

44 Področje privilegijev za stolpce Priviligiramo lahko tudi posamezne stolpce (en ali več stolpcev) znotraj tabele: mysql> GRANT SELECT (stranka_id, prijava, ime_priimek, postna_st) -> ON trgovina.stranka TO Query OK, 0 rows affected (0.32 sec) V primeru, da uporabniku izrecno ne določimo privilegija za dodajanje novih podatkov, pride do odstopanja SQL standarda, saj je dodajanje podatkov privzeta operacija. Rutinsko področje privilegijev Pri rutinskem privilegiju določimo uporabniku, katere funkcije lahko izvaja v podatkovni bazi. V primeru, ko dodeljujemo rutinski privilegij za določeno podatkovno bazo, ki še ni bila ustvarjena, MySQL standard to dopušča in velja le za podatkovno bazo. Torej, če bi želeli dodeliti privilegij za stolpce ali tabele, katere še niso ustvarjene znotraj podatkovne baze, žal tega ne moremo storiti vnaprej. To lahko storimo šele takrat, ko so stolpci oz. tabele ustvarjene. Primer: navesti je potrebno podatkovno bazo, rutinsko ime oz. funkcijo. mysql> GRANT EXECUTE ON podatkovna_baza.showindexselectivity TO 'username'@'localhost'; Query OK, 0 rows affected (0.32 sec) Način, kako MySQL preverja privilegije in nadzoruje dostop uporabnikov MySQL svoje nadzorniške procese»izvršuje«po dveh korakih. V prvem koraku procesa MySQL identificira uporabnika in nato v drugem koraku določi, s čim lahko operira uporabnik preveri uporabnikove privilegije. Slika 5.1 prikazuje potek procesa, ki se izvaja, ko MySQL preverja privilegij uporabnika. Če uporabnik ne izpolnjuje vseh meril za dostop, MySQL vrne kodo napake, ki opisuje ustrezen razlog zavrnitve zahtev.[1] 35

45 Slika 5-1 Diagram prikazuje postopek preverjanja privilegijev uporabnika[1] Dodajanje novih uporabnikov Kot smo že na začetku omenili, ima MySQL dva načina vnosa nastavitvenih parametrov in tudi v tem poglavju bomo opisali postopek vnosa uporabnikov s pomočjo MySQL Workbench. Opozorilo: kadar želimo upravljati z uporabniškimi računi, moramo najprej poskrbeti za povezavo s strežnikom, in sicer z uporabnikom, ki ima privilegij GRAND OPTION oz. je skrbnik zbirke podatkov. 36

46 Vsa administrativna opravila lahko izvajamo le z root uporabnikom, seveda, če tega izrecno ne priviligiramo drugemu uporabniškemu računu. V MySQL Workbench, natančneje v tretjem sklopu Server Administration, se prijavimo kot root uporabnik. Ob prijavi s strežnikom so nam ponujene možnosti upravljanja s strežnikom, kot tudi možnost dodajanje novih uporabnikov in njegovih privilegijev (angl. Users and Privileges), kot je razvidno s Slike 5-2. Dodajanje novega uporabnika začnemo s klikom na gumb Add Account v zavihku Server Access Management. Ponujeni so nam trije»podzavihki«: prijava (angl. Login), nastavitev privilegijev (angl. Administrative Roles) in omejitve računa (angl. Account Limits). Login vnos naslednjih podatkov: prijavno oz. uporabniško ime (angl. Login Name), Authentication Type, obdržimo privzeto nastavitev na»standard«, saj s tem določimo, da za preverjanje uporabnika, njegovega gesla in privilegijev uporabimo zgoraj opisan postopek preverjanja (Slika 5-2), Limit Connectivity to Hosts Matching, s tem uporabniku določimo gostitelja oz. strežnik, do katerega bo lahko dostopal. Privzeta nastavitev»%«se navezuje na privzeti strežnik (angl. localhost), ter na koncu še vnos gesla. Administrative Roles: Na voljo imamo več različnih administratorjev, katere smo opisali že v poglavju Namestitev. Vsak ima svoje privilegije, izberemo lahko več administratorskih privilegijev, ponujena je tudi možnost, da sami izberemo, katere privilegije bomo določili novemu uporabniku: o ALTER o ALTER ROUTINE o CREATE o CREATE ROUTINE o CREATE TABLESPACE o CREATE TEMPORARY TABLES o CREATE USER o CREATE VIEW o DELETE o DROP o EVENT o EXECUTE 37

47 o o o o o o o o o o o o o o o o o FILE GRANT OPTION INDEX INSERT LOCK TABLES PROCESS REFERENCES RELOAD REPLICATION CLIENT REPLICATION SLAVE SELECT SHOW DATABASES SHOW VIEW SHUTDOWN SUPER TRIGGER UPDATE Omejitve računa: Max. Queries: omejimo št. povpraševanj v eni uri, Max. Updates: št. posodobitev v eni uri, Max. Connections: št. povezav na strežnik v eni uri, Concurrent Connections: št. sočasnih povezav na strežnik. 38

48 Slika 5-2 Administratorjev vmesnik in trije koraki vnosa novega uporabnika z nastavitvijo privilegijev Za vsakega uporabnika lahko določimo lastno shemo privilegijev. To pomeni, da ima uporabnik s privilegiji ustvarjanja novih tabel lahko sočasno omejitev ustvarjanja tabel v neki drugi PB. Zelo priporočljivo je, da si ustvarimo hierarhijo uporabnikov. Npr. združimo uporabnike z istimi lastnostmi delovanja v sistemu z enakimi privilegiji in od tega ne odstopamo. V zaznamku Scheme Privileges torej določimo uporabnikom dodatne omejitve Slika 5-3. Npr. novo kreiranega uporabnika želimo omejiti, da v PB»test«sme samo dostopati do podatkov - s poizvedbo SELECT. 39

49 Slika 5-3 Schema Privileges Praktični nasvet: priporočena shema skupin uporabnikov - s tem želimo doseči, da imajo uporabniki, ki pripadajo posamezni skupini, samo tiste privilegije, ki jih potrebujejo: Administratorji PB Uporabniki PB o Super uporabniki imajo dostop do vseh PB o Ostali uporabniki imajo dostop le do določenih PB o Oblikovalci imajo dostop do vseh povezav relacij neke PB 40

50 Lastnosti dobre prakse: Pri dodeljevanju privilegijev je treba upoštevati, da uporabniku dodelimo le nujno potrebne privilegije, ki jih potrebuje za svoje delo. Izogibajte se uporabe WITH GRAND OPTION. Izogibanje globalnih privilegijev vsem uporabnikom lahko pripomore k večji varnosti. Da bi razbremenili sistem za nadzor dostopa, ne dodeljujte privilegijev brezglavo, saj bi s tem oteževali nastavitve in obremenili sistem. Zelo učinkovito je, da se poglobimo na ravni upravljanja skupnih vlog uporabnikov. S tem omogočimo boljše upravljanje velikih skupin uporabnikov, ki jih razporedimo skupaj glede skupnih dejavnostih.[1][13] 5.2 Varnost Kadar načrtujemo podatkovno bazo in arhitekture celotnega sistema, ne smemo pozabiti na načrtovanje varnosti podatkovne baze, kot tudi na varnost celotnega sistema. Varnost v informacijskih sistemih je bistvenega pomena, kar pomeni, da brez ustrezne varnosti ne bomo imeli popolno optimiziranega sistema. V podatkovnih bazah lahko nastopijo naslednje»varnostne težave«: Časovna omejitev: čas je zelo pomemben dejavnik, ko načrtujemo varovanje. Pomanjkanja znanja o varnosti sistemov Pomanjkanje informacij o podatkih: tukaj ne gre za pomanjkanje znanja o izbiri varnostne rešitve, ampak gre za to, da se morda ne zavedamo, kako zelo so pomembni podatki in npr. kadar bi izvajali varnostno kopijo podatkov, bi le te prenašali preko javnega omrežja in s tem ogrozili krajo pomembnih informacij. Komunikacija med razvijalci: ključnega pomena je tudi komunikacija med razvijalci aplikacij ter administratorjem podatkovne baze, da je tako s stališča razvijalca, kot administratorja PB zagotovljena maksimalna varnost sistema. Slaba navada: zaupanje v»stare«tehnike dodeljevanje privilegijev nas lahko zavedejo in morda odvrnejo od pozornosti, ki bi jo morali posvetiti varnosti. Sprejemanje tveganih odločitev: tveganje je slab razlog za varnost. Težav v varnosti je veliko in že z majhnimi posegi lahko rešimo velike težave. Zavedati se moramo, da podatki niso edina šibka točka napadov, saj velika večina napadalcev svoje 41

51 napade na informacijske sisteme izvede, kar preko PB, če sistem ni primerno varovan. Velika grožnja so lahko tudi uporabniki, katerih privilegiji niso skrbno dodeljeni in lahko napako administratorja PB izkoristijo. Velikokrat se vprašamo ali je naš sistem popolnoma varen? Na to vprašanje je težko odgovoriti in pritrditi, da smo 100% varni, saj sami težko odkrijemo varnostno»luknjo«. Načrtovanje varnosti in njene politike moramo vzeti zelo resno ter se ga lotiti skrbno in premišljeno. Pri načrtovanju varnostnih rešitev nikakor ne smemo zanemarit dejstva, da se sistemi med seboj razlikujejo. Torej, začnemo zmeraj z»ničle«, saj zmeraj ni nujno, da že obstoječa rešitev prinese iste rezultate, kot jih je morda v drugem sistemu. Previdnost ni odveč niti kadar izbiramo osebje, katero vam bo pomagalo pri načrtovanju in kasnejši izvedbi varnostne politike. Svojim razvijalcem morate popolnoma zaupati. Veliko pozornost moramo posvetiti tudi kasnejšemu odkrivanju varnostnih težav. Velikokrat se zgodi, da pride do varnostnih incidentov. Ob vsakem sumu oz. kršitvi varnosti v primeru večjega projekta, obvestite člane ekipe, da nastalo tehnično napako raziščete, sprejmete in poiščete najboljšo rešitev in nato izvedite ukrepe (zaostrite varnost, prekličite nepotrebna dovoljenja, poškodovano oz. ogroženo PB obnovite s pomočjo varnostnih kopij, ustrezno ukrepajte zoper kršitelju). Vsak korak načrtovanja in izvedbo varnostne rešitve, kršitev in rešitev tehnične težave je priporočljivo dokumentirati. Osnovni varnostni ukrepi dobre prakse V tem poglavju vam bomo predstavili nekaj najosnovnejših ukrepov dobre prakse, ki so povezani z varnostjo sistema. Nikakor ne smemo pozabiti, da moramo zaščititi tudi računalnik, na katerem bomo imeli vzpostavljen strežnik MySQL. Kakorkoli, naš namen je, da vam predstavimo varnost MySQL strežnika.[21] Omejitev dostopa na daljavo kadar dostopamo do strežnika iz lastnega računalnika je priporočljivo, da omejimo dostop do strežnika preko TCP/IP. To storimo tako, da v datoteki»my.ini«ročno spremenimo nastavitveni parameter. V odseku [mysqld] dodamo parameter - skip-networking. Druga možna rešitev je, da prav tako v odseku [mysqld] dodamo naslednji parameter, s katerim omogočimo samo lokalno povezavo - bind-address = , vendar s to možnostjo hrati dopuščamo, da sami upravljamo z dodajanjem možnosti prijave na daljavo drugim uporabnikom s tako imenovano shemo privilegijev mysql> GRADT SELECT, ON ime_baze * TO 'uporabnik'@'host'; Sprememba korenskega imena in gesla»root«je privzeto uporabniško ime administratorja strežnika. Da bi zavedli morebitne hekerje, MySQL v novejših 42

52 različicah (5.0.2+) ponuja možnost preimenovanja administratorjevega uporabniškega imena na preprost način, in sicer z ukazom RENAME USER root TO nov_uporabnik; nato lahko spremenimo tudi geslo - UPDATE mysql.user SET Password = PASSWORD('novo_geslo') WHERE User = 'root'. Da uveljavimo novo geslo, moramo ponovno zagnati strežnik. Da pa se izognemo temu postopku, preprosto strežniku ukažemo, da smo v sistemu spremenili privilegij, to storimo s preprostim ukazom - FLUSH PRIVILEGES. MySQL v različicah 4.1+ za zaščito gesel uporablja 41-bitno hash enkripcijo. Zanimivost»SHA1 je kriptografska hash funkcija, rezultat je izražen kot 160 bitno (20 bajtov), 40 mestno šestnajstiško število. SHA1 je razvila NSA ter je naslednik MD5«. Ugotovitev: če uporabimo dvojno kriptiranje SHA1, dobimo enak rezultat enkripcije, kot ga uporablja MySQL v različicah 4.1+.[19][20] o Rezultat dvojnega kriptiranja SHA1 mysql> SELECT SHA1(UNHEX(SHA1('mypass'))); SHA1(UNHEX(SHA1('mypass'))) c eaf75bb670ad8ea7a7fc1176a95cef row in set (0.09 sec) o Hash kriptiranje v MySQL 4.1+ mysql> SELECT PASSWORD('mypass'); PASSWORD('mypass') *6C EAF75BB670AD8EA7A7FC1176A95CEF row in set (0.03 sec) Odstranimo možnost prijave kot anonimni uporabnik (angl. anonymous account), če ne želimo, da se v našo PB prijavi kdorkoli. MySQL privzeto omogoča prijavo uporabnika brez gesla in tako neposredno dopušča prijavo na PB, vendar ima omejena dovoljenja - DROP USER ''@'LOCALHOST'; MySQL ima testno zbirko podatkov, ki je namenjena testiranju in je hkrati ranljiva, saj omogoča anonimno prijavo. Če se želite izogniti morebitnim napadom preko testne zbirke podatkov, je priporočljivo, da jo izbrišete DROP DATABASE test; Priporočljivo je zaščititi tudi datotečni imenik, v katerem se nahajajo podatki MySQL in so v»lasti mysql«. Do imenika naj ima dostop le root uporabnik. 43

53 S preprostim ukazom»show DATABASES«na zelo preprost način prikažemo seznam vseh podatkovnih baz. Tudi to lahko ogroža varnost sistema, saj lahko napadalec s preprostim ukazom razbere seznam vseh podatkovnih baz, ki so na strežniku. Če želite, lahko onemogočite uporabo»show DATABASES«ukaza. To storite tako, da v datoteki z nastavitvenimi parametri (my.ini) v odseku [mysqld] dodamo vrstico - skip-show-database. O beleženju dnevnikov smo že pisali, da olajšajo iskanje napak. Naj omenimo, da beleženje dnevnikov lahko hkrati izkoristimo za varnostne razloge. Kako? V dnevnike se beležijo vsa povpraševanja, ki se izvršijo nad podatki in tako bi lahko zasledili, ali v našem sistemu poizvedujejo o podatkih nezaželene osebe. Hkrati je priporočljivo omejiti dostop do dnevnikov. V celotnem postopku namestitve se beležijo vsi podatki, ki smo jih kot nastavitvene parametre nastavili na strežniku. Naloga sprotnega beleženja je, odkrivanje morebitnih napak, če pride do napake med namestitvijo. Z analizo zgodovine podatkov lažje odkrijemo napako. Po uspešni namestitvi vedno poskrbimo, da izbrišemo zgodovino podatkov mysql_history.[21] Povezovanje s SSL šifriranjem Za varnejši prenos podatkov med dvema strežnikoma je priporočljivo uporabiti SSL šifriranje, saj s tem omogočimo varnejšo sinhronizacijo. Na primeru bomo skušali razložiti, kako sinhronizirati povezavo dveh strežnikov s šifriranjem SSL.[18][22] Preverimo ali imamo podporo ssl: mysql> show variables like '%ssl%'; Variable_name Value have_openssl DISABLED have_ssl DISABLED ssl_ca ssl_capath ssl_cert ssl_cipher ssl_crl ssl_crlpath ssl_key

54 Rezultat poizvedbe nakazuje, da je SSL onemogočen. V datoteki my.ini v odseku [mysqld] dodamo vrstico ssl, s katero omogočimo šifriranje SSL. Rezultat: mysql> show variables like '%ssl%'; Variable_name Value have_openssl YES have_ssl YES ssl_ca ssl_capath ssl_cert ssl_cipher ssl_crl ssl_crlpath ssl_key rows in set (0.29 sec) Naslednji korak je izdelava certifikatov, CA, strežniški (angl. server) in uporabniški (angl. client ) certifikat, ki jih potrebujemo za SSL povezavo. Namestiti je potrebno OpenSSL program, s katerim bomo ustvarili certifikate. Celoten postopek ustvarjanja certifikatov izvajamo v cmd (Command Prompt). Ustvarimo imenik, v katerega bomo ustvarjali vse certifikate mkdir C:\certs: CA certifikat openssl genrsa 2048 > "C:/certs/ca-key.pem" openssl req -new -x509 -nodes -days key "C:/certs/ca-key.pem" > "C:/certs/ca-cert.pem" Strežniški certifikat openssl req -newkey rsa:2048 -days nodes -keyout "C:/certs/serverkey.pem" > "C:/certs/server-req.pem" openssl x509 -req -in "C:/certs/server-req.pem" -days CA "C:/certs/cacert.pem" -CAkey "C:/certs/ca-key.pem" -set_serial 01 > "C:/certs/server-cert.pem" Uporabniški certifikat openssl req -newkey rsa:2048 -days nodes -keyout "C:/certs/client-key.pem" > "C:/certs/client-req.pem" openssl x509 -req -in "C:/certs/client-req.pem" -days CA "C:/certs/cacert.pem" -CAkey "C:/certs/ca-key.pem" -set_serial 01 > "C:/certs/client-cert.pem" 45

55 Vsebina mape certs, ko smo ustvarili certifikate: Directory of C:\certs :20 <DIR> :20 <DIR> : ca-cert.pem : ca-key.pem : client-cert.pem : client-key.pem : client-req.pem : server-cert.pem : server-key.pem : server-req.pem Najprej na kratko pojasnimo, kako delujejo certifikati. Naloga certifikata je identifikacija drugih strežnikov oz. uporabnikov, kateri pošljejo zahtevek za povezavo. Sedaj moramo prenesti datoteke ca-cert.pem, client-cert.pem in client-key.pem na drug strežnik, s katerim želimo vzpostaviti varno povezavo SSL. Strežniku nastavimo poti do certifikatov, v datoteki my.ini dodamo vrstice: ssl-ca = "C:/certs/ca-key.pem" ssl-cert = "C:/certs/server-cert.pem" ssl-key = "C:/certs/server-key.pem" Poskrbeti moramo še za identifikacijo strežnikov, s tem določimo, kateri je privzeti (angl. master) oz. podrejen (angl. slave). V datoteki my.ini na privzetem strežniku dodamo vrstico server-id=1, na podrejenem strežniku pa server-id=2. Po končanih nastavitvah moramo kreirati uporabnika, kateremu določimo ssl šifrirno povezavo: mysql > GRANT ALL ON baza.* TO 'ssl_uporabnik'@' ' IDENTIFIED BY 'geslo' REQUIRE SSL; 46

56 Da preverimo, ali povezava deluje, moramo vnesti naslednji parameter: mysql > SHOW STATUS LIKE 'ssl_cipher'; Variable_name Value Ssl_cipher DHA-RAA-AES316-SHA Query OK, 0 rows affected (0.33 sec) 47

57 6 PROŽILEC (ANGL. TRIGGERS) IN OMEJITVE (ANGL. CONSTRAINTS) Že samo iz imena lahko razberemo, da se specifičen oz. več specifičnih SQL stavkov»sproži«v primeru, če se pojavi pričakovan dogodek ali napaka. S prožilci torej lahko rešujemo nastale težave, za katere smo predvidevali, da se lahko zgodijo. S prožilci torej odkrijemo in odpravimo napako neposredno z MySQL in tako preprečimo napako, ki bi jo moral rešiti programer v aplikaciji, ki upravlja PB. Primeri prožilcev, ki se pogosto uporabljajo v praksi: beleženje sprememb podatkov, ustvarjanje kopij podatkov pred spremembo, samodejni izračuni... Izvršna naloga prožilca je, da se izvede po vnosu (angl. INSERT) posodobitev (angl. UPDATE) in brisanju (angl. DELETE) podatkov iz tabele, posledično se torej prožilci vedno nanašajo na določeno tabelo in se lahko izvedejo pred ali po vnosu novih podatkov. Da lahko uporabnik kreira prožilec, mora imeti privilegij TRIGGER. Za izjemo, pri kreiranju prožilca lahko navedemo uporabnika, kateremu dopuščamo, da lahko izvaja prožilec. To storimo z dodatno klauzolo CREATE DEFINER = 'uporabnik@localhost' TRIGGER ime_prozilca.[13][23] Na preprostem primeru bomo lahko bolje razumeli delovanje prožilca: V letalski družbi želijo ob vsakem vnosu novega poleta v PB, še dodaten vnos, in sicer vnos podatka o uporabniku, ki je vnesel nov polet ter čas vnosa. Ker se želijo izogniti ročnemu vnosu in s tem optimizirati sistem, bo za vnos poskrbel sistem oz. prožilec.» mysql> CREATE TRIGGER Vnos_poleta_ai -> AFTER INSERT ON Poleti -> FOR EACH ROW -> INSERT INTO Dnevnik_prijav (Uporabnik, Opomba, Cas) -> VALUES (CURRENT_USER(), 'Dodan nov vnos', NOW()); Query OK, 0 rows affected (0.04 sec) «Definicija prožilca: Kreiramo prožilec, CREATE TRIGGER in ga poimenujemo. Nato sledijo štirje ključni»deli«. Določitev časa sprožitve, pred (angl. BEFORE) ali po (angl. AFTER). Dogodek se sproži po eni izmed INSERT, DELETE ali UPDATE operaciji, ki se izvaja nad tabelo. Šele nato vsebuje telo SQL stavka, ki določa novo operacijo. 48

58 Priporočljivo je tudi primerno poimenovanje prožilcev, da lahko že iz samega poimenovanja prožilca razberemo, čemu»služi«. V poimenovanju na koncu uporabimo prvi črki določitve časa in dogodka, ki se bosta izvajala s pomočjo prožilca, primer: AFTER INSERT poimenovanje_ai BEFORE UPDATE poimenovanje_bu Prožilci imajo tudi slabo lastnost. Če med delovanjem prožilca pride do napake, prožilec preprosto dokonča svojo nalogo in ne bo prekinjen, kot bi se pričakovalo. Ker MySQL nima vgrajenega mehanizma, ki bi v primeru, ko se pojavi napaka preprosto prekinil prožilec, moramo sami poskrbeti in že vnaprej predvideti morebitne napake. Obstaja tudi rešitev, da odpravimo to slabo lastnost prožilca, in sicer omejitve. Rešitev temelji izključno na tem, da z omejitvami sami sprožimo napako in s tem prisilimo MySQL, da prekine delovanje prožilca. Specifične rešitve za prekinitev prožilcev ni, saj se iz primera v primer razlikujejo. Obstajajo pa načini, s katerimi lahko to tudi dosežemo: podatke vstavimo v polje, ki ne obstaja; vstavimo vrednost NULL v polje, ki ima omejitev NOT NULL... Priporočljivo je, da se prožilci z omejitvami izvedejo že pred vnosom, brisanjem ali posodobitvijo podatkov v tabelah. Primer prožilca z omejitvijo: V letalski družbi želijo v terminal seznam letališč, dodati možnost dodajanje novih letališč; vendar hkrati želijo, da se sistem omeji na vnos podatka, in sicer število pristajalnih stez, ki pa ne sme biti manjše od 3. Nastali problem lahko rešimo s prožilcem in omejitvijo.» mysql> DELIMITER // mysql> CREATE TRIGGER Letalisce_bi -> BEFORE INSERT ON Letalisce -> FOR EACH ROW -> BEGIN -> IF NEW. StPristajalnihStez < 3 THEN -> CALL Podatek_ni_pravilen; -> END IF; -> END// Query OK, 0 rows affected (0.06 sec) «49

59 Vnos napačnega podatka:» mysql> INSERT INTO Letalice -> (LetalisceID, KodaLetalisca, ImeLetalisca, -> Kraj, KraticaDrzave, StPristajalnihStez, -> StTerminalov) VALUES (207, 'LTN', -> 'Luton Airport', 'London', 'GB', 2, 1); ERROR 1305 (42000): PROCEDURE db1.podatek_ni_pravilen does not exist «V našem primeru torej dobimo rezultat o napaki, saj smo prožilec omejili, da se mora izvesti že pred vnosom podatka v tabelo. Tako smo preprečili napačen vnos in hkrati tudi dobili sporočilo o napaki. V današnjem času zmeraj iščemo načine, kako si olajšati delovanje. Poglejmo si primer, kako iz tabele prekopiramo podatke za obdobje 30 dni, ki jih želimo arhivirati. Da se izognemo fizičnemu kopiranju, si lahko stvari poenostavimo s pomočjo prožilcev in omejitev. Ustvarimo novo tabelo identično tabeli iz katere želimo prekopirati podatke: mysql> CREATE TABLE Racuni_arhiv LIKE Racuni; Query OK, 0 rows affected (0.03 sec) Za novo tabelo želimo, da je tipa arhiv: mysql> ALTER TABLE Racuni_arhiv ENGINE=ARCHIVE; Query OK, 0 rows affected (0.12 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DELIMITER // mysql> CREATE EVENT Racuni_dan -> ON SCHEDULE EVERY 1 DAY -> STARTS ' :00:00' ENABLE -> DO -> BEGIN -> INSERT INTO Racuni_arhiv -> SELECT * FROM Racuni -> WHERE DatumVnosa <= -> DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY); -> END// Query OK, 0 rows affected (0.01 sec) 50

60 Najprej smo ustvarili dogodek (angl. CREATE EVENT), ki smo ga poimenovali Racuni_dan. Določili smo, da se naj začne in dnevno naslednjih 30 dni tudi izvaja, nato s preprostim SQL stavkom vnesemo podatke iz tabele Racuni v novo tabelo Racuni_arhiv. 51

61 7 PROCEDURE IN FUNKCIJE V MYSQL Procedure in funkcije v MySQL opravljajo eno ali več nalog. Njihova naloga oz. namen, kot tudi sintaksa, je podoben drugim programskim jezikom. Sintaksa procedure je sestavljena iz dveh delov, glave in telesa. Glava je sestavljena iz imena procedure in parametrov. Telo pa je sestavljeno iz deklaracije in izvršitve procedure. Načeloma prvoten namen procedur je, da opravijo svojo»nalogo«in se po končanju zaključijo ter ne vračajo vrednosti. S pomočjo OUT parametra lahko procedura poda tudi končno vrednost. Funkcije so podobne proceduram in se razlikujejo le v tem, da funkcija vedno vrne vrednost. Glava funkcije določa vrsto oz. tip vrednosti, ki jo funkcija na koncu vrne.[1][13][23] Sintaksa procedur in funkcij:[13]» CREATE [DEFINER = { uporabnik CURRENT_USER }] PROCEDURE poimenovanje ([parameter_proc[,...]]) [...] zakljucek CREATE [DEFINER = { uporabnik CURRENT_USER }] FUNCTION poimenovanje ([parameter_fun [,...]]) RETURNS vrednost [lastnosti...] zakljucek parameter_proc: [ IN OUT INOUT ] parameter_fun: ime parametra vrednost uporabnik: ko ustvarjamo proceduro oz. funkcijo lahko izrecno določimo, kateri uporabnik lahko izvaja oz. kliče vrednost: vrednosti, ki jih podpira MySQL 52

62 lastnosti: COMMENT 'string' LANGUAGE SQL [NOT] DETERMINISTIC { CONTAINS SQL NO SQL READS SQL DATA MODIFIES SQL DATA } SQL SECURITY { DEFINER INVOKER } zakljucek: Veljavna SQL rutinska izjava «Procedure imajo tri vrste parametrov: S parametrom IN podamo določeno vhodno vrednost, s katero potem procedura operira in se med izvedbo lahko tudi spremeni, ni pa nujno. Parameter je namenjen predvsem shranjevanju podatkov v tabele. Začetna vrednost parametra OUT je NULL in med izvajanjem operacij prejme končno vrednost shranjenega podatka iz želene tabele. Parameter OUT je podoben tipu vrednosti, ki jo vrne funkcija. Parameter INOUT združuje vlogi IN ter OUT parametrov. Proceduri podamo vrednost, s katero želimo, da operira in v»zameno«pričakujemo tudi končno vrednost. V primeru, da nismo izrecno določili vrste parametra, bo parameter pridobil privzeto vrednost IN parametra. 53

63 Primer: Najprej ustvarimo proceduro. Z»DELIMETER //«MySQL-u nakažemo, da bomo ustvarili proceduro, vrednost» // «lahko poljubno izberemo, vendar ne sme biti enaka vrednosti» ; «, ki jo uporabljamo za zaključek SQL stavka. Proceduro zaključimo z END in pripisom vrednosti, ki smo jo določili na začetku, v našem primeru» // «.[1] mysql> DELIMETER // -> CREATE PROCEDURE VnosOsebe ( -> IN ImeOsebe VARCHAR(20), PriimekOsebe VARCHAR(50)) -> BEGIN -> INSET INTO Osebe(Ime, Priimek), -> VALUES (ImeOsebe, PriimekOsebe); -> SELECT Ime, Priimek FROM Osebe WHERE Ime=ImeOsebe; -> END// Query OK, 0 rows affected (0.00 sec) Ko smo ustvarili proceduro jo moremo aktivirati. To storimo tako, da kličemo proceduro. mysql> CALL VnosOsebe('Staš', 'Kopina'); Ime Priimek Staš Kopina row in set (0.05 sec) Preprost primer prikazuje kreiranje nove procedure, ki izpiše število oseb. S proceduro in funkcijo se torej izognemo vnovičnim vnosom dolgih SQL stavkov. Procedure, kot tudi funkcije, podpirajo dodatna določila, ki se uporabljajo za dodatno opredelitev shranjenih lastnosti: COMMENT določa opise oz. komentarje. DETERMINISTIC določilo pomeni, da neglede na vhodni podatek, ne spremeni končnega rezultata. LANGUAGE določa, da znotraj procedur in funkcij velja izključno SQL jezik. 54

64 CONTAINS SQL določa, da rutina vsebuje SQL, vendar dopušča alternativo za READS SQL DATA (branje podatkov iz tabel), MODIFIES SQL DATAm(pisanje podatkov v tabelo) in NO SQL (ne vsebuje SQL stavkov). SQL SECURITY določa kateri privilegij naj upošteva kadar se izvaja procedura oz. funkcija. Naj upošteva uporabnika, ki je ustvaril proceduro oz. funkcijo (DEFINER) ali uporabnika (INVOKER), ki se sklicuje oz. sproži klic. Za primer funkcije smo izbrali bolj kompleksen primer, da predstavimo zmogljivosti, ki jih premore SQL:[1] mysql> DELIMITER // mysql> CREATE FUNCTION IzpisDneva() -> RETURNS VARCHAR(255) -> BEGIN -> DECLARE Sporocilo VARCHAR(255); -> CASE DAYOFWEEK(NOW()) -> WHEN 2 THEN -> SET Sporocilo = 'Ponedeljek'; -> WHEN 3 THEN -> SET Sporocilo = 'Torek'; -> WHEN 4 THEN -> SET Sporocilo = 'Sreda'; -> WHEN 5 THEN -> SET Sporocilo = 'Četrtek'; -> WHEN 6 THEN -> SET Sporocilo = 'Petek'; -> WHEN 7 THEN -> SET Sporocilo = 'Sobota'; -> ELSE -> SET Sporocilo = 'Nedelja'; -> END CASE; -> RETURN Sporocilo; -> END// S pomočjo procedur in funkcij v MySQL omogočimo razvijalcem aplikacij, da svojo logiko preselijo na strežnik PB in sistem privedejo do točke, ki omogoča večjo varnost in doslednost s strani MySQL-a. 55

65 8 PRIMER UPORABE MYSQL V poglavju bomo zajeli celotno tematiko diplomske naloge in jo predstavili s praktičnim pristopkom predstavitve. Izhajali bomo iz preprostega E-R diagrama in poskušali s primeri prikazati naloge adminstratorja PB. Najprej kreiramo novo PB s preprostim ukazom: CREATE DATABASE bazazaposlen; Brezhibno delovanje PB je treba premišljeno načrtovati. Poudariti je treba velik del načrtovanja E-R modela oz. diagram (slika 8-1), ki neposredno služi tudi h kasnejšemu hitremu vpogledu, npr. kako povpraševati po določenih podatkih. Z natančno logičnim E-R modelom predstavimo podatkovni model, ki je razumljiv uporabnikom in strokovnjakom. [24] Slika 8-1 E-R model E-R model nam je lahko prav tako v pomoč in služi kot načrt sosledij dogodkov, kadar ustvarjamo nove tabele. V poglavju Shranjevalni mehanizmi smo spoznali več vrst mehanizmov in predstavili njihov specifični namen, najbolj razširjena sta INNODB in MyISAM, še posebaj ko naše tabele ne služijo nekemu specifičnemu namenu. 56

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54 Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54 Boštjan Lemut Prva povezava na L-54 s povezovalnim kablom povežemo mrežna vmesnika na računalniku in L-54 v brskalniku vpišemo

More information

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig Boštjan Lemut Prva povezava na L-54 s povezovalnim kablom povežemo mrežna vmesnika na računalniku in L-54

More information

Sistemske zahteve za SAOP

Sistemske zahteve za SAOP Sistemske zahteve za SAOP Samostojna delovna postaja višji). icenter je ERP sistem, ki zagotavlja popolno kontrolo nad vsemi poslovnimi procesi v podjetju. V tej postavitvi je SAOP icenter nameščen na

More information

RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA

RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA POPRBAZA je namenjen večji reorganizaciji podatkov v računalnikovem spominu. Reorganizacijo narekujejo bodisi zakonske spremembe, bodisi novosti v programu. Zato je

More information

Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja

Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja Navodila za vaje pri predmetu Internetne tehnologije VAJA 2 Dušan

More information

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js)

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js) Vodnik skozi Google Analytics Beta verzija 1. del prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js) Ta vodnik je povzetek Googe vodiča ' Tracking Code Migration Guide Switching from urchin.js

More information

sodobne poslovnoinformacijske rešitve Birokrat Kratka navodila za namestitev demo verzije programa Birokrat

sodobne poslovnoinformacijske rešitve   Birokrat Kratka navodila za namestitev demo verzije programa Birokrat sodobne poslovnoinformacijske rešitve www.andersen.si Birokrat Kratka navodila za namestitev demo verzije programa Birokrat Kratka navodila za namestitev demo verzije programa Birokrat Pošiljamo vam demo

More information

Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje. doc.dr. Mira Trebar

Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje. doc.dr. Mira Trebar Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje doc.dr. Mira Trebar 2 Vaja 1 (11.10.2010) Vaje so obvezne (delo v laboratoriju + doma) S1: Logisim MIPS procesor eno-cikelna izvedba ( logisim ) MIPS

More information

» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije

» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije Obrazec P-5 Specifikacije 30K250316» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije KAZALO VSEBINE 1. Predmet javnega naročila...3 1.1. SKLOP-1: STORITEV VZDRŽEVANJA ORACLE LICENČNE

More information

DB2 podatkovna baza v praksi

DB2 podatkovna baza v praksi DB2 podatkovna baza v praksi Aljoša Trivan, Mikropis holding d.o.o. aljosa.trivan@mikropis.si 2007 IBM Corporation Agenda Mikropis Splošno Fleksibilnost Vzdrževanje Backup SQL objekti in SQL stavki Novosti

More information

E R S Š G L J U B L J A N A Š O L S K O L E T O

E R S Š G L J U B L J A N A Š O L S K O L E T O Datotečni sistem E R S Š G L J U B L J A N A Š O L S K O L E T O 2 0 1 0 / 1 1 Vsebina Programska oprema Sistemska programska oprema Operacijski sistem Lupina (shell) Datotečni sistem Programska oprema

More information

Transakcije v MariaDB/MySQL (transakcija A)

Transakcije v MariaDB/MySQL (transakcija A) Transakcije v MariaDB/MySQL (transakcija A) Pomožni elementi In [1]: # pyodbc import pyodbc try: cn1.close() except: pass # MariaDB/MySQL conn = "DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=localhost;DATABASE=sandbox;UID=tu

More information

Hitra rast hranjenih podatkov

Hitra rast hranjenih podatkov Tomaž Borštnar - član uredništva računalniške revije Monitor od začetka (oktober 1991; ne-pc okolja (Unix, etc) - sodelavec YUNAC in ARNES od začetka - postavil in upravljal večino strežnikov na SiOL -

More information

Navodila za nastavitev varne povezave po protokolu SSH

Navodila za nastavitev varne povezave po protokolu SSH Datum: 28. 9. 2010 Navodila za nastavitev varne povezave po protokolu SSH 1. Pogoji za zagotovitev varne povezave po protokolu SSH Za uspešno zagotovitev in nastavitev varne povezave po protokolu SSH je

More information

formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike

formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike Strojni vid pri tehnoloških meritvah formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike formati slike in branje slike slika je običajno

More information

Strukturirani poizvedovalni jezik SQL

Strukturirani poizvedovalni jezik SQL Računalništvo Strukturirani poizvedovalni jezik SQL Danijel Skočaj, Evelin Vatovec Krmac Univerza v Ljubljani Fakulteta za pomorstvo in promet Literatura: Evelin Vatovec Krmac, Računalništvo in informatika,

More information

Lotus Quickr Najhitrejši način izmenjave poslovne vsebine

Lotus Quickr Najhitrejši način izmenjave poslovne vsebine Lotus Quickr Najhitrejši način izmenjave poslovne vsebine Zoran Povh, IT specialist zoran.povh@si.ibm.com 2007 IBM Corporation Vsebina Kaj je Lotus Quickr? Integracija z namiznimi programi Skupinski prostori

More information

Session:E07 GALIO - DB2 index advisor, how we implemented it and what we get from self-made expert tool

Session:E07 GALIO - DB2 index advisor, how we implemented it and what we get from self-made expert tool Session:E07 GALIO - DB2 index advisor, how we implemented it and Viktor Kovačević, MSc Hermes Softlab 6th October 2009 14:15 (60') Platform: UDB / LUW OUTLINE Application & Database tuning Self made index

More information

Prometno načrtovanje xdsl

Prometno načrtovanje xdsl Prometno načrtovanje xdsl 1 Kazalo Prometno načrtovanje naročniške zanke Prometno načrtovanje MSAN Izbira agregacijskega modela Izbira opreme 2 Potrebe po pasovni širini Zahtevana pasovna širina na uporabnika

More information

Poglavje 7. Indeksi z uporabo drevesnih struktur Povzeto po [1]

Poglavje 7. Indeksi z uporabo drevesnih struktur Povzeto po [1] Poglavje 7 Indeksi z uporabo drevesnih struktur Povzeto po [1] - 1 - Indeksi uvod.. Včasih hočemo najti vse zapise, ki imajo določeno vrednost v določenem polju INDEKS je zunanja podatkovna struktura,

More information

Naslavljanje v IP. Miran Meža

Naslavljanje v IP. Miran Meža Naslavljanje v IP Miran Meža Omrežje vseh omrežij Avtonomni sistem Avtonomni sistem Avtonomni sistem Avtonomni sistem Avtonomni sistem Avtonomni sistem Omrežje vseh omrežij Usmerjanje prometa: poznati

More information

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA Državni izpitni center *M16178113* SPOMLADANSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Četrtek, 2. junij 2016 SPLOŠNA MATURA RIC 2016 M161-781-1-3 2 IZPITNA POLA 1 1 1 2 1 3 3 4 1 5 3 6 2 7 1 8 1 9 1 10 3

More information

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK UDK621.3:(53+54+621 +66), ISSN0352-9045 Informacije MIDEM 39(2009)2, Ljubljana IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK Sasa Klampfer, Joze Mohorko, Zarko Cucej University

More information

Navodila za uporabo izdelkov programske opreme Microsoft

Navodila za uporabo izdelkov programske opreme Microsoft Navodila za uporabo izdelkov programske opreme Microsoft Kazalo Navodila za konfiguracijo odjemalca za e-pošto Outlook Splošno 3 Nastavitev poštnega predala s protokolom MAPI v odjemalcu Outlook 2007 s

More information

Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje.

Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje. Delo z datotekami Razred File Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje. Deklaracija objekta File poteka tako: File ime = new File(pot_do_datoteke_in_ime);

More information

Obravnava izjem (exception handling)

Obravnava izjem (exception handling) Obravnava izjem (exception handling) Ko umre programer Uvod Ne glede na to, kako dobro smo načrtovali nek program, je še vedno možnost, da lahko med izvajanjem pride do kakšnih napak. Dobro načrtovan program

More information

Q: Do You made a backup before upgrade? A: Only cowards make backups!

Q: Do You made a backup before upgrade? A: Only cowards make backups! Q: Do You made a backup before upgrade? You z malo - you A: Only cowards make backups! Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies.

More information

Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x

Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x 1 Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x 2 družina standardov, ki opisujejo delovanje lokalnih (LAN) in mestnih (MAN) omrežij delo opravljano v delovnih skupinah več na

More information

Navodila za namestitev CREO 3.0 in Audax nastavitev

Navodila za namestitev CREO 3.0 in Audax nastavitev Navodila za namestitev CREO 3.0 in Audax nastavitev Potrebujete: Iz PTC spletne strani ali z DVD-ja prenesite namestitvene datoteke za program Creo 3.0 in jih razširite na lokalni disk. Audax Nastavitve

More information

Prirejanje in preverjanje tipov

Prirejanje in preverjanje tipov Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično povezovanje (poenostavljeno) Skrivanje Dinamično povezovanje (s skrivanjem) Fragile

More information

ABBYY rešitve za prepoznavo in klasifikacijo dokumentov

ABBYY rešitve za prepoznavo in klasifikacijo dokumentov ABBYY rešitve za prepoznavo in klasifikacijo dokumentov preabbyy FlexiCapture 9.0. Overview. 1 doc: 10977 Lokalna prisotnost ABBYY: Moscow, Russia; Munich, Germany; Bracknell, UK; Kiev, Ukraine; Milpitas,

More information

Kosovnica. Marko Obid. Kosovnica. Marko Obid

Kosovnica. Marko Obid. Kosovnica. Marko Obid PROGRAM ZA IZDELAVO TEHNIČNE DOKUMENTACIJE V CATIA-ji Zagon programa: Program je bil izdelan z namenom, da nam olajša: Izdelavo kosovnice, Izris risb (delavniške, sestavne) Vpis podatkov v glavo risbe

More information

Uvod v svetovni splet

Uvod v svetovni splet Univerza v Ljubljani Fakulteta za gradbeništvo in geodezijo Uvod v svetovni splet Računalništvo in informatika, GR-UNI, GR-VSŠ Tehnična dokumentacija in informatika, VKI-UNI št. leto 2007/08, 1. semester

More information

Postavitev in upravljanje zasebnega oblaka z uporabo Microsoft System Center 2012 R2 in Windows Azure Pack za ponudnike storitev

Postavitev in upravljanje zasebnega oblaka z uporabo Microsoft System Center 2012 R2 in Windows Azure Pack za ponudnike storitev UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Gašper Govek Postavitev in upravljanje zasebnega oblaka z uporabo Microsoft System Center 2012 R2 in Windows Azure Pack za ponudnike storitev

More information

Povezava DEQ v omrežje

Povezava DEQ v omrežje Povezava DEQ v omrežje 17.10.2016 KAZALO 1. NI INTERNETNE POVEZAVE... 2 1.1. Direktna povezava med računalnikom ter DEQ... 2 1.2. Povezava DEQ na dostopno točko... 3 2. INTERNETNA POVEZAVA... 5 2.1. Žični

More information

Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL

Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL Univerza v Ljubljani Fakulteta za računalništvo in informatiko Nedim Husaković Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL DIPLOMSKO DELO VISOKOŠOLSKI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Povezava regulatorja DEQ v omrežje

Povezava regulatorja DEQ v omrežje KAZALO 1. OBJEKT NIMA INTERNETNE POVEZAVE... 2 1.1. Direktna povezava med računalnikom ter DEQ... 2 1.2. Povezava DEQ na dostopno točko... 4 1.3. Povezava preko GSM omrežja... 7 2. OBJEKT IMA INTERNETNO

More information

PODATKOVNE BAZE NOSQL

PODATKOVNE BAZE NOSQL PODATKOVNE BAZE NOSQL Aljaž Zrnec, Dejan Lavbič, Lovro Šubelj, Slavko Žitnik, Aleš Kumer, Marko Bajec Univerza v Ljubljani, Fakulteta za računalništvo in informatiko, Laboratorij za podatkovne tehnologije,

More information

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA DIPLOMSKO DELO GREGOR IVANŠEK

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA DIPLOMSKO DELO GREGOR IVANŠEK UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA DIPLOMSKO DELO GREGOR IVANŠEK UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Študijski program: Matematika in tehnika Prilagoditev odprtokodnega sistema Drupal za uporabo

More information

Navodila za interaktivne naloge Bober

Navodila za interaktivne naloge Bober Avtorji dokumenta: Dean Gostiša , Lovro Podgoršek Verzija dokumentacije: 1.1 Datum in kraj: 24. 7. 2013, Ljubljana Navodila za interaktivne naloge Bober Uvod 1.

More information

Andrej Jamšek. Namestitev programske opreme s poudarkom na tehnologiji MSI

Andrej Jamšek. Namestitev programske opreme s poudarkom na tehnologiji MSI UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andrej Jamšek Namestitev programske opreme s poudarkom na tehnologiji MSI DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Mentor: izr.

More information

APLIKACIJE ZA SOCIALNA

APLIKACIJE ZA SOCIALNA UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Boštjan Lotrič APLIKACIJE ZA SOCIALNA OMREŽJA DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: doc. dr. Zoran Bosnić Ljubljana, 2011 Rezultati

More information

Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5

Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5 Univerza v Ljubljani Fakulteta za računalništvo in informatiko Roman Gorišek Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5 DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

POSTAVITEV SPLETNEGA SISTEMA ZA PRIKAZ NAČRTA PROIZVODNJE

POSTAVITEV SPLETNEGA SISTEMA ZA PRIKAZ NAČRTA PROIZVODNJE UNIVERZA V LJUBLJANI FAKULTETA ZA ELEKTROTEHNIKO Aljaž Tomažič POSTAVITEV SPLETNEGA SISTEMA ZA PRIKAZ NAČRTA PROIZVODNJE DIPLOMSKO DELO VISOKOŠOLSKEGA STROKOVNEGA ŠTUDIJA PRVE STOPNJE Mentor: višji pred.

More information

Šolski center Novo mesto Srednja elektro šola in tehniška gimnazija Šegova ulica 112, 8000 Novo mesto. Maturitetna seminarska naloga

Šolski center Novo mesto Srednja elektro šola in tehniška gimnazija Šegova ulica 112, 8000 Novo mesto. Maturitetna seminarska naloga Šolski center Novo mesto Srednja elektro šola in tehniška gimnazija Šegova ulica 112, 8000 Novo mesto Maturitetna seminarska naloga Šolsko leto 2007/08 Avtor: Mentor: prof. Albert Zorko Novo mesto, 10.7.

More information

Razvoj jezika za iskanje, povezovanje in predstavitev podatkov

Razvoj jezika za iskanje, povezovanje in predstavitev podatkov UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Ernest Štukelj Razvoj jezika za iskanje, povezovanje in predstavitev podatkov DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU SMER PROGRAMSKA OPREMA

More information

ERCOlight LUM je energetsko visoko učinkovita svetilka za visoke prostore z možnostjo številnih različnih modifikacij.

ERCOlight LUM je energetsko visoko učinkovita svetilka za visoke prostore z možnostjo številnih različnih modifikacij. Object Installation Project number Date 1 Luminaire data 1.5 Somar International Ltd, Eluma ME-OP4/4L/50 P5 (ME-OP4/4L/50) 1.5.1 Data sheet Ena svetilka, pet različnih možnosti : Eluma Lighting : Comparison

More information

PREPREČEVANJE IZPADA IN ZAGOTAVLJANJE VARNOSTI JAVNIH RAČUNALNIŠKIH SISTEMOV

PREPREČEVANJE IZPADA IN ZAGOTAVLJANJE VARNOSTI JAVNIH RAČUNALNIŠKIH SISTEMOV UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Aljaž Bratkovič PREPREČEVANJE IZPADA IN ZAGOTAVLJANJE VARNOSTI JAVNIH RAČUNALNIŠKIH SISTEMOV DIPLOMSKO DELO VISOKOŠOLSKEGA STROKOVNEGA ŠTUDIJA

More information

Calculation of volume with the use of NTF method. Izračun volumnov z uporabo NTF metode

Calculation of volume with the use of NTF method. Izračun volumnov z uporabo NTF metode RMZ - Materials and Geoenvironment, Vol. 53, No. 2, pp. 221-227, 2006 221 Calculation of volume with the use of NTF method Izračun volumnov z uporabo NTF metode Milivoj Vulić 1, Anes Durgutović 2 1 Faculty

More information

Učinkovita rešitev za izdelavo zaščitnih kopij z deduplikacijo in replikacijo

Učinkovita rešitev za izdelavo zaščitnih kopij z deduplikacijo in replikacijo Učinkovita rešitev za izdelavo zaščitnih kopij z deduplikacijo in replikacijo Študija primera uvedbe sistema EMC DataDomain v podjetju Si.mobil Janez Narobe Janez.narobe@simobil.si Rok Krisper rok.krisper@snt.si

More information

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF RMZ Materials and Geoenvironment, Vol. 55, No. 1, pp. 127-134, 2008 127 How we calculate volume with the use of NTF method Kako izračunamo volumen z uporabo metode NTF An e s Du r g u t o v i ć 1, Mi l

More information

Vzpostavitev spletnega vmesnika za prikaz tenziomiografskih meritev

Vzpostavitev spletnega vmesnika za prikaz tenziomiografskih meritev UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Nejc Poljanšek Vzpostavitev spletnega vmesnika za prikaz tenziomiografskih meritev DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

BLUETOOTH KOMUNIKATOR ZA WINDOWS MOBILE 6.5

BLUETOOTH KOMUNIKATOR ZA WINDOWS MOBILE 6.5 Alen Rojko BLUETOOTH KOMUNIKATOR ZA WINDOWS MOBILE 6.5 Diplomsko delo Maribor, april 2013 BLUETOOTH KOMUNIKATOR ZA WINDOWS MOBILE 6.5 Diplomsko delo Študent(ka): Študijski program: Alen Rojko Visokošolski

More information

Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku

Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku Univerza v Ljubljani Fakulteta za računalništvo in informatiko Tilen Faganel Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM RAČUNALNIŠTVO

More information

Sistemske zahteve za Saop icenter

Sistemske zahteve za Saop icenter Sistemske zahteve za Saop icenter Izdaja 27 080 13 20 info@saop.si www.saop.si 18.6.2018 Sistemske zahteve 2 Samostojna delovna postaja icenter je ERP sistem, ki zagotavlja popolno kontrolo nad vsemi poslovnimi

More information

Učinkovito preiskovanje polnotekstovnih podatkov v splošnonamenskih podatkovnih sistemih

Učinkovito preiskovanje polnotekstovnih podatkov v splošnonamenskih podatkovnih sistemih Univerza v Ljubljani Fakulteta za računalništvo in informatiko Blaž Štempelj Učinkovito preiskovanje polnotekstovnih podatkov v splošnonamenskih podatkovnih sistemih DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI

More information

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Dean Črnigoj. Izdelava odjemalca NFS za Windows DIPLOMSKO DELO

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Dean Črnigoj. Izdelava odjemalca NFS za Windows DIPLOMSKO DELO UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Dean Črnigoj Izdelava odjemalca NFS za Windows DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

More information

Skriptni jezik lupine Bash

Skriptni jezik lupine Bash Robert Meolic meolic@uni mb.si Skriptni jezik lupine Bash interno gradivo za predmet VSO, 2006/07 1. LITERATURA Pri sestavljanju gradiva o skriptnem jeziku lupine Bash sem uporabljal internet in naslednji

More information

Twitter Bootstrap in razvoj spletnega repozitorija za Cacti

Twitter Bootstrap in razvoj spletnega repozitorija za Cacti Univerza v Ljubljani Fakulteta za računalništvo in informatiko Fakulteta za matematiko in fiziko Nejc Župec Twitter Bootstrap in razvoj spletnega repozitorija za Cacti DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI

More information

Računalnik INFORMATIKA 1. LETNIK ŽILBERT TIVADAR

Računalnik INFORMATIKA 1. LETNIK ŽILBERT TIVADAR Računalnik INFORMATIKA 1. LETNIK ŽILBERT TIVADAR Kaj je računalnik? osrednji in najpomembnejši del informacijske tehnologije; pripomoček, ki olajša naše delo; računalnik nenehno ponavlja štiri opravila:

More information

Uporaba strežnika SharePoint za vodenje poteka dela pri izvajanju kompleksnih projektov

Uporaba strežnika SharePoint za vodenje poteka dela pri izvajanju kompleksnih projektov Univerza v Ljubljani Fakulteta za računalništvo in informatiko Roman Orač Uporaba strežnika SharePoint za vodenje poteka dela pri izvajanju kompleksnih projektov DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI

More information

Statistika 2 z računalniško analizo podatkov

Statistika 2 z računalniško analizo podatkov Statistika 2 z računalniško analizo podatkov Risanje grafov 1 V Statistične analize v SPSS-ju V.5 Risanje grafov V.5.1 Oblikovanje grafov V.5.2 Grafična predstavitev frekvenčne porazdelitve: histogram,

More information

DINAMIČNO DODELJEVANJE NAVIDEZNIH KRAJEVNIH OMREŽIJ V BREZŽIČNIH OMREŽJIH

DINAMIČNO DODELJEVANJE NAVIDEZNIH KRAJEVNIH OMREŽIJ V BREZŽIČNIH OMREŽJIH UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Adrijan Bradaschia DINAMIČNO DODELJEVANJE NAVIDEZNIH KRAJEVNIH OMREŽIJ V BREZŽIČNIH OMREŽJIH DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM

More information

Razvoj spletne trgovine z vključitvijo naprednih storitev

Razvoj spletne trgovine z vključitvijo naprednih storitev UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Papež Lovro Razvoj spletne trgovine z vključitvijo naprednih storitev DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Preregistracija 2013

Preregistracija 2013 Preregistracija 2013 Priprava dokumentov in slik za uporabo v spletni aplikaciji NZS December 2012 1 Preregistracija 2013 Kazalo: Fotografija osnovne informacije; Priprava fotografije; Dokumenti skeniranje

More information

Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov

Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Slobodan Jovanović Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

Metodologija migracije iz Exchange v Office 365

Metodologija migracije iz Exchange v Office 365 UNIVERZA V LJUBLJANI F Grega Lausegger Metodologija migracije iz Exchange v Office 365 DIPLOMSKO DELO PRVE Ljubljana, 2018 UNIVERZA V LJUBLJANI F Grega Lausegger Metodologija migracije iz Exchange v Office

More information

Primerjava NewSQL podatkovnih baz NuoDB in VoltDB

Primerjava NewSQL podatkovnih baz NuoDB in VoltDB Univerza v Ljubljani Fakulteta za računalništvo in informatiko Jernej Sila Primerjava NewSQL podatkovnih baz NuoDB in VoltDB DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM RAČUNALNIŠTVA IN INFORMATIKE

More information

Programski jezik Java

Programski jezik Java Programski jezik Java Interno gradivo za predmet Algoritmi in programski jeziki (4. letnik) ArrayList (neprečiščeno besedilo) ArrayList Java class ArrayList(java.util.ArrayList) je hiter in za uporabo

More information

ESET SMART SECURITY 10

ESET SMART SECURITY 10 ESET SMART SECURITY 10 Microsoft Windows 10 / 8.1 / 8 / 7 / Vista Vodnik za hitri začetek Če želite prenesti najnovejšo različico tega dokumenta, kliknite tukaj ESET Smart Security je celovita internetna

More information

SERVISI ZA ODDALJEN DOSTOP DO RAČUNALNIKOV

SERVISI ZA ODDALJEN DOSTOP DO RAČUNALNIKOV Fakulteta za elektrotehniko, računalništvo in informatiko Tadej Šetinc SERVISI ZA ODDALJEN DOSTOP DO RAČUNALNIKOV Diplomsko delo Maribor, Avgust 2015 SERVISI ZA ODDALJEN DOSTOP DO RAČUNALNIKOV Diplomsko

More information

Osnovna navodila za uporabo programskega paketa V3.1 STEP 7 MicroWIN 32

Osnovna navodila za uporabo programskega paketa V3.1 STEP 7 MicroWIN 32 ŠC Novo mesto Višja strokovna šola - elektronika Osnovna navodila za uporabo programskega paketa V3.1 STEP 7 MicroWIN 32 mag., univ. dipl. inž. ŠOLSKI CENTER NOVO MESTO, november 2004 KAZALO stran 1 UVOD...

More information

PRIPOROČILA ZA RAČUNALNIŠKO KONFIGURACIJO ZA DELO S PRO/ENGINEER WILDFIRE, CREO ELEMENTS/PRO IN CREO 2.0/3.0/4.0

PRIPOROČILA ZA RAČUNALNIŠKO KONFIGURACIJO ZA DELO S PRO/ENGINEER WILDFIRE, CREO ELEMENTS/PRO IN CREO 2.0/3.0/4.0 PRIPOROČILA ZA RAČUNALNIŠKO KONFIGURACIJO ZA DELO S PRO/ENGINEER WILDFIRE, CREO ELEMENTS/PRO IN CREO 2.0/3.0/4.0 Uvod... 1 Konfiguracija 1: modeliranje kosov in manjših sestavov (do ~100 manjših kosov*)...

More information

Izdelava aplikacij s podporo delovnih tokov za okolje SharePoint Server

Izdelava aplikacij s podporo delovnih tokov za okolje SharePoint Server UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Uroš Kastelic Izdelava aplikacij s podporo delovnih tokov za okolje SharePoint Server DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Ljubljana,

More information

Osnovni ukazi sistema LINUX in pomembne nastavitvene datoteke

Osnovni ukazi sistema LINUX in pomembne nastavitvene datoteke Osnovni ukazi sistema LINUX in pomembne nastavitvene datoteke Delo z imeniki in datotekami LS - izpiše vsebino imenika ls [opcije] imenik -a ali --all izpiše vse datoteke in imenike tudi skrite --color

More information

RAZVOJ GENERATORJA POSLOVNIH SPLETNIH APLIKACIJ

RAZVOJ GENERATORJA POSLOVNIH SPLETNIH APLIKACIJ UNIVERZA V MARIBORU FAKULTETA ZA ORGANIZACIJSKE VEDE Smer: Informatika v organizaciji in managementu RAZVOJ GENERATORJA POSLOVNIH SPLETNIH APLIKACIJ Mentor: izr. prof. dr. Robert Leskovar Kandidat: Boštjan

More information

NAMESTITEV WINDOWS 7 OKOLJA Z UPORABO MICROSOFT WAIK ORODIJ

NAMESTITEV WINDOWS 7 OKOLJA Z UPORABO MICROSOFT WAIK ORODIJ Organizacija in management informacijskih sistemov NAMESTITEV WINDOWS 7 OKOLJA Z UPORABO MICROSOFT WAIK ORODIJ Mentor: dr. Branislav Šmitek Kandidat: Aleš Frelih Kranj, november 2012 ZAHVALA Zahvaljujem

More information

3. sklop Elektronski obrazci OM1 ITK 2010/2011

3. sklop Elektronski obrazci OM1 ITK 2010/2011 3. sklop Elektronski obrazci OM1 ITK 2010/2011 Elektronski obrazci Elektronski dokument Elektronski obrazci Označevanje spletnih mest Arhiviranje spletnih informacij Pomen digitalnega podpisa Elektronski

More information

OGRODJE ZA OPTIMIZACIJO INDEKSOV V MYSQL BAZAH PODATKOV

OGRODJE ZA OPTIMIZACIJO INDEKSOV V MYSQL BAZAH PODATKOV UNIVERZA V LJUBLJANI FAKULTETA ZA ELEKTROTEHNIKO MATJAŽ MRGOLE OGRODJE ZA OPTIMIZACIJO INDEKSOV V MYSQL BAZAH PODATKOV DIPLOMSKO DELO UNIVERZITETNEGA ŠTUDIJA Mentor: doc. dr. Boštjan Murovec Ljubljana,

More information

Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle ADF)

Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle ADF) Univerza na Primorskem FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE ZAKLJUČNA NALOGA Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle

More information

Algoritmi in podatkovne strukture 2. Urejanje (sorting)

Algoritmi in podatkovne strukture 2. Urejanje (sorting) Algoritmi in podatkovne strukture 2 Urejanje (sorting) osnove, metode deli in vladaj, kopica Andrej Brodnik: Algoritmi in podatkovne strukture 2 / Urejanje (sorting) osnove, metode deli in vladaj, kopica

More information

Časovno omejevanje dostopa do interneta

Časovno omejevanje dostopa do interneta Univerza v Ljubljani Fakulteta za računalništvo in informatiko Edi Medvešček Časovno omejevanje dostopa do interneta DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN

More information

Minimalne/optimalne zahteve za delovanje informacijskega sistema v povezavi z IMAGINE aplikacijami

Minimalne/optimalne zahteve za delovanje informacijskega sistema v povezavi z IMAGINE aplikacijami IMAGINE d.o.o. Podjetje za računalniški inženiring Gosposvetska cesta 84, 2000 Maribor Tel.: 02 320 60 60 Fax: 02 320 60 70 www.imagine.si, prodaja@imagine.si Minimalne/optimalne zahteve za delovanje informacijskega

More information

Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku

Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Matej Rojko Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku MAGISTRSKO

More information

Ime in priimek: Kazalo

Ime in priimek: Kazalo Ime in priimek: Datum: Naloga: Multicast Kazalo Naloga... 1 1. Uvod... 1 1.1. IP multicast... 1 1.2. Protokol IGMP... 1 1.3. Unicast in multicast usmerjanje/posredovanje... 2 1.4. Ethernet multicast (IGMP

More information

UPORABA SILVERLIGHT 4 ZA PODPORO PRI ELEKTRONSKEM PREVERJANJU ZNANJA

UPORABA SILVERLIGHT 4 ZA PODPORO PRI ELEKTRONSKEM PREVERJANJU ZNANJA Matjaž Reberc UPORABA SILVERLIGHT 4 ZA PODPORO PRI ELEKTRONSKEM PREVERJANJU ZNANJA Diplomsko delo Maribor, junij 2011 I Diplomsko visokošolskega strokovnega študijskega programa UPORABA SILVERLIGHT 4

More information

!!!!!5_hard_disk.doc. Trdi diski

!!!!!5_hard_disk.doc. Trdi diski 1 Trdi diski Vmesniki trdih diskov Vmesniki trdih diskov omogočajo priključitev trdih diskov na PC oz. matično ploščo. Sodoben PC ima enega ali več različnih vmesnikov: ATA (AT Attachment) SATA (Serial

More information

OMREŽNI UKAZI OS LINUX

OMREŽNI UKAZI OS LINUX Višja strokovna šola Velenje Informatika Murska Sobota Računalniške komunikacije in omrežja II OMREŽNI UKAZI OS LINUX Priročnik za laboratorijske vaje Druga popravljena in razširjena izdaja Pripravil:

More information

UVAJANJE IPv6 PROTOKOLA

UVAJANJE IPv6 PROTOKOLA UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Damjan Ferlič UVAJANJE IPv6 PROTOKOLA Diplomska naloga Maribor, september 2007 FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN

More information

TEHNIČNA POJASNILA GLEDE IZPOLNJEVANJA ITS POROČIL

TEHNIČNA POJASNILA GLEDE IZPOLNJEVANJA ITS POROČIL TEHNIČNA POJASNILA GLEDE IZPOLNJEVANJA ITS POROČIL Tip dokumenta IT-TN Oznaka dokumenta BS-IT-RA-TN-ITS-dod Verzija dokumenta 1.1 Status dokumenta Datum zadnje spremembe dokumenta 30.01.2014 Zgodovina

More information

Spletna aplikacija za urejanje vadbenih programov v fitnesu

Spletna aplikacija za urejanje vadbenih programov v fitnesu UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Matjaž Peterlin Spletna aplikacija za urejanje vadbenih programov v fitnesu DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Razvoj orodja za centralni nadzor posodobitev v platformi WordPress

Razvoj orodja za centralni nadzor posodobitev v platformi WordPress UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Dejan Vrhovnik Razvoj orodja za centralni nadzor posodobitev v platformi WordPress DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

Prog-Express Uporabniški priročnik

Prog-Express Uporabniški priročnik Prog-Express Uporabniški priročnik 1 Kazalo KAZALO... 2 SISTEMSKE ZAHTEVE... 4 32-BIT OPERACIJSKI SISTEMI... 4 64-BIT OPERACIJSKI SISTEMI... 4 LICENČNE INFORMACIJE ZA PROG-EXPRESS... 5 POGOJI LICENCE FREEWARE...

More information

Open IT VARNO POVEZOVANJE SODOBNIH ODPRTIH SPLETNIH APLIKACIJ V OBLAKU TYPO3, MAGENTO, ALFRESCO

Open IT VARNO POVEZOVANJE SODOBNIH ODPRTIH SPLETNIH APLIKACIJ V OBLAKU TYPO3, MAGENTO, ALFRESCO Open IT VARNO POVEZOVANJE SODOBNIH ODPRTIH SPLETNIH APLIKACIJ V OBLAKU TYPO3, MAGENTO, ALFRESCO Uvod Informacijska varnost ena izmed glavnih tematik informacijske dobe. Čim bolj varne spletne aplikacije

More information

Informacijski sistemi

Informacijski sistemi Vsebina predmeta Podatki, informacije in informacijski sistemi Infrastruktura informacijskih sistemov Tipi podatkov Anton Kos Poizvedbe in iskanje Orodja za delo s podatki 2 Podatki, informacije, inf.

More information

Mobilna aplikacija za pregledovanje slik visokih ločljivosti

Mobilna aplikacija za pregledovanje slik visokih ločljivosti Univerza v Ljubljani Fakulteta za računalništvo in informatiko Anže Sršen Mobilna aplikacija za pregledovanje slik visokih ločljivosti DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Informatika v medijih

Informatika v medijih 3.1. Osnove operacijskih sistemov. Sistemska programska oprema. Hiter neumen stroj Računalniki: Strojna oprema (hardware) Omejene sposobnosti Znajo računati samo osnovne matematične operacije in logične

More information

TI C2000: Družina za vgrajene (embedded) aplikacije

TI C2000: Družina za vgrajene (embedded) aplikacije CPU MIPS RAM (words) ROM (words) Flash (words) BootROM (words) Event Manager CAP/QEP TIMER PM(CMP) ADC TIMER Resolution 12 # ofchan 16 Conv time McBSP EXMIF atch Dog SPI SCI (UART) CAN Volts (V) # I/O

More information

Specification and Implementation of a Light-Weight Internet Content Delivery Platform

Specification and Implementation of a Light-Weight Internet Content Delivery Platform University of Ljubljana Faculty of Computer and Information Science Marko Čeferin Specification and Implementation of a Light-Weight Internet Content Delivery Platform DIPLOMA THESIS First cycle professional

More information

Navodila za namestitev in uporabo medprogramja HID ActivClient za Windows

Navodila za namestitev in uporabo medprogramja HID ActivClient za Windows Navodila za namestitev in uporabo medprogramja HID ActivClient za Windows Februar 2017 CREA plus d.o.o., www.creaplus.si, prodaja@creaplus.si 1 / 24 Kazalo 1. Programska oprema HID ActivClient... 3 1.1

More information