Snímka 6

Databaza

phpMaAdmin, PostgreSQL, C.R.U.D.

Späť na úvod

Databázy

phpMyAdmin, PostgreSQL

C.R.U.D. - vytvoriť, čítať, aktualizovať a odstrániť

    Dá sa povedať, že mám dve obľúbené činnosti. Kreslenie a programovanie. Kreslenie je u mňa viazané na operačný systém Windows. Na inom OS to jednoducho nejde. Preto som na Windows musel zostať. Teda mojím základným stavebným kameňom bol XAMP.

XAMP

V tých časoch s jedným P. Z počiatku som pracoval s databázou cez CMD Command-line, neskôr cez grafické prostredie phpMyAdmin.

phpMyAdmin

A ešte neskôr cez PostgreSQL.

PostgreSQL

Veľmi sa diskutuje, ktoré prostredie je to najlepšie. Odpoveď je, všetky.

    Aké teda boli tie mnou vytvárané databázy. Každá bola riadená vizuálne cez PHP a MySQL stránku.

PHP a MySQL

Následne MySQLi, SQLite. Prečo? Pretože, je tu lepšia možnosť editácie výpisu a hlavne rýchlejšia kontrola. Základ tvoril výpis, podmienený výpis. Informácie typu, koľko je toho, čo sa vypísalo. Prípadne hodnoty v pomere k ostatnému, analytické dielčie informácie a detaily. Typovo teda číselné, textové (teda aj path) a kombinované. Taktiež aj špecifické, ako priebehy matematických funkcií, alebo len grafické vyjadrenie hodnoty samostatne, alebo v porovnaní s inými.

    Z počiatku to bola archivácia dátových nosičov. Ucelené témy, ako obraz, zvuk, periodikum, a desiatky rôznych iných štruktúrovateľných dát.

    Informácia pre súčasného čitateľa. Jednalo sa o CD, DVD, .avi, .mp3, .txt a iné. Teda skutočné médium mimo počítača a siete.

    Neskôr HDD. Dnes už sa zdá, že skutočné médium nie je potrebné. Dáta sa dobrovoľne odosielajú na cudzie neznáme úložiská k ďalšiemu spracovaniu.

    Skúsenosťou som zistil, či sa jedná o dobrú databázu, alebo nie. V každom prípade musela byť schopná pracovať neohrozene aj bez pripojenia na internet. Musela byť riadne zálohovateľná, obnoviteľná a prenositeľná na iný počítač. Tým som chcel naznačiť, že sem tam internet nebol a sem tam, raz za čas, definitívne odišiel aj počítač. A hlavne musela byť aj dostatočne veľká. Praxou som si povedal, že do pár tisíc záznamov, postačí aj systém polí v PHP. Nakoniec aj súčasný django je takto koncipovaný a doporučene limitovaný.

    Z toho množstva databáz, ktoré som vytvoril, väčšina zanikla. Ale niektoré stále pretrvávajú. Tá najväčšia používala jadro univerzálnosti, ktoré používajú ďalšie tri databázy. Prečo používala? Pretože v tom čase obsahovala 7500 záznamov po viac ako 100 bunkách. Samé čísla, výpočty, medzivýpočty a vetvenie v interakcii záznam so záznamom naprieč celou databázou. Čas spracovania, viac ako 45 s. Teda blízko náchylné na hraničné hodnoty a možnosť nedokončenia operácie. Samozrejme som jej pomáhal a dopredu boli vytvárané tabuľky čítajúce do 175000 riadkov, aby sa opakovane nevykonával rovnaký cyklus výpočtov a dochádzalo iba k dotazovaniu sa na existenciu. Teda aby iba nazerala, či už to má, alebo ak nie, tak doplnila. Takže databáza prešla na novú filozofiu. Dnes už sa v nej počet záznamov blíži k 10000 a čas spracovania sa skrátil na okamih. Stále sa však s úsmevom pozastavím nad tým, že na jedno kliknutie sa vykonávali všetky tie rovnice, podmienky a cykly, ktoré som do nej vložil. Raz som to počítal a násobil a bolo to číslo blízke k 600000 dielčích operácií na jedno kliknutie. Na druhú stranu, bolo to prehľadné špagety programovanie.

Projekty, čo stoja za zmienku

• Mapa ZK

• Cestovné poriadky

• Zákony

    Presnejšie, veľké projekty, čo stoja za zmienku a je škoda, že im je koniec.

    Mapa ZK

    Projekt mapa západoslovenského kraja. T som pracoval s väčším počtom zdrojov. Uvediem niektoré. Prvý zdroj. Cestné mapy krajov, M 1:50. Tie som prekraslil v AutoCADe obrysovo s detailom na hlavné cesty, trate, autobusové a vlakové zastávky, budovy v rozsahu obrys. Výsledkom bolo A4 delenie celého územia na spôsob automapy. A4 a jej násobky hlavne ohľadne tlače. Ďalší zdroj bol web sčítania obyvateľstva. Koľko je v obci obyvateľov a ich rozdelenie na počty podľa pohlavia, veku, národnosti a ďalších skupín. Ďalším významným zdroj boli pôdne, vodné, nerastné a iné mapy, ako priemysel, skládky a pod. Nakoniec zdroj dát od dopravcov jednotlivých liniek. Vzdialenosti a časové vyjadrenia od miesta k miestu, mestu, väčšiemu dopravnému uzlu. Čo malo hodnoty, som spracoval formou kategorizácie alebo času. Všetko som to spoločne previedol pod jednu web stránku. Prioritne to malo slúžiť, ako pomôcka realitnému maklérovi. Stránka sa spúšťala kliknutím buď na mapu a príslušný štvorec, alebo výberom priamo obce. Z danej polohy nehnuteľnosti maklér vedel, kde sú najbližšie nehnuteľnosti jeho, aj konkurencie. Naviac vedel i ďalšie informácie. Kde je najbližšia zastávka. Koľko to trvá do jedného z hlavných dopravných uzlov väčšieho mesta. Kedy sú odchody časovo po celý deň. Ďalej, populácia v obci, počty skupín a majoritné delenie. Typ a kvalita pôdy. Hĺbka spodnej vody a jej kvalita. Či je v okolí skládka, alebo priemysel vo vzťahu k prevládajúcim poveternostným podmienkam. Skrátka dosť dát o danom mieste. A áno, existuje i obec, ktorá má vysoko kvalitnú pôdu, dostatok vody, dobré okolie a zastúpenie obyvateľov, dobrý dojazd do hlavného mesta. Názov neprezradím.

    Cestovné poriadky

    Projekt druhý, cestovné poriadky. Tu som zdroje dát obmedzil na linky smerujúce do, cez a z obce, v ktorej som sa nachádzal. Postačili na to dáta voľne dostupné od dopravcu. Pretvoriť ich na dáta vhodné pre spracovanie v PHP. V tomto prípade, polia. Výsledný vzhľad web stránky bol následne čo najstručnejší. Horná časť, navigácia. Časové delenie dňa, výber smeru linky, alebo len linky samotnej. Telo stránky pozostávalo zo stĺpcov. Z ľava prvý stĺpec, bol od hora dolu, zoznamom zastávok v danom smere tam a po voľbe opačne aj smer späť. Ako pre autobus, tak aj pre vlak. V rámci trojuholníkovej schémy, Trnava Pezinok Bratislava, bolo možné prestupovať a kombinovať dopravu. Následné stĺpce boli linky idúce časovo za sebou. Takže keď sa otvorila stránka, načítal sa čas a len potrebné časovo aktívne linky, alias autobusové a vlakové spoje. Pri jedotlivých zastávkach a linkách sa v priesečníku rozsvietilo políčko. Políčko reprezentovalo, že sa tam nachádza aktuálne vozidlo. Teda v daný čas na danej zastávke. Keďže spoje meškali a v danej minúte nemuselo byť vozidlo podchytené, urobil som časové rozšírenie na desať minút. Tým sa vytvoril taký farebný pásik so slabšou farbou na konci a silnou v aktuálnom čase. Takže vizuálne bolo vidieť, že vozidlo už opustilo zastávku, alebo naopak, blíži sa k najbližšej zastávke. Vtedy som ešte nemal znalosti, že by som to vedel rozpohybovať napr v reacte. Takto som používal refresh atribút na minútu. Celkovo sa na stránke dalo vidieť, koľko vozidiel je na cestách a ako sú ďaleko od miesta, kde sa nachádzam. Neskôr som vytváral z tohoto projektu aj ďalšie výstupy. V každom ohľade to bol projekt, ktorý slúžil. Ak by v tom čase boli zdrojové dáta vo formáte API, mohlo to byť oveľa efektívnejšie. Ale na to už tu existujú rovno dve veľké dopravné stránky. Rozdiel je však v tom, že ja som si mohol zvoliť len konkrétne linky o ktoré mám záujem. Na tých veľkých to ani v tomto momente, nie je možné. To bol vlastne jeden z hlavných dôvodou, prečo som sa do projektu pustil.

    Zákony

    Projekt tretí, zákony. Tu išlo viac menej o klon zákonodárneho webu. S tým, že ma zaujímalo len zopár desiatok zákonov a tie bolo treba sledovať ohľadne zmien. Na originálnom webe je to urobené tak, že sa zmeny odlišovali farebne a doklikávalo sa k predošlým verziám textu a zmien. Ja som to urobil tak, že som moju stránku poprepájal na konkrétne zákony a ich dielčie zmeny. V tom čase som ešte neprešiel cez web scraping. Takže som na domácom webe klikol na konkrétny zákon a videl som, či sa zmenil. Ak áno, prevzal som novú verziu. Pričom na domácom webe som videl históriu a čo sa kedy menilo. To bol vlastne výstup pre ďalšie použitie. Na prvý pohľad veľmi jednoduché riešenie. V skutočnosti to týmto spôsobom ušetrilo veľa času a rýchlo a efektívne sa získal hlavne dátum poslednej aktualizácie zákona.

Tak to boli aspoň tri väčšie projekty. Líšiace sa od takej klasickej statickej rutinnej databázy. Vytvoril som desiatky databáz, ktoré sa naplnili a dopĺňali, ale vo výsledku iba prezerali, čo je v nich. Preto som vybral a uviedol práve tie tri, kde sa dáta neustále prepisovali, aktualizovali.