Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pitanje za Firebird strucnjake

[es] :: Firebird/Interbase :: Pitanje za Firebird strucnjake

[ Pregleda: 3168 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

galisnik
NS

Član broj: 18494
Poruke: 81
*.teol.net.



Profil

icon Pitanje za Firebird strucnjake09.02.2005. u 18:28 - pre 232 meseci
Riste, tipujem na tebe!

Konvertujem accessovu bazu u firebird bazu, prilicno jednostavno sam prebacio tabele i podatke pomocu aplikacije SQL2GBK (ili tako nekako) no kada sam dosao do prebacivanja upita pojavili su se vrlo nezgodni problemi.
Znam da firebird ne podrzava izvedene tabele (podupite u FROM klauzuli), to rjesavam sa dva Viewa, ali sa JOIN-ovima i NULL vrijednostima nikako da izadjem na kraj. Npr. upit koji se u Accessu izvrsi za 5-6 sekundi (koristi drugi upit koji se sastoji od tri selecta povezana sa UNION ALL i sadrzi LEFT JOIN-ove) kad to prebacim u firebird i pokrenem (a podaci su potpuno identicni) on jadan radi i do 10-ak minuta, a u najvecoj tabeli jedva da ima 15000 slogova. Tu dolazimo do drugog nezgodnog ogranicenja sadasnje verzije firebirda - neshvatljivo mala max velicina indeksa (252 bajta koliko sam vidio na jednom sajtu), tako da ne mogu dodati jos jedan slozeni indeks koji treba da indeksira dva polja zajedno, a oni se koriste kao PuniNaziv (Naziv+Oznaka).
To me je jako rastuzilo, jer to je strasno sporo.
Ima li neko neku ideju koja bi mi pomogla, ili cu morati traziti drugu bazu?
Cujem da PostgrSQL ima ocajnu podrsku za nasa slova, a i nije bas pogodan za manje sisteme, MySQL jos nije napravio Trigere i uskladistene procedure (jos nisu izdali production release), a nema ni besplatnog online backup alata, cini mi se da je MSDE tu najblizi, ali mi se ne svidja ono degradiranje performansi kad se koristi vise od 5 konkurentnih konekcija.
Sta kazu, kad ce prva test verzija Firebird 2.0 da izadje? Cuo sam da ce donijeti dosta optimizacija, derivirane tabele i nadam se, povecati max velicinu indeksa.
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
Skopje, Macedonia

Član broj: 128
Poruke: 571
217.16.84.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Pitanje za Firebird strucnjake09.02.2005. u 22:47 - pre 232 meseci
Firebird ce _oficijalno_ podrzavati izvedene tabele u verziji 2.0. Neoficijalno FB podrzava ovakve konstrukte jos odavno ali se to zovu select procedure. Zelim reci da ti mozes konstruirati Stored Proc koju nadajle mozes koristiti kao tabelu. Primer:

Code:

create table test_tbl (test_fld varchar(20));

SET TERM !! ;
create procedure selectable_proc returns(test varchar(20))
as
begin
for select test_fld from test_tbl into :test do suspend;
end!!
SET TERM ; !!


i onda samo .... select * from selectable_proc;

Sto se tice sporog execution plana, daj strukturu tabele i select-e koje koristis, siguran sam da ima boljeg resenja. Ako ti je broj kolona ili velicina podatka koje trebas index-irati prevelika no sto FB/IB podrzava onda valjda trebas ponovo razmotriti dizajn baze.


People who think they know everything tend to irritate those of us who do.
 
Odgovor na temu

galisnik
NS

Član broj: 18494
Poruke: 81
*.teol.net.



Profil

icon Re: Pitanje za Firebird strucnjake10.02.2005. u 19:35 - pre 232 meseci
To sa uskladistenim procedurama je ok ali ne vidim kako moze pomoci kao podupit, npr. neki bezveze upit:

SELECT T.col1, T.Col2
FROM
(SELECT col1, AVG(col2) FROM tabela GROUP BY col1 HAVING col2>0) AS T1 WHERE t.col1=5;

Znaci ovaj drugi select (podupit, izvedenu tabelu) trebam realizovati ili kao VIEW ili kao uskladistenu proceduru, zar ne? No to i nije problem. Bio sam slobodan pa sam ti na mail poslao shemu tabela i view-a koji su mi sporni.

I reci mi po tvom misljenju sta je bolje: CREATE VIEW ili CREATE PROCEDURE za realizaciju druge tabele? Jer ocito je da dva SELECT-a ne mozemo izbjeci.
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
Skopje, Macedonia

Član broj: 128
Poruke: 571
217.16.77.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Pitanje za Firebird strucnjake14.02.2005. u 09:18 - pre 232 meseci
Dizajn tvoje baze nije uopste naivan zadatak. To ipak treba fino razmotriti i nazalost ti niko ne moze puno pomoci putem maila i sa pregledanjem nabrzaka nekoliko upita i stored procedura.

Uradi ER dijagram tvoje baze i izpocetka pogledaj dali mozda postoji bolje resenje.

A o tome sto je bolje ... dali PROC ili VIEW, to je ipak sasvim razlicita namena ove dve strukture. U proceduru mozes implementirati vise automatizovanje, ali ne mozes u njoj insertovati ili updateovati podatke. Kad radis sa VIEW-om, onda mozes da insert/update. Tako da ... sto tebi vise odgovara .. ne znam :) ali je se radi o read-only podataka sa puno kalkulacija ... onda stored proc.
People who think they know everything tend to irritate those of us who do.
 
Odgovor na temu

galisnik
NS

Član broj: 18494
Poruke: 81
*.teol.net.



Profil

icon Re: Pitanje za Firebird strucnjake14.02.2005. u 21:53 - pre 232 meseci
Citat:
U proceduru mozes implementirati vise automatizovanje, ali ne mozes u njoj insertovati ili updateovati podatke.


Zelim da vjerujem da nisam dobro razumio ovu recenicu, Riste. Jer, nije mi jasno iz kojeg razloga uskladistene procedure ne mogu da se koriste za insert i update podataka. Problemi sa performansama ili?
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
Skopje, Macedonia

Član broj: 128
Poruke: 571
217.16.77.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Pitanje za Firebird strucnjake15.02.2005. u 09:49 - pre 232 meseci
Ma ne ... nisi me razumeo .... mislio sam na:
Code:

create table test_tbl (test_fld varchar(20));

SET TERM !! ;
create procedure selectable_proc returns(test varchar(20))
as
begin
for select test_fld from test_tbl into :test do suspend;
end!!
SET TERM ; !!


E sada ne mozes: INSERT INTO selectable_proc (test) VALUES("bla")

A ako koristis view umesto stored proc, to mozes uraditi :)
People who think they know everything tend to irritate those of us who do.
 
Odgovor na temu

[es] :: Firebird/Interbase :: Pitanje za Firebird strucnjake

[ Pregleda: 3168 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.