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

Uporedjivanje Firebird-a i Paradox-a(BDE)

[es] :: Firebird/Interbase :: Uporedjivanje Firebird-a i Paradox-a(BDE)

Strane: 1 2

[ Pregleda: 7677 | Odgovora: 30 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Uporedjivanje Firebird-a i Paradox-a(BDE)26.10.2007. u 11:45 - pre 200 meseci
Uporedjivanje se sastoji u sledecem,
svoj stariji program radjen u Paradox-u bez SQL-a sam prepravio za Firebird i rezultati programa su porazavajuci sto se tice brzine.
Program se sastoji iz sledecih aktivnosti, treba da uporedi podatke iz 2 tabele koje imaju 6000 linija,znaci da nadje iste podatke,razlicite i pocenu su razlicite i kojih nema u jednoj a ima u drugoj i obrnuto.
Paradoks to bez SQL-a uporedjujuci liniju po liniju zavrsi za 20 secundi
Firebird sa SQL-om zavrsi za 2 minuta i resenja su ista.Na upit pronalazenja podataka kojih ima u jednoj a nema u drugoj i obrnuto jako puno vremena treba bar 1.5 min.
Pricao sam sa drugarom koji malo ozbiljnije programira i kaze da je verovatno problem kod algoritama u Firebird-u koji su spori jer i on kada je presao na SQL server 2002 dobio ubrzanje do 10x nego kada je korisio neku drugu bazu koja podrzava SQL ali bila je spora.

Kakva su vasa iskustva i misljenja ???
 
Odgovor na temu

schild
Dejan Šild
TopCode Software
Subotica

Član broj: 59888
Poruke: 138
*.legendww.com.

Sajt: www.topcode.rs


+2 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)26.10.2007. u 12:26 - pre 200 meseci
Rezultati su loši verovatno zbog BDE-a. Moraš dati konkretan primer ako hoćeš neki koristan odgovor, ovako ćemo se samo upustiti u prazan divan.
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl-3.sezampro.yu.



+4 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)26.10.2007. u 12:36 - pre 200 meseci
Ako je SQL server 2002 ubrzao stvari 10x pod hitno pređi na SQL server..
ali pre toga pokušaj sa IBX ili .NET konektorom za FB,BDE je za penziju.
Ag + Na -> Xe
 
Odgovor na temu

dogriz
Sombor

Član broj: 29744
Poruke: 259
89.216.227.*

Sajt: dogriz.blogspot.com


+6 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)26.10.2007. u 12:58 - pre 200 meseci
Prvo, nisam baš siguran u to što taj drug kaže...
Drugo, nekada davno sam koristio Paradox, pa Interbase i već dugo Firebird. Ne znam kakvi su upiti i struktura same baze kad Firebird radi sporije od Paradoxa, nešto tu nije dobro isprojektovano.
Moje iskustvo vezano za Firebird je apsolutno pozitivno, izuzetno dobro mi odrađuje sav posao. U pitanju su dosta velike baze - 500 MB do preko GB, sa tabelama koje sadrže i preko 1.500.000 zapisa.

Jedina mana po meni je nedostatak enkripcije baze, već moraju da se koriste externa rešenja (pošto nemaju svi adekvatan server "pod ključem").
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)26.10.2007. u 16:41 - pre 200 meseci
Dejan Schild nemam konkretan primer,taj koji imam naveo sam, vec sam samo hteo da cujem vasa misljenja i iskustva ako ste koristili vise servera,baza... koje su razlike,brzine... nista ironicno ni napadacki.
Posto sam pocetnik ne kazem da nisam nesto dobro isprojektovao sto kaze dogriz, da nema boljeg resenja koji ce se pokazati u brzini jer i sa ovim dobijem sta treba ali sporije.

Znaci tema je pokrenuta radi price,saveta i vaseg iskistva.
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)26.10.2007. u 19:50 - pre 200 meseci
> Paradoks to bez SQL-a uporedjujuci liniju po liniju zavrsi za 20 secundi
> Firebird sa SQL-om zavrsi za 2 minuta i resenja su ista.Na upit pronalazenja podataka kojih ima u jednoj a nema u drugoj i obrnuto jako
> puno vremena treba bar 1.5 min.

Ključ je kako ti radiš upoređivanje. Ako obe tabele učitaš u Table kompoenente ideš kroz jednu a u drugoj lociraš slog pomoću Locate, nije iznenađujuće. Koliko se sećam TTable.Locate koristi indekse kod Paradox baza dok kod FB to ne može. Drugo je pitanje da li koristiš direktni pristup FB bazi ili TCP/IP.
Rad sa RDBMS preko Table komponenti je traćenje resursa, lepo napisani SQL upiti su neuporedivo brži.

> Pricao sam sa drugarom koji malo ozbiljnije programira i kaze da je verovatno problem kod algoritama u Firebird-u koji su spori jer

Netačno.

> i on kada je presao na SQL server 2002 dobio ubrzanje do 10x nego kada je korisio neku drugu bazu koja podrzava SQL ali bila je spora.

Može da bude tačno ako je ta struktura druge baze loše projektovana i koriste se loši upiti. Nije teško napisati primer koji će raditi u FB 10 puta brže nego u MS SQLu. Svi RDBMS mogu pružiti slične performanse ako se upiti lepo napiši i očajne performanse ako se loše napišu.

Dakle, gotovo sigurno je je greška u tvom kodu, ako budeš dao više detalja o načinu rada, verovatno ćemo moći da ti pomognemo.
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)26.10.2007. u 21:21 - pre 200 meseci
da u Paradoxu sam obe tabele učitao u Table kompoenente i idem kroz jednu a u drugoj lociram slog pomoću Locate i to radi brzo,sve završi za 20-30 sekundi

FB-u pristupan direktno,pronalaženja istih i različitih podataka ide ok ali problem nastaje pronalaženjem podataka kojih nema u 1 a ima u 2 za to sam koristio upit
SELECT * FROM promene WHERE Ime not in (SELECT Ime FROM ulaz)
za ovaj upit treba oko 1.5 min,u obe tabele ima 6000 zapisa


sada sam prepravio program da funcionise kao kod paradox-a,obe tabele učitao u Table kompoenente i idem kroz jednu a u drugoj lociram slog pomoću Locate i oped traje oko 2min. Verovatno sto FB ne koristi indeke kao Paradox.

i ovaj upit traje oko 2.5min
select * from ulaz where ime in (SELECT ime FROM ulaz GROUP BY ime HAVING ( COUNT(ime) > 1 ))order by ime
izlistava sva imena redom koja se ponavljaju
posebno upit (SELECT ime FROM ulaz GROUP BY ime HAVING ( COUNT(ime) > 1 ) odradi za 2 sec ali kada ubacim ceo upit postaje vecnost

ima li neko resenje da traje krace jer 2.5 min je stvarno puno,vec mislim da je blokirao samo za taj upit,gde su jos ostali kao taj od gore ... ???



[Ovu poruku je menjao Brkic dana 27.10.2007. u 09:53 GMT+1]
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)27.10.2007. u 13:27 - pre 200 meseci
> SELECT * FROM promene WHERE Ime not in (SELECT Ime FROM ulaz)
> za ovaj upit treba oko 1.5 min,u obe tabele ima 6000 zapisa

Da li je IME indeksirano? I koji je njegov tip CHAR/VARCHAR ili INTEGER?
NOT IN je loša konstrukcija bolje je koristiti:
SELECT FROM * A WHERE NOT EXISTS (SELECT 1 FROM B WHERE B.ID = A.ID)

> slog pomoću Locate i oped traje oko 2min. Verovatno sto FB ne koristi indeke kao Paradox.

FB naravno ima indekse ali Table komponenta ih ne može koristiti kao što je to slučaj sa Paradox Table.

> select * from ulaz where ime in (SELECT ime FROM ulaz GROUP BY ime HAVING ( COUNT(ime) > 1 ))order by ime
> izlistava sva imena redom koja se ponavljaju

Hoćeš da dobiješ sve slogove iz jedne tabele gde se jedno polje pojavljuje više puta?
Code:

SELECT
  P1.*
FROM
  PARTNERI P1
WHERE
  NOT SINGULAR(
    SELECT
      1
    FROM
      PARTNERI P2
    WHERE
      P2.GRAD_ID = P1.GRAD_ID)

 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)27.10.2007. u 14:00 - pre 200 meseci
> Da li je IME indeksirano? I koji je njegov tip CHAR/VARCHAR ili INTEGER?

ime je tipa char. Ali sta znaci indeksirano?To me vec neko pitao ali ne znam sta je to ??
PRIMARY KEY je ID.

za sve iste slogove iz jedne tabele @chachka je dao slicno resenje skoro isto koje se izvrsava za 45sec u odnosu na stari upit kojem treba 3min
SELECT u1.* FROM ulaz u1 WHERE EXISTS (SELECT u2.ime FROM ulaz u2 WHERE u2.ime = u1.ime GROUP BY u2.ime HAVING COUNT(u2.ime) > 1) ORDER BY u1.ime
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)27.10.2007. u 14:29 - pre 200 meseci
> ime je tipa char. Ali sta znaci indeksirano?To me vec neko pitao ali ne znam sta je to ??

Imaš jednu knjigu i hoćeš da pronađeš neki pojam u njoj, jedan način je da ideš od prve strane pa do poslednje dok ne nađeš ili da okreneš Indeks i pogledaš gde se taj pojam nalazi. E to je indeks. DDL komanda je CREATE INDEX NAZIV on TABLE (LISTA_POLJA). Ako koristiš neki GUI alat onda se to tamo može završiti i sa klikanjem miša.
Ne znam strukturu tvoje baze ali ovako na prvi pogled deluje da tabele nisu normalizovane. Spajanje više tabela treba uglavnom raditi preko INTEGERA, ne sa CHAR.

> za sve iste slogove iz jedne tabele @chachka je dao slicno resenje skoro isto koje se izvrsava za 45sec u odnosu na stari upit
> kojem treba 3min SELECT u1.* FROM ulaz u1 WHERE EXISTS (SELECT u2.ime FROM ulaz u2 WHERE u2.ime = u1.ime GROUP BY u2.ime
> HAVING COUNT(u2.ime) > 1) ORDER BY u1.ime

Bolje je (treba da bude i brže) sa NOT SINGULAR.
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)27.10.2007. u 14:49 - pre 200 meseci
@savkic hvala na objasnjenju za index-e,pogledacu kako se pravi i radi.

probao sam selekciju sa EXISTS i NOT SINGULAR i brzina je podjednaka,oko 40-45sec

probao sam i
SELECT * FROM akcie WHERE Ime not in (SELECT Ime FROM ulaz) i
SELECT * FROM akcie WHERE NOT EXISTS (SELECT ime FROM ulaz WHERE ulaz.ime = akcie.ime)
rezultati su isti oko 25sec
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)27.10.2007. u 16:36 - pre 200 meseci
Nasao sam sta su indexi,kreirao sam index 'ime' posle kreiranja tabele i nikakve promene u brzini nema,svi se pomenuti upiti izvrsavaju za isto vreme kao i bez indexa a trebalo bi biti brze,bar tako pise da za to sluze index-i.

Procitao sam da se indexi trebaju preindexirati,da li to znaci da kada se tabela cela izbrise treba je preindexirati ili se to radi automacki...ili posle svakog veceg upisa u tabelu (par hiljada zapisa) treba je preideksirati ???

[Ovu poruku je menjao Brkic dana 27.10.2007. u 18:06 GMT+1]
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl-1.sezampro.yu.



+4 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)27.10.2007. u 21:39 - pre 200 meseci
Ako je samo do upoređivanja IBExpert ima opcije za to u meniju: Tools.Table Data Comparer i Database
Comparer,alisam zaboravio da li ih Personal izdanje ima.

Inače indexi mogu da budu kreirani,ali ne i aktivni.Takođe bolje je kad su UNIQUE (index odgovara
tačno jednom zapisu u tabeli).

Takođe sam video da postoji neki slabo dokumentovani "sirovi identifikator" redova u tabeli nazvan
rdb$db_key (nedokumentovana kolona nalik na primarni ključ,samo još brži u nalaženju recorda u tabeli,
kao ROWID u Oracle),ako su indexi neaktivni ovo je jedini način za identifikaciju zapisa u tabeli.
Znači možeš probati nešto u stilu:

Code:

SELECT * FROM akcie WHERE NOT EXISTS (SELECT ime FROM ulaz WHERE ulaz.ime = akcie.ime and
ulaz.rdb$db_key = akcie.rdb$db_key)

ili tako nešto.Možda je neko radio sa ovom rdb$ stvari pa može bolje to da napiše.
Ag + Na -> Xe
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)27.10.2007. u 22:58 - pre 200 meseci
kako inda da se aktiviraju index-i

moze li neko napisati malo vise o indexima,kako i kada ih praviti,aktivirati...preba li ih reindexirati pri brisanju tabele ili pri vecem upisu ...
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl-1.sezampro.yu.



+4 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)27.10.2007. u 23:24 - pre 200 meseci
Pravljenje indexa nad kolonom ti je objasnio savkic.
Aktiviranje indexa: ALTER INDEX idx_tabela ACTIVE;
Deaktiviranje indexa: ALTER INDEX idx_tabela INACTIVE;

Mislim da je ipak stvar u tim BDE komponentama koje koristis,probaj
da napravis to sa IBX ili IBO.

Kada se prave: pri pravljenju tabele PK je obicno indexiran,pri pravljenju
relacije FK je obicno indexiran,ostale kolone se indexiraju po po potrebi
(nepotrebno indexiranje usporava sistem).
Ne postoji "reindexiranje pri brisanju tabele", jer se pri tome i oni uklanjaju,
veci upis nema veze,ako se upis vrsi u kolonu koja je oznacena kao indexirana
i te nove vrednosti ce biti takve.

Ag + Na -> Xe
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)28.10.2007. u 01:14 - pre 200 meseci
> ili tako nešto.Možda je neko radio sa ovom rdb$ stvari pa može bolje to da napiše.

RDB$DBKEY je fizički pointer na slog u bazi. Pravu snagu iskazuje u PSQL (stored procedurama), dobici u brzini mogu biti fantastični. Sledeći linkovi su osnova.

http://www.cvalde.net/document/mysteriousDbKey.htm
http://www.cvalde.net/document/practical_use_of_the_rdb.htm

 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)28.10.2007. u 01:27 - pre 200 meseci
> veci upis nema veze,ako se upis vrsi u kolonu koja je oznacena kao indexirana i te nove vrednosti ce biti takve.

Uz svaki indeks se čuva i statistika tj. jedinstvenost indeksa, izračunava se posle pravljenja/aktiviranja indeksa ili na izričit zahtev. Statistika se kasnije koristi u optimizeru prilikom izbora najboljeg plana. Statistike indeksa se ne updejtuju zajeno sa slogovima, zato je moguće da postanu neaužurne. Ako se rade masovne promene u tabeli (dodavanje, brisanje, izmene), najbolje (najbrže) je deaktivirati indekse i na kraju ih ponovo aktivirati, druga varijanta je da se izvrši SET STATISTICS komanda koja će updejtovati statistiku za dati indeks. Dobra je praksa ubaciti i SET STATISTICS kao deo redovnog održavanja baze.
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl-1.sezampro.yu.



+4 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)28.10.2007. u 13:14 - pre 200 meseci
Da odemo malo OT,kada pomenusmo Oracle-ov ROWID (koji ima istu ulogu kao ovaj
rdb$db_key),Oracle je od verzije 8.0 omogućio upotrebu ovih pointera
kao sredstva za formiranje relacija izmedju objekata,uvodeći objektno-relacioni
model i nasleđjivanje objekata od verzije 8.2 (gde spada u korisnički definisane
tipove podataka):

Citat:

The ability to store row IDs inside a relational table extends the traditional relational model and enhances the
capacity of an object/relational database to establish relationships between tables. Pointer data types allow you to:

* Reference sets of related rows in other tables.
It is possible to violate first normal form and have a cell in a table that contains a pointer to repeating
table values. For example, an employee table could contain a pointer called job_history_set, which in turn contains
pointers to all the relevant rows in a job_history table. This would also allow for aggregate objects to be prebuilt
so that all the specific rows in the aggregate table could be predefined.
* Include pointers to nondatabase objects in a flat file.
For example, a table cell could contain a pointer to a flat file that contains an object such as a picture in
GIF or JPEG format.
* Establish pointers to repeating groups.
Database designers can violate first normal form and create a table column that has pointers to an array of row
pointers. For example, you might create a column called order_history in a customer table. The column could contain a
pointer to a reference table containing pointers to the specific rows that represent prior orders for that customer.
* Establish one-to-many and many-to-many data relationships without relational foreign keys.
This capability alleviates the need for relational JOIN operations, since table columns can contain references
to rows in other tables. By de-referencing these pointers, rows from other tables can be retrieved without ever using
the expensive SQL JOIN operator.

uzeto iz: http://www.dba-oracle.com/art_oracle_obj.htm

Relacija se ne bi formirala preko FK-a,ne koristi se JOIN itd., međutim evo šta jedan od managera
Firebird projekta kaže za uvođenje objektno-relacionih mogućnosti u Firebird:
http://tracker.firebirdsql.org/browse/CORE-744

Zanimljivo je da se u IBExpertu moze iskoristiti ovaj rdb$db_key umesto PK za
menjanje i brisanje zapisa:


Ag + Na -> Xe
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)28.10.2007. u 18:02 - pre 200 meseci
stalno mi izbacuje gresku kod ALTER INDEX
SQL error: unsuccessful metadata update Index not found. Error code -607. This is not defined for system table.

q.SQL.Clear;
q.SQL.Add('CREATE INDEX prom_ime on promene(ime)');
q.Open;
//prodje bez problema
q.SQL.Clear;
q.SQL.Add('ALTER INDEX prom_ime ACTIVE');
q.Open; ili q.ExecSQL; svejedno je ista greska
//izbaci gresku

Pogledao sam po internetu i svuda je sintaksa kako ste rekli i ja napisao ali nece da radi.
Gde gresim ili nesto fali jos ???
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Uporedjivanje Firebird-a i Paradox-a(BDE)28.10.2007. u 18:25 - pre 200 meseci
> stalno mi izbacuje gresku kod ALTER INDEX
> SQL error: unsuccessful metadata update Index not found. Error code -607. This is not defined for system table.

> q.SQL.Clear;
> q.SQL.Add('CREATE INDEX prom_ime on promene(ime)');
> q.Open;

Kada se izvršava neka komanda ili nešto drugo što ne vraća resultset koristi se ExecSQL.

//prodje bez problema
> q.SQL.Clear;
> q.SQL.Add('ALTER INDEX prom_ime ACTIVE');
> q.Open; ili q.ExecSQL; svejedno je ista greska

Moguće je da nisi komitovao transakciju pa zato indeks ne postoji ili uopšte nije uspelo kreiranje indeksa. Inače, indeks koji se kreira je automatski i aktivan, dakle nema potrebe da ga izričito aktiviraš.
 
Odgovor na temu

[es] :: Firebird/Interbase :: Uporedjivanje Firebird-a i Paradox-a(BDE)

Strane: 1 2

[ Pregleda: 7677 | Odgovora: 30 ] > FB > Twit

Postavi temu Odgovori

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