Image
18.5.2016 0 Comments

Databázy III / 1.časť

Späť na úvod >> Späť na seriál

Hovorí sa, že tam, kde sa niečo končí, iné sa začína. Oficiálny školský rok sa blíži k úspešnému koncu, ale my začíname. Preto vás vítam na vysokej škole databáz. Ako som naznačoval v predošlej časti, budeme sa v tejto tretej sérii venovať špecifickým problémom v oblasti databáz. Jasné, že bez nich by naše projektíky a aplikácie fungovali, ale ak chceme dosiahnuť vyššiu kvalitu, rýchlosť alebo spoľahlivosť, bez indexov, zamykania či archivácie dát neuspejeme.
Tentoraz sa budeme venovať kľúčom a indexom.
Vráťme sa na chvíľu k našim začiatkom a zopakujme si, čo vieme o kľúčoch a indexoch vo všeobecnej teórii databáz.
Predstavme si akúsi tabuľku, napríklad telefónny zoznam. Pre zjednodušenie taký kancelársky typ, písaný na malých kartičkách, ktoré bývajú vložené do kruhového otočného stojana, ako som to už neraz videl v amerických filmoch. (Aby sme si to hneď zo začiatku nekomplikovali, budeme predpokladať, že v tomto zozname budeme mať iba jedno meno na každé písmeno abecedy, teda na písmeno „T“ bude iba pán Takáč a už nikto iný na „T“.) Nech sú na tej kartičke uvedené tieto údaje: Poradové_Číslo_Kartičky, Priezvisko, Meno, BydliskoTelefónne_Číslo. A ako vznikajú také kartičky? No predsa postupne, tak ako vznikajú obchodné či osobné kontakty. Pre názornosť: hneď prvý deň si vytvoríme kartičku s číslom 1, kde si zapíšeme údaje o pánovi Krátkom, bývajúcom v Bratislave s telefónnym číslom 75689625. Založíme do stojana. Druhý deň stretneme slečnu Blaníkovú, a keďže sa nám veľmi páči, rýchlo zavedieme kartičku č. 2 s jej telefónnym číslom a adresou a šup s ňou do stojana. A podobne postupujeme ďalej, až sa kartotéka napĺňa a napĺňa a jej obsah môže vyzerať asi takto:

Poradove_Cislo_Karty

Priezvisko

Meno

Bydlisko

Telefonne_Cislo

1

Krátky

Ján

Bratislava

02/75689625

2

Blaníková

Alena

Žilina

041/3698524

3

Žabka

Pavol

Martin

043/3217538

......

 

 

 

 

244

Takáč

Peter

Banská Bystrica

048/7896542

245

Stehlíková

Karolína

Brezno

047/9513578

246

Václavík

Klement

Trenčín

032/6567896

......

 

 

 

 

Skúsme teraz náš imaginárny telefónny zoznam opísať už „databázisticky“.
Vidíme, že je to akási tabuľka s n záznamami a 5 stĺpcami. Záznamy rastú vzostupne podľa Poradové_Číslo_Kartičky. Môžeme povedať, že práve tento stĺpec je akýmsi identifikátorom celej tabuľky. Keďže čísla zapisujeme pekne vzostupne, nemôže sa stať, že by sa v tomto stĺpci nachádzali dve rovnaké hodnoty, a tak môžeme povedať, že tento stĺpec je jednoznačný a je ideálny ako primárny kľúč tabuľky.
Ak sa pozrieme na položku Priezvisko, ktorá asi bude dominantná pri vyhľadávaní telefónneho čísla, zistíme, že nie je vôbec zotriedená podľa abecedy, lebo sme kartičky vypĺňali tak, ako sme získavali kontakty, teda pekne po poriadku. Ak budeme chcieť vyhľadať telefónne číslo pani Stehlíkovej, máme dve možnosti: buď prelistujeme celú kartotéku od začiatku, až narazíme na meno Stehlíková, alebo... alebo budeme mať akúsi pomocnú tabuľku, ktorá bude zotriedená podľa abecedy a v nej bude zaznamenané, že priezvisko Stehlíková sa v hlavnej tabuľke nachádza na kartičke s číslom 245. V tejto pomocnej tabuľke už vyhľadáme veľmi rýchlo. A priori vieme, že S bude po písmene R a pred písmenom T, takže všetky predchádzajúce riadky môžeme preskočiť. Pre nás je podstatný údaj v druhom stĺpci takejto pomocnej tabuľky, ktorý odkazuje na príslušné miesto v tabuľke hlavnej. Tejto pomocnej tabuľke sa hovorí index. S pomocnými indexovými tabuľkami či kartotékami sa môžeme stretnúť hlavne v knižniciach. Sú to tie malé kartičky, uložené v zásuvkách, kde môžeme vyhľadávať podľa názvu (názvový index) alebo podľa autora (autorský index). Je to oveľa pohodlnejšie ako prechádzať celé police s knihami a hľadať tú správnu publikáciu.

Vráťme sa k nášmu telefónnemu zoznamu.
Takto vyzerá papierová forma tabuľky index:

Priezvisko

Karta

Blaníková

2

Krátky

1

........

 

Stehlíková

245

Takáč

244

........

 

Václavík

246

Žabka

3

V elektronickej podobe to vyzerá obdobne, k hlavnej tabuľke je nadefinovaný index na konkrétny stĺpec hlavnej tabuľky. Keby sme si to chceli graficky predstaviť, naša hlavná tabuľka ZOZNAM a index na stĺpec Priezvisko, nazvaný napríklad idx_priez.
Index je dátová štruktúra uložená v samostatnom súbore, ktorá urýchľuje vyhľadávanie a triedenie v hlavnej tabuľke ZOZNAM podľa stĺpca Priezvisko, teda v tomto prípade podľa abecedy.
Funguje ako určitý abecedný oddeľovač uložený v súbore. Umožňuje nájsť tú časť abecedy, ktorú práve hľadáme, v našom prípade písmeno S, a tak preskočiť všetky predchádzajúce písmená. Vyhľadávanie je tak oveľa rýchlejšie a program nestráca čas prehľadávaním záznamov, ktoré ho nezaujímajú.
Indexy sú výborná vec, ale majú aj nevýhody. Priveľa indexov môže mať opačný efekt. V predchádzajúcom príklade nás index okamžite prenesie do oboru záznamov začínajúcich sa na písmeno S. Ale ako by asi index vyzeral, kedy sme neindexovali iba prvé písmeno, ale priamo celé mená? Index by tak obsahoval kvantá oddeľovačov – prakticky toľko, koľko záznamov je v tabuľke uložených. Vyhľadávanie by tak bolo pomalšie. Preto by sme mali vo svojich tabuľkách udržiavať rozumný počet indexov a ich rozsahov.
Ďalším problémom je, že pridávanie záznamov do indexovaných tabuliek je oveľa pomalšie ako do neindexovaných. Je to logické – zatiaľ čo v neindexovanej tabuľke sa nový záznam jednoducho „prilepí“ na koniec tabuľky, v indexovanej musí okrem pridania ešte prehľadať všetky oddeľovače v indexe a zaradiť nový oddeľovač na správne miesto.
Stále však platí, že potom je vyhľadávanie podstatne rýchlejšie. Sami teda musíme rozhodnúť, čo je pre nás výhodnejšie. Neskôr si povieme o jednoduchej finte, ako dosiahnuť, aby bola „aj koza celá, aj vlk sýty“.
Zapamätajme si! Indexy urýchľujú prístup k dátam prostredníctvom SQL príkazu typu SELECT. Znižujú však výkon príkazov INSERT, UPDATE a DELETE.
AKÉ POLIA INDEXOVAŤ.
Ak sme sa rozhodli používať indexy, musíme sa najprv rozhodnúť, ktoré polia tabuľky indexovať. Rozhodnutie nebýva vždy jednoduché. Spravidla chceme indexovať tie polia, ktoré sa používajú najčastejšie. Existuje pravidlo, že sú to tie polia, ktoré sa v tej-ktorej aplikácii uvádzajú v klauzule WHERE.

V SQL príkaze
SELECT * FROM ZOZNAM WHERE Priezvisko = ‘Stehlíková’
sa na indexáciu ponúka stĺpec Priezvisko.

Môže však nastať táto teoretická situácia: Sme mimo pracoviska, a tak naša sekretárka preberá telefóny a odkazy. Keď sa vrátime, nájdeme na stole poznámku, že máme volať tel. číslo 048/7896542. Ale ani za svet si nevieme spomenúť, komu to číslo patrí! Vypytovať sa „Haló, kam som sa dovolal?“ je nevhodné, a tak chceme nájsť v našej tabuľke vlastníka tohto čísla. A aby to šlo rýchlejšie, najlepšie bude mať aj index na pole Telefonne_Cislo.
V jednej tabuľke môže byť definovaných viac kľúčov. Aj spomínaný príklad má najmenej dva kľúče – idx_priezidx_tel. Každá tabuľka môže mať najviac 16 indexov, ale také množstvo by sme nemali používať. Ak sa však tomu nemôžeme vyhnúť, mali by sme znovu prehodnotiť celý návrh databázy, aby sme sa vyhli problémom. Niekoľko indexov na každú tabuľku však nie je neobyčajný jav.
Spravidla sa osvedčuje indexácia polí obsahujúcich jedinečné dáta. Preto sa prednostne indexujú primárne kľúče. To je jeden z dôvodov, prečo si používatelia zamieňajú pojmy kľúčindex. Kľúče zjednodušujú definíciu štruktúry databázy, zatiaľ čo indexy zvyšujú jej výkon. Konkrétnejší rozdiel medzi kľúčmi a indexmi si teraz vysvetlíme.

ROZDIEL MEDZI KĽÚČOM A INDEXOM. Vo všeobecnej teórii databáz je kľúč štrukturálny odkaz v databáze, ktorý definuje reláciu (vzťah) medzi dvoma tabuľkami. Kedykoľvek budeme chcieť prepojiť tabuľky navzájom, použijeme kľúče z jednotlivých tabuliek. Najvhodnejší je na to, samozrejme, primárny kľúč. Spomeňme si na definíciu primárneho kľúča – musí byť čo najkratší, musí byť jedinečný (teda nemôže obsahovať dve rovnaké hodnoty) a nesmie obsahovať prázdnu hodnotu (NULL).
Keď sa pozrieme na našu tabuľku ZOZNAM, vidíme, že ideálnym predstaviteľom primárneho kľúča je stĺpec Poradove_Cislo_Karty. Ak budeme chcieť využiť túto tabuľku na spojenie s inou tabuľkou, napr. na evidenciu telefónnych hovorov s kontaktnými osobami (nech sa táto tabuľka nazýva HOVORY), budeme využívať práve tento kľúč:

ID_hovoru

Datum

Cas_trvania

ID_volaneho

1

23022002

12:32

1

2

24032002

2:45

246

....

....

 

 

1569

27042002

7:08

245

Ak zadáme príkaz
SELECT Hovory.*, Zoznam.Priezvisko, Zoznam.Bydlisko FROM Hovory, Zoznam
WHERE Hovory.ID_volaneho = Zoznam.Poradove_Cislo_Karty

dostaneme celkom pekný výpis už s konkrétnymi priezviskami a bydliskom volaných osôb.

A tu sme práve využili primárny kľúč.
Voľba primárneho kľúča je pri návrhu databázy veľmi dôležitá. Primárny kľúč je základným stavebným kameňom ukladaných dát a práve ten v skutočnosti umožňuje spojovanie tabuliek a vlastnú realizáciu koncepcie relačných databáz. Voľba primárneho kľúča musí byť dobre premyslená, pretože iba ten dokáže jednoznačne identifikovať každý záznam v tabuľke.
Predstavme si, že v položke Priezvisko sa môžu nachádzať dva rovnaké záznamy. Je to reálne, veď koľko existuje ľudí s rovnakým priezviskom. Z toho vyplýva, že položka Priezvisko ako primárny kľúč neprichádza do úvahy. Môžeme však tento stĺpec využiť ako index – tak ako sme si to už vysvetlili.
Primárny kľúč je v MySQL automaticky indexovaný, takže sa rozdiel medzi kľúčmi a indexmi čiastočne stiera. Pre jednoduchosť teda budeme považovať v MySQL slová index a kľúč za synonymá (= slová rovnakého významu).

Typy indexov
Aké typy indexov (=kľúčov) v MySQL teda poznáme?

Sú to:

  • primárny kľúč – primary key
  • jedinečný kľúč, nazývaný aj jedinečný index – unique
  • jednoduchý index – index

Stĺpec tabuľky, nad ktorým chceme vytvoriť jednoduchý index, môže obsahovať aj položky s rovnakými hodnotami. Vzorovým príkladom môže byť stĺpec Priezvisko v tabuľke ZOZNAM.

JEDINEČNÝ KĽÚČ (UNIQUE INDEX). Ako vyplýva z názvu, jedinečný index nedovoľuje v indexovanom poli existenciu duplicitných položiek. Ak sa pokúsime do poľa s jedinečným indexom vložiť duplicitný záznam, t. j. taký, ktorý tam už existuje, systém to nedovolí a vyhlási chybu.
Aký je teda rozdiel medzi jedinečným (unique) a primárnym (primary) kľúčom?
Každá tabuľka môže mať iba jeden primárny kľúč, ale viac unikátnych kľúčov. A ešte jedna výhoda pri použití unique kľúčov – pri odstránení primárneho kľúča z tabuľky sa novým primárnym kľúčom stane automaticky unikátny kľúč.
VYTVÁRANIE INDEXOV. Indexy – kľúče môžeme vytvárať niekoľkými spôsobmi, a to pri vytváraní novej tabuľky alebo na už vytvorenú (a naplnenú) tabuľku.
DEFINÍCIA INDEXU PRI VYTVÁRANÍ TABUĽKY. Vytváranie tabuliek je tak ako všetko ostatné pomerne jednoduché. Aj tu existuje niekoľko rôznych spôsobov.

Všeobecný zápis je:

            CREATE TABLE meno_tabulky
            (
            .....
            INDEX meno_indexu (položka1,položkaN),
            UNIQUE meno_indexu (položka1,položkaN),
            PRIMARY KEY meno_indexu (položka1,položkaN),
            .....
            )

Mená indexov volíme vhodne tak, aby opisovali položku, na ktorú boli nastavené. Ja najradšej používam prefix idx_ a pripojím k tomu (skrátený) názov indexovanej položky, napr. idx_priezidx_tel.
V uvedenom zápise si všimnime, že index môže byť zložený aj z viacerých položiek, nielen z jednej. Vtedy zapíšeme zoznam indexovaných polí do zátvoriek a oddelíme ich od seba čiarkou.
Predstavme si vytvorenie tabuľky ZOZNAM, kde primárnym kľúčom bude stĺpec Poradove_Cislo_Karty, a indexy budú na stĺpoch PriezviskoTelefonne_Cislo:

CREATE TABLE Zoznam
(
Poradove_Cislo_Karty INT Auto_Increment PRIMARY KEY NOT NULL,
Priezvisko VARCHAR(30),
Meno VARCHAR(15),
Bydlisko VARCHAR(20),
Telefonne_Cislo VARCHAR(12),
INDEX idx_Priez (Priezvisko),
INDEX idx_tel (Telefonne_Cislo)
)

VYTVORENIE INDEXOV NA UŽ EXISTUJÚCU TABUĽKU. Ak sme vytvorili tabuľku ZOZNAM len s primárnym kľúčom, ale bez indexov, môžeme ich dodefinovať takto:
CREATE INDEX meno_indexu ON meno_tabulky (zoznam_indexovaných_polí)

napr.:
CREATE INDEX idx_priez ON Zoznam (Priezvisko).

Keby sme chceli dodefinovať k niektorej tabuľke jedinečný, unikátny index, syntaktický zápis bude vyzerať takto:
CREATE UNIQUE meno_indexu ON meno_tabulky (zoznam_indexovaných_polí)

Poznámka: Takýmto spôsobom nie je možné definovať primary key.
Ešte vhodnejším spôsobom na vytvorenie indexu, unikátneho indexu, ale aj primárneho kľúča je použitie klauzuly ALTER TABLE. Syntaktické zápisy sú takéto:

ALTER TABLE meno_tabuľky ADD INDEX meno_indexu (zoznam_indexovaných_polí)
ALTER TABLE meno_tabuľky ADD UNIQUE meno_indexu (zoznam_indexovaných_polí)
ALTER TABLE meno_tabuľky ADD PRIMARY KEY (zoznam_indexovaných_polí)

ODSTRAŇOVANIE INDEXOV. Za určitých okolností (povieme si akých) je vhodné index odstrániť. Na to slúži táto skupina identických SQL príkazov:
DROP INDEX meno_indexu ON meno_tabulky
alebo
ALTER TABLE meno_tabuľky DROP INDEX meno_indexu
alebo obdobne
ALTER TABLE meno_tabuľky DROP PRIMARY KEY

Keďže indexy sú samostatné štruktúry uložené v samostatnom súbore na disku s príponou .MYI, mazať index nie je nebezpečné. Nijaké dáta z hlavnej tabuľky sa nestratia. Naopak, musíme mať na pamäti, že  ak zmažeme stĺpec, prídeme aj o jeho index.
ZISŤOVANIE ÚDAJOV O INDEXOCH. Ak potrebujeme zistiť údaje o tabuľke a jej indexoch, môžeme použiť dva príkazy v monitore mysql.
Na opis štruktúry tabuľky použijeme (zobáčik > naznačuje zadávanie príkazu v monitore mysql):
> describe zoznam;

a dostaneme výsledok. Všimnime si, že v stĺpci Key sú tri zápisy:

  • PRI pri položke Poradove_Cislo_ Karty značí, že ide o primárny kľúč – PRIMARY KEY
  • MUL pri položkách PriezviskoTelefonne_Cislo značí, že k príslušnému poľu je pripojený index, ktorý nie je jedinečný

Pomocou nasledujúceho príkazu zistíme podrobnejšie informácie:
> show index from zoznam;

V stĺpci Key_name vidíme už skutočné mená indexov idx_priezidx_tel.
Pri prezeraní tejto tabuľky nás najviac zaujímajú tieto stĺpce:
Non_unique značí, či takto indexovaná položka môže obsahovať duplicitné záznamy. 0 (nula) znamená, že nemôže. A je to pravda, lebo Primary key nemôže obsahovať duplicity.
Collation značí, ako bude index triedený: A značí vzostupne, NULL značí netriedený.

Rôznorodosť indexov
Už vieme, že sa indexy skladajú z jednej alebo viacerých položiek. Preto indexy rozdeľujeme na niekoľko druhov:

  • jednopoložkové indexy
  • viacpoložkové indexy
  • čiastočné indexy
  • zložené čiastočné indexy

JEDNOPOLOŽKOVÝ INDEX. Ak nastavujeme index v tabuľke iba na jednu položku, hovoríme o jednopoložkovom indexe. V tomto prípade uvedená položka dostatočne identifikuje záznam a je to asi najčastejší prípad použitia indexu.
Potom v zápise definície indexu je ako parameter iba táto položka, napr.:
ALTER TABLE Zoznam ADD INDEX idx_priez (Priezvisko)

VIACPOLOŽKOVÝ INDEX. V prípadoch, keď nie je možné zaistiť jednoznačnosť záznamu pomocou jednej položky tabuľky, môžeme použiť dva či viac stĺpcov. Vhodný kľúč môže vzniknúť kombináciou (Priezvisko, Meno) alebo dokonca (Priezvisko, Meno, Bydlisko). Správna voľba záleží na aplikácii. Vzorový zápis potom bude:
ALTER TABLE Zoznam ADD INDEX idx_priez (Priezvisko, Meno, Bydlisko)

ČIASTOČNÝ INDEX. Už sme si hovorili, že ak je index veľmi rozsiahly, je jeho súbor veľmi veľký, ba dokonca môže byť väčší ako dátový súbor. Aj vyhľadávanie pomocou veľmi rozsiahleho indexu je nákladné na prostriedky systému.
Príkladom môže byť spomínaný index na položku Priezvisko. Keby sme mali v našej tabuľke viac mien, ktoré sa začínajú na to isté písmeno (napr. Stehlíková a Salaba) a použili by sme index z odseku o jednopoložkovom indexe, boli by v indexe definované obidve mená, teda Odkaz na Stehlíkovú aj na Salabu.
V praxi však stačí indexovať len na niekoľko prvých znakov položky. Povedzme, že nám v tomto prípade stačí indexovať len na prvé tri znaky z položky Priezvisko. Zápis vytvorenia indexu bude potom vyzerať takto:
ALTER TABLE Zoznam ADD INDEX idx_priez (Priezvisko(3))

Takto vytvorený index bude pomerne malý a skutočne efektívny.
ZLOŽENÝ ČIASTOČNÝ INDEX. Je kombináciou viacpoložkového a čiastočného indexu. Ak znova vystačíme s prvými tromi znakmi z každej položky, zápis bude:
ALTER TABLE Zoznam ADD INDEX idx_priez (Priezvisko(3), Meno(3), Bydlisko(3))

Je samozrejmé, že počet prvých znakov (tzv. predpona) môže byť rôzny pre každú položku.
INDEXOVÉ VOĽBY. Kedy a aký typ indexu je vhodné použiť? Existujú určité zaužívané pravidlá, ktoré vedú k úspechu.

Kedy je vhodné použiť index:

  • Klauzula WHERE. Ak niektorú položku používame veľmi často v klauzulke WHERE, nastavenie indexu na túto položku podstatne zrýchli výkon príkazu SELECT. Ide niekedy o niekoľkotisícnásobné zrýchlenie!
  • Klauzula ORDER BY a GROUP BY. Triedenie záznamov pomerne značne zaťažuje celý systém. No indexy automaticky triedia záznamy v abecednom poradí, takže by sme ich mali použiť aj na položky, ktoré sa často používajú v klauzulách ORDER BYGROUP BY.
  • MIN( ) a MAX ( ). Pri vyhľadávaní najmenších a najväčších hodnôt sú indexy ideálnym pomocníkom.
  • Spájanie tabuliek. Význam systému relačných databáz spočíva v schopnosti rýchlo vyhľadať a spojiť informácie, ktoré sú uložené v samostatných tabuľkách. Odporúča sa, aby bola indexovaná väčšina položiek, ktoré sa na spojení tabuliek podieľajú.

Kedy by sa indexy použiť nemali:

  • Tabuľky, do ktorých sa často zapisuje. Pri každom zásahu do tabuľky, bez ohľadu na to, či použijeme príkaz INSERT, UPDATE alebo DELETE, je potrebné zmeny uložiť nielen do hlavnej tabuľky, ale aj do všetkých indexov, a teda aj do ich súborov. V tomto prípade má existencia mnohých indexov za následok značné zaťaženie systému.
  • Výberové príkazy – SELECT, ktorých výsledok obsahuje veľmi veľa záznamov. Ak očakávame, že výsledok selektovania obsahuje značné množstvo záznamov, nastáva pri použití indexu určité zdržanie, lebo systém musí pristupovať do dvoch súborov – dátového a indexového. Vtedy je efektnejšie, aby systém radšej tabuľku prehľadával rad po rade.
  • Malé tabuľky. Výhody indexov spoznáme iba pri mnohých záznamoch, nie pri desiatich či päťdesiatich.
  • MySQL nedovoľuje vytvoriť index na polia, ktoré obsahujú prázdne hodnoty.

Poznámka: Odporúča sa, aby primárny kľúč obsahovala každá tabuľka v databáze, v ktorej chceme jednoznačne identifikovať každý záznam.
KOMPROMISY. Čo v prípade, ak mám tabuľku, do ktorej sa často a veľa zapisuje, ale zároveň sa v nej často vyhľadáva?
Opíšem náš príklad z praxe:

Máme tabuľku údajov o materiáli, v ktorej sa hlavne vyhľadáva príkazom SELECT počas celého dňa, lebo jej obsah je sprístupnený na intranete. Keďže nejde o kritické informácie, ktoré by vyžadovali aktualizáciu on line, môžeme si dovoliť raz za čas, spravidla v noci alebo po pracovnom čase, doplniť nové údaje. Vtedy urobíme toto:

  • Odstránime indexy príkazom DROP INDEX. Ako vieme, žiadne údaje sa nestratia.
  • Pridáme nové záznamy príkazom INSERT. Keďže indexy neexistujú, záznamy sa pridávajú rýchlo na koniec tabuľky.
  • Nastavíme príslušné indexy príkazom ALTER TABLE  ADD INDEX. Takto sa vytvoria indexy na naplnených dátach – hovoríme tomu, že sa dáta zindexovali.

Nové prehľadávanie príkazom SELECT je opätovne veľmi rýchle, lebo posledná indexácia vždy zasiahne aj posledne pridané záznamy.
Ešte existuje jeden špeciálny typ indexu – tzv. FULLTEXT index. Ako už jeho názov naznačuje, slúži na fulltextové vyhľadávanie v tabuľkách. Neviete, čo to je? Tak práve toto je asi najmocnejší index v súčasných databázach, ale o tom si povieme nabudúce.


Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Ako zbaviť fotky hmly

08.12.2016 11:59

Hmla alebo dym sú často veľmi kreatívne nástroje. No všetkého veľa škodí. Fotka potom stráca kontrast a v podstate na nej nič nevidieť. Hmlu môžete neraz následnými úpravami odstrániť alebo zredukovať ...

Ako na to

Užitočné SW nástroje

08.12.2016 11:53

AllDup v4.0.3 Určenie: program na vyhľadávanie a odstraňovanie duplicitných súborov Vlastnosti: duplicitné súbory sa vyhľadávajú len na zvolených diskových jednotkách alebo len v rámci vybraných ...

Ako na to

Fotografovanie s bleskom

08.12.2016 11:47

Ak máte moderný fotoaparát so vstavaným alebo externým bleskom, zdá sa vám téma článku triviálna. Jednoducho nastavíte vhodný režim, vyberiete najlepšiu kompozíciu záberu, exponujete a o zvyšok sa už ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá