Autor Téma: Debbug - GTT voči RunTime persistent table  (Přečteno 2945 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3697
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #15 kdy: 16-06-2018, 20:57:48 »
Jsem za 2 databaze. Ale s fixnimi sadami testovacich dat (jen pro vyvoj a testovani). Urcite bych se nesnazil delat klon produkcni jen proto abych mohl videt mezivysledky vypoctu.

Cile by se dalo s uvedenym objemem dosahnout nejspis i jinak. Nemam ted moc predstavu zda se tu bavime o DBMS procedurach nebo zda je kod v Delphi aplikaci, nicmene v obou pripadech by se dalo jit primo cestou GTT jen si bud pred koncem vypoctu (vyprazdnenim te GTT tabulky) volitelne vratit data jako (sadu) resultset(u) nebo naplnit perzistentni tabulku(y).
Čo sa týka testovania, tak 2 DB budem mať. Potrebujem v budúcnosti ladiť výkon a to sa s ostrými údajmi nedá. Kto by tam nahadzoval do jednej tabuľky niekoľko stotisíc záznamov. Pre zaistenie funkčnosti app. a správnosti výpočtov ich tam je len pár. A pre ladenie výkonu mi úplne postačia náhodné údaje.
Procedúry, view ani nič podobné nepoužívam. Všetko mám v Delphi. Jedine ak ma donúti situácia. Tie GTT by som zvládol, ale z diskusie vyplynulo, že by to bola zbytočná komplikácia.
Podľa mňa GTT majú ešte jednu výhodu. Ich údaje sú uložené len v pamäti a tak nerozbíjajú DB. To sa o trvalých tabuľkách tvrdiť nedá. Ak sa mýlim, tak ma opravte.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3697
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #16 kdy: 16-06-2018, 21:09:43 »
Ja som k tým GTT pristúpil preto, aby som sa vyhol viacnásobnému použitiu subselect-ov. Poniektoré sú zložitejšie. Ja sa stále snažím šetriť systémové prostriedky. Aj keď sa tomu skoro každý čuduje. Ja som už taký skúpy od prírody.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2342
  • Karma: 126
    • Verze Delphi: D2007, XE3, DX10
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #17 kdy: 16-06-2018, 21:22:35 »
Podľa mňa GTT majú ešte jednu výhodu. Ich údaje sú uložené len v pamäti a tak nerozbíjajú DB. To sa o trvalých tabuľkách tvrdiť nedá. Ak sa mýlim, tak ma opravte.
To nevim, jak jsi k tomu dospel. I kdyz FB je u nas pod tlakem zakazniku na ustupu, tak jsem se schvalne podival, co o tom pise Helen Borrie ve FireBird book, kdyz uz ho mam: "...GTT je alokovana ve vlastnich "soukromych" strankach, ktere maji shodny format jako bezne tabulky a ktere se po commitu uvolni...". Takze me z toho plyne:
a) neni pravda, ze jsou jen v pameti
b) jejich alokace muze zpusobovat fragmentaci stranek,
c) pravidelnou udrzbu DB bys mel provadet bud jak bud

Offline Delfin

  • Guru
  • *****
  • Příspěvků: 1407
  • Karma: 58
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #18 kdy: 16-06-2018, 21:24:11 »
Ja som k tým GTT pristúpil preto, aby som sa vyhol viacnásobnému použitiu subselect-ov. Poniektoré sú zložitejšie.

Vyuziti GTT pro takove pripady je v poradku. Jen je treba se smirit s tim ze jejich obsah neni k videni z jinych aplikaci nez kde se s nimi pracuje (jako napr. DB manager). Porad se vsak da z dane aplikace pred jejich vyprazdnenim (zpusobene ukoncenim transakce nebo spojeni) obsah ziskat.
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3697
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #19 kdy: 16-06-2018, 21:52:32 »
S pravidelnou údržbou DB do budúcnosti počítam.
Na základe diskusie dávam prednosť trvalým tabuľkám. Nie je problém ich udržať prázdne. DB som si už upravil. Ešte mám podlžnosti v kóde. Aj zajtra je deň.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3697
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #20 kdy: 19-06-2018, 08:36:15 »
Nemôžem si pomôcť, ale mne to akosi nedá. To riešenie s trvalými tabuľkami považujem za nečisté.
Rozmýšľam nad takýmto riešením:
  • Ja budem mať v DB GTT i persistent tables
  • Pre SQL budem mať dva druhy textov. Rozlišované podľa direktívy {$IFDEF DEBUG}. To je "drobnosť", ktorá podľa mňa stojí za to
  • Vytvorím si nejaký príznak, že to som ja alebo nie. To ešte netuším ako. Do budúcna to musí byť automatické
  • U zákazníka pomocou skriptu urobím zrušenie nepotrebných trvalých tabuliek (Drop Table). Tým pádom sa o DB "nemusím" starať
Pri GTT sa nemusím starať o filtrovanie údajov ani ich aktualizáciu.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2342
  • Karma: 126
    • Verze Delphi: D2007, XE3, DX10
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #21 kdy: 19-06-2018, 09:11:25 »
Nemôžem si pomôcť, ale mne to akosi nedá. To riešenie s trvalými tabuľkami považujem za nečisté.
Rozmýšľam nad takýmto riešením:
  • Ja budem mať v DB GTT i persistent tables
  • Pre SQL budem mať dva druhy textov. Rozlišované podľa direktívy {$IFDEF DEBUG}. To je "drobnosť", ktorá podľa mňa stojí za to
  • Vytvorím si nejaký príznak, že to som ja alebo nie. To ešte netuším ako. Do budúcna to musí byť automatické
  • U zákazníka pomocou skriptu urobím zrušenie nepotrebných trvalých tabuliek (Drop Table). Tým pádom sa o DB "nemusím" starať
Pri GTT sa nemusím starať o filtrovanie údajov ani ich aktualizáciu.
Nevim, co je na tabulkach necisteho: predstav si, ze by zadne GTT neexistovaly.
Ale pak bych se vratil k myslence pro ucely ladeni si udelat "vizualizaci" tech dat v GTT, treba triggerem, ktery je prekopiruje do presistentni tabulky. Pak u produkcni DB dropnes jen ty triggery a tabulky. A before insert triggerem si zjistis, jestli je GTT prazdna a jestli ano, tak smazes data z te kopie.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3697
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #22 kdy: 19-06-2018, 09:24:28 »
Citace
Nevim, co je na tabulkach necisteho
Na samotných tabuľkách nič. Len pri ich použití mám/PC prácu navyše. Pri trvalých tabuľkách automaticky definujem Foreign key. Bez nich si to nedovolím - určil som si také pravidlo. A už vďaka tomu nabieha navyše práca s indexmi + veľkosť DB. Prosím nekomentovať veľkosť DB :)
Citace
Ale pak bych se vratil k myslence pro ucely ladeni si udelat "vizualizaci" tech dat v GTT, treba triggerem, ktery je prekopiruje do presistentni tabulky. Pak u produkcni DB dropnes jen ty triggery a tabulky. A before insert triggerem si zjistis, jestli je GTT prazdna a jestli ano, tak smazes data z te kopie.
To mi akosi nesedí. Nevidím na to dôvod. Pri ladení budem používať len GTT. Možno to je myslené ako ochrana proti zaneseniu chýb do program. V takom prípade by som o tom mal uvažovať.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2342
  • Karma: 126
    • Verze Delphi: D2007, XE3, DX10
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #23 kdy: 19-06-2018, 09:26:57 »
To mi akosi nesedí. Nevidím na to dôvod.
A ja mel za to, ze cely cirkus s GTT vymyslis kvuli ladeni, aby videl na data i po skonceni transakce. Pokud ne, tak bych to uz vubec neresil.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3697
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #24 kdy: 19-06-2018, 09:30:42 »
Citace
A ja mel za to, ze cely cirkus s GTT vymyslis kvuli ladeni, aby videl na data i po skonceni transakce.
Presne tak!!!
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2342
  • Karma: 126
    • Verze Delphi: D2007, XE3, DX10
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #25 kdy: 19-06-2018, 09:34:57 »
Citace
A ja mel za to, ze cely cirkus s GTT vymyslis kvuli ladeni, aby videl na data i po skonceni transakce.
Presne tak!!!
No a tak bych si je z GTT kopiroval triggerem do nejake presistentni tabulky se stejnou strukturou, kde bych se na data mohl divat. A pak bych to odstranil. A kod aplikace by o tom vubec nevedel, jen by to zralo nejaky cas na ty kopie.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3697
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #26 kdy: 19-06-2018, 09:39:25 »
Už mi to došlo ;D , len si ma predbehol v napísaní reakcie. Myslím si, že už je rozhodnuté. Len si premyslieť aplikovanie. Trochu ma mätie ten triggert, ale to si doštudujem. Asi máš na mysli niečo ako "After Insert". Aplikácia o tom bude vedieť. Veď sa musí rozhodnúť, či mazať, alebo nemazať tie údaje.
Ďakujem.
« Poslední změna: 19-06-2018, 09:41:07 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3697
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #27 kdy: 19-06-2018, 09:51:05 »
Mne by sa viac páčilo, keby sa triggert nespustil, keď neexistuje trvalá tabuľka. Presnejšie, spustil by sa, ale po vyhodnotení podmienky aj hneď ukončil. Ja viem, je to pre DB práca navyše = nie je to čisté :D
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2342
  • Karma: 126
    • Verze Delphi: D2007, XE3, DX10
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #28 kdy: 19-06-2018, 10:09:17 »
Mne by sa viac páčilo, keby sa triggert nespustil, keď neexistuje trvalá tabuľka. Presnejšie, spustil by sa, ale po vyhodnotení podmienky aj hneď ukončil. Ja viem, je to pre DB práca navyše = nie je to čisté :D
Proc bys to delal? Kdyz neexistuje trvala tabulka, tak bud neexistuje trigger nebo ja zablokovany a vice versa, kdyz se vytvori trvala tabulka, tak se vytvori i replikacni trigger nebo se enabluje.

Takze pri vyvoji vytvoris trvalou tabulku a replikacni trigger, v produkci je smazes. A pri vyvoji, kdyz nebudes chtit replikovat, tak ten trigger zakazes a on bude existovat, ale nebude se pouzivat.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2342
  • Karma: 126
    • Verze Delphi: D2007, XE3, DX10
Re:Debbug - GTT voči RunTime persistent table
« Odpověď #29 kdy: 19-06-2018, 10:29:09 »
máš na mysli niečo ako "After Insert". Aplikácia o tom bude vedieť. Veď sa musí rozhodnúť, či mazať, alebo nemazať tie údaje.
To muze delat treba i ten trigger nezavisle na aplikaci - ta to oznami commitnutim transakce a vyprazdnenim GTT. Takze kdyz v BeforeInsert triggeru bude GTT prazdna, tak to znamena, ze se spustilo nove zpracovani v nove transakci a muze vyprazdnit nejdriv trvalou tabulku. Totez muze udelat i s AfterInsert, kdy zjisti, jestli prave vlozeny zaznam je jediny v GTT nebo muzes mit triggery dva: before na hlidani noveho zpracovani a after na replikaci dat.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):