konto usunięte
Temat: Interbase - limit dostępu do bazy danych
Daniel "wloochacz" Grabowski:/ciach/
Michał Z.:/ciach/
No, nie wiem. Może u Ciebie jest to standard, ale np. ja wolę nie używać procedur składowanych, jeżeli to nie absolutnie potrzebne.
Ale ja nigdzie nie napisałem, że tak robię. Przede wszystkim -
nic nie robię pod ten serwer. Swego czasu mieli jakieś dziwne
podejście do triggerów. Efekt był taki, że większość ludzi parła
do stored procedures. Znam parę firm, które tak właśnie mają
zaprojektowane systemy.
Dla mnie - ważne, żeby używać właściwych narzędzi.
Innymi słowy, aplikacja z bazą nie komunikuje się za pomocą tysięcy procedur (a więc praktyczna implementacja wzorca CRUD), tylko wykorzystuje model domeny. W samej definicji domeny, oczywiście może być wykorzystana procedura, ale nie jest to standard tak jak w CRUD. Raczej jestem za automatycznym generowaniem kodu SQL, który potem jest wykorzystywany.
Generalnie jest to praktyczna implementacja SQLMap, bardzo podobna do iBATIS.
To akurat zależy. Dla mnie - może być tak, może być owak. Każde
podejście ma plusy i minusy. Głównie zależy od wielkości systemu,
stylu pracy i od tego po której stronie interfejsu się znajdujesz.
Miałem przyjemność pracować po obu stronach i ciężko mi tak
jednoznacznie to traktować :) Dyskutowanie z kilkunastoma
programistami o tym, że coś jest do zrobienia przebiega o wiele
lepiej przed faktem - jak ratowanie sytuacji po fakcie. Tak to
przynajmniej widzę jako DBA. Warto mieć jakieś argumenty - a nie
patrzeć jak nowe zapytania rozwalają bazę... Z drugiej strony -
ktoś musi utrzymywać te procedury i to też kosztuje.
Dużo by pisać, dlaczego tak i co to daje, ale to zdecydowanie wykracza poza zakres tematu...
Od tematu to już chyba odjechaliśmy parę postów temu.
No ok. Prawdę mówiąc nigdy nie musiałem takich rzeczy robić.I obaO to chodzi, że to NIE są transakcje zagnieżdżone, tylko współbieżne; pracują równolegle i niezależnie od siebie, w tej samej sesji połączeniowej do bazy danych.
interfejsy (ADO, ODBC) dobrze sobie z tym radzą. Zostaje kwestia
drivera do bazy dla konkretnego interfejsu... Tak jak wyżej
pisałem. Działało, powinno działać dalej. Co do zagnieżdżania
transakcji... wiele baz to ma. Testowałem kiedyś dostęp z ADO
do Oracle'a. Wiele transakcji zagnieżdżonych - przy ręcznej
obsłudze transakcji po stronie klienta - śmigało elegancko.
Tego nie da się zrobić za pomocą ADO, ponieważ tam kontrola transakcji jest dokonywana na poziomie obiektu Connection. A np. w takich IBX jest dedykowany obiekt IBTransaction, który odwzorowuje fizyczną transakcję w danym connection. I takich IBTransacion może być wiele w tym samym czasie w jednym Connection, niezależnych od siebie.
Nie bardzo widzę zastosowanie dla takich równoległych transakcji
z jednej końcówki. Może jakieś dociąganie danych... no nie wiem.
Jak coś pisałem to i tak nawet dla wyszukiwania był założony
limit na 200 pozycji. Nikt nie dojeżdżał tak daleko. Jakoś
preferuję proste rozwiązania, a takie dociąganie w tle robię
tylko gdy nie da się inaczej. Dla systemu z lokalną bazą danych -
nie ma sensu. W dobie www, krótko żyjących sesji, chyba tym
bardziej.
/ciach/
No więc właśnie - nie dało się tego szybko poprawić, bo sama architektura ZEOSów jest krzywa. A na temat zarządzania pamięcią przez tą bibliotekę (alokacje i realokacje) krąży anegdota, jaki to wzorcowy przykład jak nie powinno się tego robić. W efekcie czego, sama wydajność biblioteki przy pobieraniu danych z serwera jest kilkakrotnie niższa niż mogłaby być w porównaniu np. do AnyDAC.
A o różnicach w funkcjonalności szkoda nawet pisać ;-)
No, ale jak coś jest za darmo (tak jak ZEOS), to nie należy krytykować tylko używać i cieszyć się, że jest.
Ja tam nie wiem o co Ci chodzi. Działało, miało się dobrze.
Nigdy nie potrzebowałem tym wyciągać hektarów danych na raz,
reallokować. Widzisz, taka normalna aplikacja OLTP... :)
Doimplementowałem jakieś cache i z tą mityczną reallokacją
też jakoś sobie poradziłem. Pewnie na wynikach po kilka tysięcy
wierszy - są różnice. Ale przy 100, 200... ginie w tłumie.
Być może mówimy o innej wersji, od paru lat na oczy nie
widziałem - ani delphi, ani zeosów. Chociaż z tego co pamiętam
dla Ciebie zeosy to było zło - zawsze. :)
Jak miałbym luksus poświęcenia jakiegoś tam czasu na wdrożenie,
może bym się zdecydował. Tyle, że zawsze jest coś do zrobienia,
i wytłumaczenie komuś, że teraz to my się pobawimy i wdrożymy
bibliotekę, która jest mniej "krzywa"... a im w tym czasie
kasa będzie uciekać. :)
Podsumowując. Tak, robiłem testy. Dla przeciętnego użytkownika
tego konkretnego systemu wdrożenie AnyDAC nie dałby zauważalnego
wzrostu wydajności. Koszty nie były zerowe, ryzyko też. I to
chyba tyle.
IMO to nie ma nic wspólnego z "woleniem" - bo jak mam rozumieć, że wolisz poruszać się starym fiatem zamiast nowym autem z Bawarii?:DJa używałem ZEOSów - tyle, że to było pod D7 parę lat temu...I nic się nie zmieniło na plus - były paskudne i takie pozostały :P
I co zrobić... Jeden woli ogórki, a drugi ogrodnika córki. :)
Oj, nie, ale wcale fanem nie jesteś... :P
Tak zupełnie na boku. Stary fiat ma tę zaletę, że jak jedziesz
na imprezę to zostawiasz go gdziekolwiek i się nie martwisz.
Tak, możesz jechać taksówką - jechałeś taksówką w Sylwestra? Ja
co roku mam problem, bo albo czekam na taryfę 30 minut, albo
jestem pod lokalem 30 za wcześnie. A tak - słuchaj - jedziesz
starym fiatem, niech z petard strzelają... nawet jak coś na niego
spadnie - różnicy nie zrobi ;) To tak bez związku z ZEOSami.