V rámci systému D2000 je od verzie V10.0.38 možné na databázovom systéme PostgreSQL prevádzkovať tieto databázy:

  • konfiguračná
  • logovacia
  • archívna
  • trezorová
  • aplikačná

Logovacie trezorové databázy nie sú pre PostgreSQL podporované. Vytváranie nových databáz, okrem aplikačných (tým je venovaná samostatná sekcia Aplikačné databázy v Systéme D2000), je v réžii nástroja D2MC, ktorý ich vytvára pri vytváraní aplikácie alebo archívu. Tento nástroj taktiež dokáže vytvárať a spravovať databázové servisy.

Zo základného užívateľského pohľadu je vytváranie a manipulácia s databázami na databázovom systéme PostgreSQL skryté a jedinou požiadavkou je mať tento systém nainštalovaný. V určitých prípadoch (vytváranie aplikácie alebo archívu) je potrebné zadať heslo hlavného používateľa.

Pri každom vytváraní aplikácie s názvom Aplikacia nad databázovým systémom PostgreSQL je užívateľ povinný vybrať existujúci databázový servis, ktorý zaistí beh databázy, a heslo k jeho hlavnému užívateľovi s menom postgres. Následne nástroj D2MC zaistí vytvorenie databáz v tomto databázovom servise s názvom aplikacia_syscfg a aplikacia_logfile a umiestni ich do samostatných tabuľkových priestorov (ts_aplikacia_syscfg, ts_aplikacia_logfile) v aplikačnom adresári systému D2000 v podadresároch syscfg a logfile. Taktiež vytvorí DSN záznamy pre tieto dve databázy s názvom Aplikacia.SysCfg a Aplikacia.LogFile. Pre prístup k obom databázam je vytvorený užívateľ s menom dba, ktorý je nastavený ako ich vlastník.

Pri každom vytváraní archívu pre aplikáciu Aplikacia nad databázovým systémom PostgreSQL je užívateľ povinný vybrať existujúci databázový servis, ktorý zaistí beh databázy a heslo k jeho hlavnému užívateľovi s menom postgres. Následne nástroj D2MC zaistí vytvorenie databázy v tomto databázovom servise s názvom aplikacia_archiv a umiestni ju do samostatných tabuľkových priestorov (ts_aplikacia_archiv v aplikačnom adresári Systému D2000 v podadresári archiv. Taktiež vytvorí DSN záznam pre túto databázu s názvom Aplikacia.Archiv. Pre prístup k nej je vytvorený užívateľ s menom dba, ktorý je nastavený ako jej vlastník.

Každý trezor, resp. trezorový segment je implementovaný ako samostatná databáza. Názvy sú odvodené od názvu aplikácie (<aplikacia>_TS_#ID#, kde #ID# je číslo trezoru, prípadne <aplikacia>_TS_#ID#_#SEG#, kde #SEG# je číslo trezorového segmentu).


Zálohovanie databáz systému D2000

Keďže zálohovanie databáz systému PostgreSQL môže byť vykonané rôznymi spôsobmi, systém D2000 neobsahuje žiadny nástroj ani funkcionalitu, ktorá by zabezpečovala zálohu takýchto databáz. Zálohu databáz je preto potrebné robiť manuálne podľa jedného zo spôsobov popisovaných v tomto návode: http://www.postgresql.org/docs/9.4/static/backup.html.

Zoznam databáz, ktoré je nutné takýmto spôsobom zálohovať, je možné odvodiť od mena aplikácie nasledovne:

  • <meno aplikacie>_syscfg
  • <meno aplikacie>_logfile
  • <meno aplikacie>_archiv
  • <meno aplikacie>_TS_<ID>

Aplikačné databázy v systéme D2000


V prípade, že je potrebné, aby systém D2000 pracoval s externou aplikačnou databázou, je pre jej integráciu nutné vytvoriť systémový DSN záznam v ODBC administrátorovi na počítači, na ktorom beží proces D2000 DBManager.

Vytvorenie PostgreSQL DSN záznamu

Upozornenie: V 64-bitovom operačnom systéme Windows existuje 32 aj 64 bitový ODBC Administrator. DSN záznam treba vytvoriť, v 32/64-bitovom ODBC Administratore podľa verzie procesu D2000 DBManager (keďže 32-bitové aplikácie nemôžu používať 64-bitové DSN a naopak).

V prípade výberu viacerých druhov DSN záznamov je potrebné vybrať ten, ktorý obsahuje v názve slovo Unicode.

Konfiguráciu DSN záznamu pre PostgreSQL je nutné vykonať nasledovne:

  1. V hlavnom okne je nutné správne vypísať nasledovné riadky:
    Vytvorenie PostgreSQL DSN záznamu - parametre
    Database – meno existujúcej databázy.
    Server – adresa servera, na ktorom beží PostgreSQL servis (localhost v prípade toho istého počítača),
    Port – číslo portu, na ktorom počúva PostgreSQL servis

    Vyplnením mena a hesla a stlačením tlačidla Test by malo dôjsť k úspešnému pripojeniu k databáze. V prípade, že sa pripojenie zlyhalo je potrebné skontrolovať zadané údaje ako aj nastavenie PostgreSQL servisu, na ktorom beží databáza (viď sekcia: Pripojenie k PostgreSQL databáze bežiacej na dedikovanom stroji). Pozor, vo finálnom stave nenechávajte z bezpečnostných dôvodov položky meno a heslo vyplnené!

    Vyplnením týchto údajov nastavovanie neskončilo a pre správne fungovanie so systémom D2000 je potrebné pozmeniť ďalšie prednastavené parametre.
     
  2. V záložke Datasource/Page1 je potrebné dodržať nasledovné nastavenia:
    Vytvorenie PostgreSQL DSN záznamu - nastavenie
    Položku CacheSize je možné nastaviť podľa uváženia.
  • V záložke Datasource/Page2 je potrebné dodržať nasledovné nastavenia:
    Vytvorenie PostgreSQL DSN záznamu - nastavenie
    Zvýraznené položky je potrebné nastaviť nasledovne:
    Updateable Cursors – možnosť použiť kurzory na zápis
    bytea as LO - zápis Large Objects (blobov) do stĺpcov typu bytea 
    Server side prepare - skompilované kurzory (napr. pre parametrizované dotazy) na strane servera zlepšujú výkon. Ak je možné, odporúčame túto voľbu zaškrtnúť
    Level of rollback on errors - ak sa používajú transakčné operácie a môže dôjsť k chybe pri vykonávavní príkazu (napr. INSERT zlyhá kvôli obmedzeniu na unikátny index), tak pokiaľ je nastavený parameter na Statement, zruší sa iba posledný príkaz. Ak na Transaction, zruší sa celá transakcia. Na druhej strane, nastavenie Statement robí "mikrocommity" (savepointy) po každej operácii, čo jednak znižuje výkon a jednak spotrebúva transakčné ID, čo zase vedie k zvýšenej aktivite vacuuming-u v databáze PostgreSQL.

Takto nastavený DSN záznam je možné použiť v systéme D2000 na pripojenie k externej PostgreSQL databáze.

Pripojenie k PostgreSQL databáze bežiacej na dedikovanom stroji


V prípade, že je nutné sa pripájať na vzdialený server, je potrebné na strane klienta nakonfigurovať DSN záznam v ODBC administrátorovi, podľa predchádzajúceho návodu s jediným rozdielom v tom, že v nastavení Server treba uviesť meno alebo IP adresu servera, na ktorom beží PostgreSQL databáza.

Na dedikovanom stroji, na ktorom beží databáza, ku ktorej sa chceme pripájať, musia byť správne nastavené práva na pripájanie. Prednastavené nastavenia databázového systému PostgreSQL umožňujú pripojenie k bežiacemu databázovému servisu iba z počítača, na ktorom je spustený. V prípade potreby pripojenia sa zo siete je potrebné toto nastavenie zmeniť. Na tento účel slúži konfiguračný súbor pg_hba.conf, ktorý sa nachádza v nastavenom adresári databázového servisu.

V prednastavenom stave obsahuje nasledovné nastavenie:

Príklad nastavenia

Toto nastavenie zaručuje, že sa k databázovému serveru môže pripojiť iba užívateľ z toho istého počítača (127.0.0.1 predstavuje localhost).

V prípade potreby pripojenia z ktoréhokoľvek počítača, musí byť do konfiguračného súboru pridaný nasledovný riadok:

Príklad nastavenia

Tento riadok umožní pripojenie všetkých používateľov na všetky databázy bežiaceho servisu zo všetkých adries. Na pripojenie je však potrebné overenie heslom (metóda md5).

Vyššie uvedené nastavenie je uvedené ako ilustračný príklad a neodporúča sa používať na produkčných systémoch, keďže môže znamenať bezpečnostné riziko pri používaní slabých hesiel. Konfiguračný súbor pg_hba.conf umožňuje obmedziť prideľovanie práv k pripojeniu k databáze (na základe užívateľa alebo databázy), ktoré je možné zistiť napríklad tu: http://www.postgresql.org/docs/9.4/static/auth-pg-hba-conf.html.

Každá zmena tohto konfiguračného súboru vyžaduje opätovné načítanie konfigurácie (Opätovné načítanie konfigurácie databázového servisu), alebo reštartovanie databázového servisu.

Špecifiká databázového systému PostgreSQL


Používanie úvodzoviek v názvoch tabuliek a stĺpcov

Identifikátory tabuliek a stĺpcov v databázovom systéme PostgreSQL nezapísané v úvodzovkách nerozlišujú malé a veľké písmená. Je teda možné vytvoriť stĺpec nasledujúcim spôsobom:

create table t (id integer)

Následne je možné vytvoriť tieto dotazy:

select id from t

select Id from t

select ID from t

select "id" from t

Pričom všetky spôsoby dotazovania sa na daný stĺpec sú funkčné.

Identifikátory tabuliek a stĺpcov je možné zapísať aj v úvodzovkách. V takom prípade, však daný identifikátor musí byť používaný v rámci dotazov s takou istou velkosťou jednotlivých znakov ako bol vytvorený a pri každom použití musí byť v úvodzovkách.

Teda pri vytvorení nasledovného stĺpca:

create table t ("Id" integer)

je možné sa na neho odkazovať iba v takom istom tvare, teda:

select "Id" from t

Žiadny iný variant tohto zápisu nebude funkčný.

Vzhľadom na komplikácie, ktoré so sebou úvodzovkovanie identifikátorov prináša, sa tento spôsob zápisu neodporúča používať. V niektorých prípadoch je ale takýto prístup nutný, napríklad, ak názov stĺpca je zhodný s niektorým kľúčovým slovom databázového systému PostgreSQL.

V prípade použitia aplikačnej databázy v Systéme D2000 sa neodporúča používať úvodzovkovanie identifikátorov. Systém D2000 podporuje obe varianty zápisov, ale pri úvodzovkovaní identifikátorov je nutné toto úvodzovkovanie dodržať pri výberových a triediacich podmienkach. Toto sa môže týkať ako použitia databázových operácií v ESL skriptoch (v ktorých sa používajú WHERE podmienky), tak aj zobrazovania databázovej tabuľky v prostredí HI (ak sa zadáva výberová alebo triediaca podmienka).

Napíšte komentár