Roman Wilk

Roman Wilk Tak właściwie, to
gram dużo w squash'a
:), ale to wciąż
z...

Temat: Firebird jako server Web

Witam,
czy ktoś może ma doświadczenia w temacie jak powyżej. Odpalamy platformę B2B na tym serverze do własnego ERP'a i mamy "małe" problemy wydajnościowe. Jestem ciekawy czy ktoś może używa Firebird' a w roli servera Web.

Pozdrawiam
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Firebird jako server Web

Roman Wilk:
Witam,
czy ktoś może ma doświadczenia w temacie jak powyżej. Odpalamy platformę B2B na tym serverze do własnego ERP'a i mamy "małe" problemy wydajnościowe. Jestem ciekawy czy ktoś może używa Firebird' a w roli servera Web.
Ja używałem, ale nie w tej roli - Firebird nie nadaje się na serwer WEB.
On, co najwyżej, może być backendem dla aplikacji Web.

Anyway - rozwiązanie nad którym pracowaliśmy to nie był żaden ERP, tylko takie jakieś dziwne fiku-miku, dla dziwnego klienta z dziwnymi wymaganiami :D
Ok. 60 klientów podłączonych za pomocą aplikacji desktop i ok. 150-600 użytkowników podłączonych z WEB'a - to był zamknięty system dla handlowców tej firmy.
Było to ok. 6-7 lat temu i problemy wydajnościowe się skończyły, kiedy ludkowie nauczyli się jak należy a jak nie należy pisać zapytań w bazie danych. Firebird był (jest?) pod tym względem straszliwie chimeryczny (mam na myśli bzdurne decyzje optymalizatora zapytań).

Tak czy siak - nie ma prostej odpowiedzi na tak zadane pytanie.

PS. Już Ci kiedyś pisałem - to nie jest dobre miejsce na tego typu pytania ;-)Daniel Wloochacz Grabowski edytował(a) ten post dnia 23.04.12 o godzinie 12:48
Roman Wilk

Roman Wilk Tak właściwie, to
gram dużo w squash'a
:), ale to wciąż
z...

Temat: Firebird jako server Web

Daniel,
chyba po raz pierwszy się muszę z Tobą zgodzić (:, choć w wersji FB 3.0 ma być parametr QueryTimeOut, czego własnie brakuje w obecnych wersjach, bo F5 cholera zabija FB.

ps.

Ale jeszcze powalczymy z typ problemem ...

pozdrawiam
Roman Wilk

Roman Wilk Tak właściwie, to
gram dużo w squash'a
:), ale to wciąż
z...

Temat: Firebird jako server Web

Więc, tak ...
powalczyliśmy (tzn. walczyłem z problemem cały ten czas od ostatniego mojego postu raczej w tym czasie mało sypiając) i mogę dziś śmiało powiedzieć. Firebird nadaje się jak najbardziej na server WEB (w naszym konkretnym zastosowaniu B2B). Można powiedzieć, że autorzy obecnych wydań (2.5) Firebirda piszą prawdę odnośnie wydajności tego servera (jest bardzo duża). Aczkolwiek jak zwykle diabeł tkwi w szczegółach i trzeba naprawdę dużo wysiłku włożyć w optymalizację i strojenie bazy i servera, ale da się to zrobić (zresztą z Oracle wcale nie jest łatwiej, to odnośnie strojenia bazy). Przy 2500 klientów i 2500 towarów i grupach rabatowych dla każdego Klienta i każdego towaru w predefiniowanych cenach (to daje 2500*2500=6.250.000, czyli jeszcze nie bardzo dużo, ale już sporo), server dla całego (około 25 query) Frameworka WEB odpowiada poniżej 100 ms.

Ps.
Dla niedowiarków, mogę podać link do komercyjnej wersji portalu już pracującej z naszym B2B opartym na FB.

PozdrawiamRoman Wilk edytował(a) ten post dnia 30.04.12 o godzinie 09:49

konto usunięte

Temat: Firebird jako server Web

Lepiej podaj jak zwalczyliście problemy. Jakiego typu były?
Zmiana zapytań, konstrukcji bazy - indeksy, cache'owanie czy coś jeszcze?
Roman Wilk

Roman Wilk Tak właściwie, to
gram dużo w squash'a
:), ale to wciąż
z...

Temat: Firebird jako server Web

OK,
ale daj mi trochę czasu, muszę zebrać siły :)

konto usunięte

Temat: Firebird jako server Web

Krótko i na temat ;-) Firebird w roli serwera Web spisuje się znakomicie.
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Firebird jako server Web

Nikodem W.:
Krótko i na temat ;-) Firebird w roli serwera Web spisuje się znakomicie.
Bzdura!
Bo od kiedy Firebird przetwarza żądania dla protokołu HTTP?!
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Firebird jako server Web

Roman Wilk:
Więc, tak ...
powalczyliśmy (tzn. walczyłem z problemem cały ten czas od ostatniego mojego postu raczej w tym czasie mało sypiając) i mogę dziś śmiało powiedzieć. Firebird nadaje się jak najbardziej na server WEB (w naszym konkretnym zastosowaniu B2B). Można powiedzieć, że autorzy obecnych wydań (2.5) Firebirda piszą prawdę odnośnie wydajności tego servera (jest bardzo duża). Aczkolwiek jak zwykle diabeł tkwi w szczegółach i trzeba naprawdę dużo wysiłku włożyć w optymalizację i strojenie bazy i servera, ale da się to zrobić
Przeca mówiłem...
(zresztą z Oracle wcale nie jest łatwiej, to odnośnie strojenia bazy). Przy 2500 klientów i 2500 towarów i grupach rabatowych dla każdego Klienta i każdego towaru w predefiniowanych cenach (to daje 2500*2500=6.250.000, czyli jeszcze nie bardzo dużo, ale już sporo), server dla całego (około 25 query) Frameworka WEB odpowiada poniżej 100 ms.
Ps.
Dla niedowiarków, mogę podać link do komercyjnej wersji portalu już pracującej z naszym B2B opartym na FB.
Wierzę.
Aczkolwiek powtarzam to od jakiś 7 lat; FB świetnie spisuje się w roli bazy dal aplikacji klasy OLTP.
Natomiast, jeśli dorzucisz mu zadania w stylu "hurtowania danych pracująca w modelu ROLAP" to nie będzie dobrze... Firebird to nie np. MSSQL :D
Z tego co piszesz, ta webowa wypustka to taki OLTP właśnie; dodatkowo z wycinkiem dla każdego klienta osobno. Tu nie powinno być żadnych problemów wydajnościowych.

konto usunięte

Temat: Firebird jako server Web

Daniel Wloochacz Grabowski:
Nikodem W.:
Krótko i na temat ;-) Firebird w roli serwera Web spisuje się znakomicie.
Bzdura!
Bo od kiedy Firebird przetwarza żądania dla protokołu HTTP?!

Ale to chyba oczywiste, że sama baza danych nie wystarczy - potrzebny jest kompletny zestaw narzędzi programistycznych, dla przykładu:

Firebird + Embarcadero Delphi + Devart DBX Driver for Firebird + komponent Indy HTTP Server

Nie wierzysz? Sprawdź - http://blizejdomu.pl ;D
Roman Wilk

Roman Wilk Tak właściwie, to
gram dużo w squash'a
:), ale to wciąż
z...

Temat: Firebird jako server Web

Nikodem W.:
Nie wierzysz? Sprawdź - http://blizejdomu.pl ;D

Mam prośbę, ...
jeśli chcesz pomóc FB i pokazać, że się nadaje na server WEB (moim zdaniem na podstawie moich ostatnich doświadczeń jak najbardziej tak), to nie podawaj przykładów jego wykorzystania tak naprawdę nie potwierdzających jego przydatności w tej roli. Wydajność przytoczonego przez Ciebie serwisu nie jest przecież "porywająca" i jak widzę nie jest on strasznie "obłożony" .....

Ps.
Sorry za szczerość :(
Jarosław J.

Jarosław J. Specjalista od spraw
trudnych

Temat: Firebird jako server Web

Przyglądam się tej dyskusji i zastanawiam się jak zmusiłeś bazę danych do hostowania stron WWW.
Chętnie poznam tę właściwość FB bo do tej pory jej nie znałem.
Roman Wilk

Roman Wilk Tak właściwie, to
gram dużo w squash'a
:), ale to wciąż
z...

Temat: Firebird jako server Web

OK,

Opisuje to ponieważ, uważam FB za dobre rozwiązanie i dość często niedoceniane przez środowisko developerów

Poniżej w kilku moim zdaniem najważniejszych zagadnieniach dotyczących zastosowania FB jako serera WEB (w naszym przypdku dedykowanego rozwiązania klasy B2B, B2C zintegrowanego z naszym ERP'em). ERP z LAN ma bliźniaczą baze w Internecie (obydwie bazy to FB), dzięki takiemu rozwiązaniu mamy zapenwnioną 100% kompatybilność danych i praktycznie ich synchronizację w czasie rzeczywistym).

1. Jako server WEB nie może być użyty FB w wersji SuperServer (nie będę tłumaczył zainteresowanych odsyłam do dokumnetacji), w naszym przypadku bardzo dobrze spisuje się wersja SuperClasic 2.5 postawiona na Debianie (oczywiście http obsługuje Apache)

2. Całość Frameworka strony www i B2B napisane jest w PHP.

3. Baza FB obsługującego WEB jest oczywiście bardzo dobrze zopytmalizowana, niestety FB nie radził sobie w pierwszej wesji w zapytaniami wysyłaymi przez klientów dla czasów odpowiedzi powyżej 100 ms (przytrzymanie klawisza F5 przez 1 min, powodowało, że serwer nie odpowiadał i nie potrafił sam się podnieś). Oczywiście wszystkie zapytania były profilowane i praktycznie indeksy był wykorzystywane we wszystskich wąskich gardłach (mnie samemu szukanie optymalnych indeksów zajęło około tygodnia. Tutaj polecam IBExperta, kawał solidnego narzędzia).

4. Po testach i analizie logiki opartej na zapytaniach wysyłanych przez Klientów, zmieniliśmy zupełnie podejście i zapakowaliśmy co się tylko dało w STORE PROCEDURE (w sumie wyszło ich coś około 300), ale przy takim podejściu FB radzi sobie znakomicie, ustawia w kolejce poszczególne zapytania i praktycznie nie daje się "zabić".Dzięki takiemu podejściu udało się zejść z wykonaniem całego frameworka do około 120 ms. Ale żeby nie było tak różowo w FB wiele poleceń, których można używać w procedurach, niestety nie działa prawidłowo np. CASE ORDER BY :(

5. "Grzebanie" w firebird.conf dało nam 20 ms następnych oszczędności i tak praktyczne zeszliśmy do 100 ms, w których wykonuj się cały framework.

6. Opytmalizacja synchronizacji ERP'a z B2B dała nam jeszcze trochę rezerwy dla FB (ERP co pewien definiowalny czas (60..600 s) sprawdza stan B2B, czy są nowi Klienci, nowe zamówienia i wiele innych....)

Ps.

Mam nadziej, że to się komuś przyda ... :)

pozdrawiam

konto usunięte

Temat: Firebird jako server Web

Roman Wilk:
Nikodem W.:
Nie wierzysz? Sprawdź - http://blizejdomu.pl ;D

Mam prośbę, ...
jeśli chcesz pomóc FB i pokazać, że się nadaje na server WEB (moim zdaniem na podstawie moich ostatnich doświadczeń jak najbardziej tak), to nie podawaj przykładów jego wykorzystania tak naprawdę nie potwierdzających jego przydatności w tej roli. Wydajność przytoczonego przez Ciebie serwisu nie jest przecież "porywająca" i jak widzę nie jest on strasznie "obłożony" .....

Ps.
Sorry za szczerość :(


1. To miał być tylko przykład na potwierdzenie wymagań funkcjonalnych - są one spełnione.
2. Wydajność można mierzyć obiektywnie tylko jeśli przepustowość łącza nie jest najsłabszym ogniwem systemu - a w tym przypadku obecnie trwa awaria łącza u mojego ISP.
3. Oprócz wydajności liczy się dostępność - czyli działanie 24h 7d bez błędów oraz bez efektu wycieków pamięci.
4. Przedstawiona konfiguracja narzędzi programistycznych umożliwia zaimplementowanie mechanizmu puli połączeń - zatem otwartość jest kolejną zaletą niniejszego wyboru.
5. Nie należy mylić wydajności poleceń SQL z wydajnością łącza abonenckiego ISP - przesyłane pliki są relatywnie duże (jak na łącze o tak niskiej przepustowości).

Sorry, jeśli nie pomogłem - aczkolwiek miałem dobre chęci ;-)Nikodem W. edytował(a) ten post dnia 07.05.12 o godzinie 19:21

konto usunięte

Temat: Firebird jako server Web

Roman Wilk:
OK,

Opisuje to ponieważ, uważam FB za dobre rozwiązanie i dość często niedoceniane przez środowisko developerów

Fajnie, tylko dlaczego nie PostgreSQL?
a) bo za dużo hostingów to wspiera?
b) bo popularniejsze?
c) bo więcej ma dodatków?
d) bo bezpośrednio wspierane przez środowisko PHP?
e) bo za bardzo przypomina Oracle?

?
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Firebird jako server Web

Nikodem W.:
Daniel Wloochacz Grabowski:
Nikodem W.:
Krótko i na temat ;-) Firebird w roli serwera Web spisuje się znakomicie.
Bzdura!
Bo od kiedy Firebird przetwarza żądania dla protokołu HTTP?!

Ale to chyba oczywiste, że sama baza danych nie wystarczy - potrzebny jest kompletny zestaw narzędzi programistycznych, dla przykładu:

Firebird + Embarcadero Delphi + Devart DBX Driver for Firebird + komponent Indy HTTP Server
Wypas.
A teraz przeczytaj jeszcze raz to co napisałem, ale tym razem ze zrozumieniem...
Nie wierzysz? Sprawdź - http://blizejdomu.pl ;D
Sprawdziłem;
"Przekroczono limit czasu połączenia
Serwer blizejdomu.pl zbyt długo nie odpowiada."
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Firebird jako server Web

Piotr L.:
Roman Wilk:
OK,

Opisuje to ponieważ, uważam FB za dobre rozwiązanie i dość często niedoceniane przez środowisko developerów

Fajnie, tylko dlaczego nie PostgreSQL?
A dlaczego tak?
a) bo za dużo hostingów to wspiera?
To nie jest problemem przy komercyjnym projekcie; stawiasz serwer dedykowany ewentualnie VPS i masz co chcesz.
b) bo popularniejsze?
Zależy gdzie.
Wierz mi, że w środowisku Delphi to Firebird jest bardziej popularny. Dużo bardziej.
Nawet MSSQL jest bardziej popularny od PostgreSQL.
c) bo więcej ma dodatków?
Może i tak, ale czy one na pewno są niezbędne?
d) bo bezpośrednio wspierane przez środowisko PHP?
A FB nie jest?
e) bo za bardzo przypomina Oracle?
Fyracle bardziej niż przypomina Oracle. No i?
?
To proste, dlaczego nie; dla FB jest mnóstwo natywnych bibliotek pisanych w Delphi. Dla PostgreSQL nigdy nie było tak dobrze i dalej nie jest; z darmowych praktycznie ZEOS, tyle że to ZEOS....
Aczkolwiek jest sporo lepiej niż było kiedyś, bo jest wsparcie w postaci sterowników DBX no i jest oczywiście AnyDAC.
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Firebird jako server Web

Roman Wilk:
OK,

Opisuje to ponieważ, uważam FB za dobre rozwiązanie i dość często niedoceniane przez środowisko developerów

Poniżej w kilku moim zdaniem najważniejszych zagadnieniach dotyczących zastosowania FB jako serera WEB (w naszym przypdku dedykowanego rozwiązania klasy B2B, B2C zintegrowanego z naszym ERP'em). ERP z LAN ma bliźniaczą baze w Internecie (obydwie bazy to FB), dzięki takiemu rozwiązaniu mamy zapenwnioną 100% kompatybilność danych i praktycznie ich synchronizację w czasie rzeczywistym).

1. Jako server WEB nie może być użyty FB w wersji SuperServer
Dalej będę się upierał, iż mylisz pojęcia...
(nie będę tłumaczył zainteresowanych odsyłam do dokumnetacji), w naszym przypadku bardzo dobrze spisuje się wersja SuperClasic 2.5 postawiona na Debianie (oczywiście http obsługuje Apache)

2. Całość Frameworka strony www i B2B napisane jest w PHP.

3. Baza FB obsługującego WEB jest oczywiście bardzo dobrze zopytmalizowana, niestety FB nie radził sobie w pierwszej wesji w zapytaniami wysyłaymi przez klientów dla czasów odpowiedzi powyżej 100 ms (przytrzymanie klawisza F5 przez 1 min, powodowało, że serwer nie odpowiadał i nie potrafił sam się podnieś). Oczywiście wszystkie zapytania były profilowane i praktycznie indeksy był wykorzystywane we wszystskich wąskich gardłach (mnie samemu szukanie optymalnych indeksów zajęło około tygodnia. Tutaj polecam IBExperta, kawał solidnego narzędzia).

4. Po testach i analizie logiki opartej na zapytaniach wysyłanych przez Klientów, zmieniliśmy zupełnie podejście i zapakowaliśmy co się tylko dało w STORE PROCEDURE (w sumie wyszło ich coś około 300), ale przy takim podejściu FB radzi sobie znakomicie, ustawia w kolejce poszczególne zapytania i praktycznie nie daje się "zabić".
Dziwne by było, gdyby było inaczej...
Ale ciekawi mnie, dlaczego uważasz iż w przypadku zapytań daje się zabić i źle ustawia zapytania w kolejce, a przynajmniej ja to tak rozumiem.
Na pewno dobrze to zrobiliście?
Żadnych problemów z transakcjami, zero zakleszczeń?
Dzięki takiemu podejściu udało się zejść z wykonaniem całego frameworka do około 120 ms. Ale żeby nie było tak różowo w FB wiele poleceń, których można używać w procedurach, niestety nie działa prawidłowo np. CASE ORDER BY :(
Co to znaczy - nie działa?
Podaj przykład - sprawdziłem i mnie tam wszystko działa poprawnie.
a więc tak:

select rh.id,
case rh.sv
when 1 then 'a'
when 2 then 'b'
else 'c'
end as sva
from raporth rh
where rh.d_ta > 0 or rh.d_tnone > 0
order by case rh.sv
when 1 then 'a'
when 2 then 'b'
else 'c'
end desc

jak i tak

select rh.id,
case rh.sv
when 1 then 'a'
when 2 then 'b'
else 'c'
end as sva
from raporth rh
where rh.d_ta > 0 or rh.d_tnone > 0
order by 2 desc

5. "Grzebanie" w firebird.conf dało nam 20 ms następnych oszczędności i tak praktyczne zeszliśmy do 100 ms, w których wykonuj się cały framework.

6. Opytmalizacja synchronizacji ERP'a z B2B dała nam jeszcze trochę rezerwy dla FB (ERP co pewien definiowalny czas (60..600 s) sprawdza stan B2B, czy są nowi Klienci, nowe zamówienia i wiele innych....)

Ps.
Mam nadziej, że to się komuś przyda ... :)
Szczerze? Nie sądzę - za mało konkretów.
Do czego miałoby się to przydać?
Jest tu tylko jeden konkret, że stored procedure działają szybciej od "luźnych" zapytań.
OK, ale to masło maślane - dlaczego tak jest?
Poza tym, wszystko zależy od tego jak te zapytania są pisane - jak luźne zapytania zwracały dane do klienta, które je potem przetwarzał to się nie dziwie, że działa to Wam szybciej jeśli wszystko jest przetwarzane bezpośrednio na serwerze bazy danych.
Ale nie nazwałbym tego jakąś realucyjną zmianą...
Kolejny "konkret" to "Grzebanie" w firebird.conf dało nam [...] - a konkretnie to o jakie grzebanie chodzi, w jakich parametrach i jakie wartości i dlaczego takie a nie inne?
To mogłoby komuś się przydać, a nie to że procedur jest ok. 300 - to ma być pomocne? Ale w czym?

konto usunięte

Temat: Firebird jako server Web

Daniel Wloochacz Grabowski:
Nikodem W.:
Daniel Wloochacz Grabowski:
Nikodem W.:
Krótko i na temat ;-) Firebird w roli serwera Web spisuje się znakomicie.
Bzdura!
Bo od kiedy Firebird przetwarza żądania dla protokołu HTTP?!

Ale to chyba oczywiste, że sama baza danych nie wystarczy - potrzebny jest kompletny zestaw narzędzi programistycznych, dla przykładu:

Firebird + Embarcadero Delphi + Devart DBX Driver for Firebird + komponent Indy HTTP Server
Wypas.
A teraz przeczytaj jeszcze raz to co napisałem, ale tym razem ze zrozumieniem...
Nie wierzysz? Sprawdź - http://blizejdomu.pl ;D
Sprawdziłem;
"Przekroczono limit czasu połączenia
Serwer blizejdomu.pl zbyt długo nie odpowiada."

Ze zrozumieniem - a może należałoby przeczytać całość - cytuję raz jeszcze: "obecnie trwa awaria łącza u mojego ISP" (w skrócie obecnie łącze działa jak chce).

konto usunięte

Temat: Firebird jako server Web

Daniel Wloochacz Grabowski:
To proste, dlaczego nie; dla FB jest mnóstwo natywnych bibliotek pisanych w Delphi. Dla PostgreSQL nigdy nie było tak dobrze i dalej nie jest; z darmowych praktycznie ZEOS, tyle że to ZEOS....
Aczkolwiek jest sporo lepiej niż było kiedyś, bo jest wsparcie w postaci sterowników DBX no i jest oczywiście AnyDAC.

AFAIU wątek dotyczy serwisu w PHP, nie wiem dlaczego piszesz o Delphi?

Następna dyskusja:

FireBird jako aplikacja SBS...




Wyślij zaproszenie do