Autor Téma: TQuery - SP  (Přečteno 2900 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6137
  • Karma: 44
    • Verze Delphi: W10 + D11
TQuery - SP
« kdy: 17-10-2012, 13:37:10 »
Existujú/máte nejaké všeobecné pravidlá, podľa ktorých sa rozhodnúť, čo ponechať na TQuery a čo na StoredProcedure? Pravidlá v helpe a pod. som čítal, ale mám na mysli niečo také:

Mám realtívne jednoduchý SQL (Select) výraz, ktorý vracia menšiu množinu dát. Vždy sú spúšťané užívateľom. Napr. výberom prvku zo zoznamu/stromu. Príklad mám zoznam objektov, ktoré si načítavam podľa dvoch podmienok

- je aktívny (to si môže užívateľ ľubovoľne meniť - určuje s ktorými chce pracovať)
- má "platnosť" pre daný rok

Tak či tak sa to vykoná na serveri. Ale

SP
- má viac možností, if apod.
- je optimalizovaná pre DB
- zmenšujem veľkosť klienta a zjednodušujem ho
- kto sa v nich vyzná, ak ich bude veľa

SQL
- SQL si v prípade potreby upravím na mieste, vidím ho
- pchať všetko na server mi akosi nevonia. Neviem povedať prečo
- môžem si nadefinovať spoločné časti. Konkrétne tak mám pre uvedený príklad string "Where", včítane parametrov. Je niečo také možné v SP?

Predpokladám, že z tohto pohľadu je jedno, či budem používať serverovú alebo embeded verziu FB.

To je otras, začnem písať a neviem svoje pocity/myšlienky dať na papier. Snáď ma pochopíte. Ďakujem.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3335
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:TQuery - SP
« Odpověď #1 kdy: 17-10-2012, 14:03:13 »
Existujú/máte nejaké všeobecné pravidlá, podľa ktorých sa rozhodnúť, čo ponechať na TQuery a čo na StoredProcedure?
Ja myslim, ze pro tebe pripadaji v uvahu asi 2 prakticka kriteria:
  • zivotni cyklus aplikace: v budoucnu muze vyvstat treba pozadavek na pristup pres internet obecne z nekolika ruznych klientu. Pokud nacpes zejmena business logiku na klienta, tak tvurce noveho klienta bude muset vse implementovat znovu, zatimco pokud to bude na strane serveru, jen pouzije jiz hotove.
  • slozitost SQL: SQL jazyk je dost podivna zalezitost, kdy je nekdy docela zahul sestavit a odladit slozity SQL prikaz a to nemluvim o jeho udrzbe, kdyz se ti neco zmeni a ty musis takovy prikaz preformulovat. V takovem pripade je IMHO vhodne, nez se morit s SQL dotazem, je vhodnejsi pouzit SP, ktera ti umozni programovat proceduralne tj. rozbit vypocet na casti, pouzit pomocne promenne atd.
Pokud nemas nejaky tool s podporou ladeni SP, tak to muze byt docela opruz. Da se udelat logovani do souboru (pres SP) a kdyz se ptaku ohnivaku povoli prava pro ExternalFileAccess, tak se da psat do textoveho souboru.

Jinak treba orientace pomoci IBE Experta bude vyrazne lepsi nez v Delphi kodu, protoze u kazdeho objektu v DB si muzes nechat zobrazit cross reference, tj. kdo ten objekt pouziva a jake jine objekty ten objekt pouziva. Samozrejme to predpoklada, ze pouzijes Descriptions a u triggeru a SP i komentare.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6137
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:TQuery - SP
« Odpověď #2 kdy: 17-10-2012, 14:26:54 »
Zaujal ma hlavne bod 2. IBE Expert-a mám. Takže sme dvaja experti   ;D

// Samozrejme to predpoklada, ze pouzijes Descriptions a u triggeru a SP i komentare.
Tomu nerozumiem, kde si o tom prečítam - kľúčové slová. Mám dva helpy.

- IBE Expert FireBird Guide
- IBE Book 2-2005
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3335
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:TQuery - SP
« Odpověď #3 kdy: 17-10-2012, 14:39:39 »
// Samozrejme to predpoklada, ze pouzijes Descriptions a u triggeru a SP i komentare.
Tomu nerozumiem, kde si o tom prečítam - kľúčové slová. Mám dva helpy.
Na to by ti mel stacit letmy pohled do GUI klientaIBE. Vse co definujes , pocinaje domainama a konce SP ma pole Description a kdyz ho zadavas, tak dole byva memo, kde je vhodne si popsat, co a k cemu je to dobry. Vedle toho triggery a SP predstavuji nejaky kod, takze je vhodne pouzit standardni SQL komentare /* .... */ a radkovy --.

Jinak cross reference objektu jsou na tabu Dependecies nahore, u jendotlivych poli v tabulce na tabu dole vedle Description. Ale plati to pro prof. edici IBE. Jak vypada standard nebo free nevim.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6137
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:TQuery - SP
« Odpověď #4 kdy: 17-10-2012, 14:51:09 »
Desktop Edition to má.
Na tie komentáre si budem musieť zvyknúť. Ak sa to rozbehne, tak tam toho bude dosť.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.