wszystkie bazy - czego nie lubicie?

28 views
Skip to first unread message

hubert depesz lubaczewski

unread,
Mar 4, 2007, 12:45:23 PM3/4/07
to
pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
(http://use.perl.org/~brian_d_foy/journal/32556?from=rss).

stwierdziłem, że tyczy się to też baz danych.

czy możecie podać czego nie lubicie w swoich bazach?

aby nie było, że szukam amunicji na "wrogów", podaję, co mnie wnerwia w
postgresie:
- cały czas słychać, że są różne rozwiązania replikacyjnie - w tym
multi-master. realnie - nie ma żadnego multi-master, a to co jest
oszukuje robiąc replikację zapytań a nie danych.
- brak możliwości podpowiadania planerowi czego użyć
- mvcc i update'y
- brak backupów przyrostowych (tzn. wiem o backupowaniu wal'ami które
działa ok, ale wolałbym przyrostowe sql'e)
- konieczność pobierania danych z tabel nawet jeśli teoretycznie są w
indeksie który jest użyty do scan'u.

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)

porneL

unread,
Mar 4, 2007, 1:44:48 PM3/4/07
to
On Sun, 04 Mar 2007 17:45:23 -0000, hubert depesz lubaczewski
<dep...@depesz.com> wrote:

> czy możecie podać czego nie lubicie w swoich bazach?
>
> aby nie było, że szukam amunicji na "wrogów", podaję, co mnie wnerwia w
> postgresie:

> - brak możliwości podpowiadania planerowi czego użyć

O tak. Wyuczony na MySQLizmach nie polubiłem się z postgresowym planerem -
w większości przypadków muszę przerobić zapytania z JOINami na subquery,
bo inaczej postgres bardzo chętnie będzie skanował i łączył sobie tabele
_zanim_ zerknie do WHERE i ograniczy ilość rzędów do obróbki.


W MySQL do szału doprowadza mnie ilość miejsc w których trzeba ustawić
charset - baza, tabela, kolumna, połączenie... i do tego MySQL bardzo
chętnie *stratnie* konwertuje charset na każdym kroku.

warningi są przemilczane, a "show warnings" podaje nr rzędu, który nijak
ma się do czegokolwiek jawnego w tabeli i nie sposób sprawdzić danych,
których warning dotyczy.

auto_increment jest prosty póki potrzeba sekwencję tylko w kluczu głównym.

--
this.author = new Geek("porneL");

dap

unread,
Mar 4, 2007, 3:10:37 PM3/4/07
to
dla Oracle...

-błędy, błędy i jeszcze raz błędy szczególnie w 10g (zawarte w
podstawowych wersjach, powracające po kolejnych łatkach i na nowo
usuwane w kolejnych)
-sporo dziwnych nieprzetestowanych funkcji tylko po to by pokazać
konkurencji, że się je też ma
-brak sensowego darmowego narzędzia do programowania - sqldeveloper jest
tak na 3+ (brak powiązania do dokumentacji, sensownych raportów, itd...)
-licencje i jej koszty, wraz ze wszystkimi kruczkami (core, pakiety dla EM)
-sztuczny podział na wiele wersji (EE, SE, SEO, XE, itd.), z różnymi
funkcjonalnościami (np. brak możliwości kompresji w wersji SE) mający
celu wejście w rynek MSSQL
-dostęp do patchy i specyficznych informacji tylko przez Metalink
-sprzedawanie poczucia, że Oracle jest najlepszą baza do wszystkiego i
dla wszystkich
-zamknięte źródła ;)
-sporo swoich i tylko swoich pomysłów używanych potem tylko przez Oracle
-zmuszanie do używania IAS i innych produktów Oracle jak chce się mieć
grida, było by to ok gdyby one działały a to już jest różnie...

-kumple płaczą na Metalink - dla mnie jest on ok.

Na razie to tyle...
dap

Piotr 'piter' Hlawski

unread,
Mar 4, 2007, 4:33:51 PM3/4/07
to
hubert depesz lubaczewski wrote:

> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>
> stwierdziłem, że tyczy się to też baz danych.
>
> czy możecie podać czego nie lubicie w swoich bazach?

PostgreSQL:

Mnie troszkę drażni obsługa locale na poziomie systemu operacyjnego i per
cluster.

--
.:: Piter // phlawski$gmail,com // gg: 4534287 ::.
Jeśli powiesz "Chuck Norris" w Mongolii, ludzie zaczną cię kopać z półobrotu
w twarz w jego imieniu. Zaraz po ich kopach, zostaniesz kopnięty w twarz z
półobrotu przez samego Norrisa.

Krzysztof Krzyżaniak

unread,
Mar 4, 2007, 5:47:47 PM3/4/07
to
porneL <niu...@pornel.net> writes:

Do MySQLa dorzucę, że explain tak naprawde niewiele wyjaśnia.
Do Postgresql - z mojego punktu widzenia problem locales jest nadal
nierozwiązany (to znaczy trudno w jednej bazie mieć tabelę dla rosyjskiego,
polskiego i angielskiego).

eloy
--
-------e-l-o-y----------------------------e-l-o-y-@-k-o-f-e-i-n-a-.-n-e-t------

jak to dobrze, że są oceany - bez nich byłoby jeszcze smutniej

Michał Zaborowski

unread,
Mar 4, 2007, 6:06:08 PM3/4/07
to
hubert depesz lubaczewski napisał(a):

> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>
> stwierdziłem, że tyczy się to też baz danych.
>
> czy możecie podać czego nie lubicie w swoich bazach?
>
[...]

Widać, że patrzysz na Postgresa bardziej jako administrator.
Mi przeszkadza:
- filozofa, zrób se sam - większość mam już zrobione, ale...
materialized view mogłoby być - w standardzie...

- brak debugera do pl/pgSQLa - jest o wiele lepiej, wiem - są
nawet widoki... ale ja tam nie widziałem dobrze działającego
rozwiązania.

- brak pakietów - zwykle baza danych to wspólny punkt wielu
systemów - często jedyny... bez pakietów ciężko jest zamknąć
logikę na serwerze...

- brak sensownego edytora - radzę sobie, ale... chciałbym,
żeby edytor podpowiadał co ma podpowiadać, umożliwiał dostęp
do komentarzy... no i żeby działał szybko. Widziałem jakieś
narzędzia w Javie, które teoretycznie by się nadały, ale...
to był swing - czyli zassanie paru tysięcy wierszy z bazy
kładło klienta.

- GEQO - ogólnie to idzie się przyzwyczaić, ale w przypadku
danych zdenormalizowanych - zwyczajnie sobie nie radzi.
Gdzieś czytałem, że są plany na zmianę - może rozluźnienie
w tej materii - podobnie jak w przypadku procedural languages
byłoby dobrym pomysłem. Tu dochodzą hinty... ale nie należę
do osób, którym brak hintów przeszkadza.

- TOAST - chciałbym, żeby ten mechanizm był bardziej elastyczny.
Fajne jest to, że mechanizm jest ogólny, ale przeszkadza mi to,
że jak wyjedzie się poza stronę całość dostaje strasznego kopa...
w nerę... :-(


Ale o co Tobie MVCC zawinił - nie mam pojęcia :)
--
Pozdrawiam,
Michał Zaborowski (TeXXaS)

Paweł Matejski

unread,
Mar 4, 2007, 6:52:57 PM3/4/07
to
Michał Zaborowski wrote:
> hubert depesz lubaczewski napisał(a):
>> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
>> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
>> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>>
>> stwierdziłem, że tyczy się to też baz danych.
>>
>> czy możecie podać czego nie lubicie w swoich bazach?
>>
> [...]
>
> Widać, że patrzysz na Postgresa bardziej jako administrator.
> Mi przeszkadza:
> - filozofa, zrób se sam - większość mam już zrobione, ale...
> materialized view mogłoby być - w standardzie...
>
> - brak debugera do pl/pgSQLa - jest o wiele lepiej, wiem - są
> nawet widoki... ale ja tam nie widziałem dobrze działającego
> rozwiązania.

Możesz podkręcić jasność pozycji? Bo z tego rozumiem tylko brak debugera. :)

> - brak pakietów - zwykle baza danych to wspólny punkt wielu
> systemów - często jedyny... bez pakietów ciężko jest zamknąć
> logikę na serwerze...

A co takiego dają pakiety, czego nie załatwisz schematami?

> - brak sensownego edytora - radzę sobie, ale... chciałbym,
> żeby edytor podpowiadał co ma podpowiadać, umożliwiał dostęp
> do komentarzy... no i żeby działał szybko. Widziałem jakieś
> narzędzia w Javie, które teoretycznie by się nadały, ale...
> to był swing - czyli zassanie paru tysięcy wierszy z bazy
> kładło klienta.

EMSPGMenager - w wersji Lite (darmowej) całkiem fajny, i koloruje pl/pgsql, a w
wersji płatnej nawet debuger ma (choć jak jakiś czas temu triala testowałem, to
nie potrafił wejść do kolejnej funkcji).

> - GEQO - ogólnie to idzie się przyzwyczaić, ale w przypadku
> danych zdenormalizowanych - zwyczajnie sobie nie radzi.
> Gdzieś czytałem, że są plany na zmianę - może rozluźnienie
> w tej materii - podobnie jak w przypadku procedural languages
> byłoby dobrym pomysłem. Tu dochodzą hinty... ale nie należę
> do osób, którym brak hintów przeszkadza.

Hintów brakuje szczególnie przy prepared query. Tu na pewno programista może
posiadać większą wiedze niż postgres!

> - TOAST - chciałbym, żeby ten mechanizm był bardziej elastyczny.
> Fajne jest to, że mechanizm jest ogólny, ale przeszkadza mi to,
> że jak wyjedzie się poza stronę całość dostaje strasznego kopa...
> w nerę... :-(

A co tu można uelastycznić? ;)

--
P.M.

Jacek Dębowczyk

unread,
Mar 4, 2007, 9:30:44 PM3/4/07
to
hubert depesz lubaczewski <dep...@depesz.com> napisał(a):

> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>
> stwierdziłem, że tyczy się to też baz danych.
>
> czy możecie podać czego nie lubicie w swoich bazach?

Jeśli chodzi o PostgreSQL, do wymienionych dorzucę jeszcze brak
implementacji derived keys. Przez to 'UPDATE t SET col=col+1' na
kolumnie z kluczem unikalnym na ogół nie jest wykonalne bez
kombinowania.

--
Pozdrawiam, Jacek.

I will not buy this record - it is scratched.

Maciek Dobrzanski

unread,
Mar 5, 2007, 3:59:12 AM3/5/07
to
"hubert depesz lubaczewski" <dep...@depesz.com> wrote in message
news:j6drb4-...@xxx.home.depesz.com...

> czy możecie podać czego nie lubicie w swoich bazach?

Tyle co mi do głowy przyszło od razu ;)

MySQL

- średnia skalowalność scale-up
- lekki chaos konfiguracyjny; brak sensownego podziału parametrów (np.
myisam.key_buffer; innodb.buffer_pool; replication.server-id)
- skomplikowana droga do oceny zapytań (explain, liczniki, status innodb,
profile)
- czasem duże "rozjazdy" działania tych samych "ficzerów" w różnych
silnikach (np. auto-inc na drugiej kolumnie indeksu w MyISAM i InnoDB)
- kiepska optymalizacja podzapytań i widoków
- InnoDB: tylko jeden globalny bufor dla wszystkich danych
- InnoDB: auto increment
- InnoDB: pamięciożerność indeksów
- indeksy praktycznie wyłącznie BTREE
- mocno utrudnione backupowanie bazy w sposób spójny; zwłaszcza jeśli
zawiera tabele różnych typów
- spora podatność replikacji na uszkodzenia

Maciek


Sowiecki Agent

unread,
Mar 5, 2007, 5:21:35 AM3/5/07
to
> to był swing - czyli zassanie paru tysięcy wierszy z bazy
>> kładło klienta.
>
> EMSPGMenager - w wersji Lite (darmowej) całkiem fajny, i koloruje pl/pgsql, a w
> wersji płatnej nawet debuger ma (choć jak jakiś czas temu triala testowałem, to
> nie potrafił wejść do kolejnej funkcji).


a skad to mozna sciagnac? Google ani jednego wyniku nie wyrzucaja.


--
http://www.niesfornazyta.pl/
Pierwszy stacjonarny czytnik for typu phpBB/phpBBbyPrzemo (windows/linux)
Od dziś możesz korzystać z fora tak jak z usenetu !

Grzesiek G.

unread,
Mar 5, 2007, 5:44:10 AM3/5/07
to
hubert depesz lubaczewski napisał(a):

> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>
> stwierdziłem, że tyczy się to też baz danych.
>
> czy możecie podać czego nie lubicie w swoich bazach?
>
> aby nie było, że szukam amunicji na "wrogów", podaję, co mnie wnerwia w
> postgresie:
> - cały czas słychać, że są różne rozwiązania replikacyjnie - w tym
> multi-master. realnie - nie ma żadnego multi-master, a to co jest
> oszukuje robiąc replikację zapytań a nie danych.
> - brak możliwości podpowiadania planerowi czego użyć
> - mvcc i update'y
> - brak backupów przyrostowych (tzn. wiem o backupowaniu wal'ami które
> działa ok, ale wolałbym przyrostowe sql'e)
> - konieczność pobierania danych z tabel nawet jeśli teoretycznie są w
> indeksie który jest użyty do scan'u.

Mnie się we wszystkich płatnych bazach nie podoba to, że nie wiem, czy
mnie (a w zasadzie klienta) będzie stać na kolejną wersję. Nie chciałbym
wtedy zatrzymać się w rozwoju, więc nie raz myślę wieczorami o
postgresie:-).

Poza tym to w bazach relacyjnych nie podoba mi się brak obiektowości w
językach procedur składowanych - wiem, procedura z definicji nie jest
obiektowa:-). Ale dlatego wiele logiki potrafię trzymać poza bazą.

W MSSQL nie podoba mi się implementacja ról aplikacji. W praktyce nie da
się z nich korzystać.

Nie podoba mi się też w wielu bazach (np. Oracle, MS SQL) rozróżnianie
loginu do serwera BD od użytkownika bazy danych. Chcąc napisać
aplikację, która zarządza użytkownikami w swojej bazie (użytkownikami,
na których człowiek powinien się logować do serwera bd) trzeba dać jej
"administratorom" dostęp do zarządzania serwerem.

Żeby była piątka dla MSSQL:-) dodam niewielką liczbę platform, jaką ta
baza obsługuje.

Pozdrawiam

--
Grzesiek G.
Odpowiadając usuń spamerom_nie z adresu

Brzezi

unread,
Mar 5, 2007, 5:45:54 AM3/5/07
to
pon, 05 mar 2007 o 00:06 GMT, Michał Zaborowski napisał(a):

> - brak sensownego edytora - radzę sobie, ale... chciałbym,
> żeby edytor podpowiadał co ma podpowiadać, umożliwiał dostęp
> do komentarzy... no i żeby działał szybko. Widziałem jakieś
> narzędzia w Javie, które teoretycznie by się nadały, ale...
> to był swing - czyli zassanie paru tysięcy wierszy z bazy
> kładło klienta.

Musze przyczepic do spraw javowcyh, bo niestety przesadzasz i siejesz zamet
nie majac chyba duzego pojecia o javie :)
Jak tylko widze jak ktos pisze ze java to "beee", a szczegolnie Swing to
odrazu mnie cisnie....

Jest taki calkiem fajny klient OpenSourceowy SquirrelSQL, wlasnie wykonuje w nim
zapytania na tabelce generujace tabelke widoku zapytania po kilkadziesiat
wierszy, a dokladniej teraz 100tys wierszy, i dziala to bardzo sprawnie, czas
samego zapytania na bazie to 4sek, i czas wygenerowanie w gui tabelki dla
tego to 1sek, wiec nie widze sensu chrzanienia ze dziala to wolno, kiedy
tak nie jest...

Licze na sprostowanie tego tematu z twojej strony, podaj przynajmniej nazwe
klienta ktorego uzywales, bo sposob w jaki to napisales berdzo tak nie
lubie, bezsensowne generalizowanie nic nie wnoszace do dyskusji...

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ QOTD: ]
[ Ekg: #3781111 ][ "I've got one last thing to say ]
[ LinuxUser: #249916 ][ before I go; give me back ]
[ all of my stuff." ]

Piotr 'piter' Hlawski

unread,
Mar 5, 2007, 5:51:40 AM3/5/07
to
Sowiecki Agent wrote:

>> to był swing - czyli zassanie paru tysięcy wierszy z bazy
>>> kładło klienta.
>>
>> EMSPGMenager - w wersji Lite (darmowej) całkiem fajny, i koloruje
>> pl/pgsql, a w wersji płatnej nawet debuger ma (choć jak jakiś czas temu
>> triala testowałem, to nie potrafił wejść do kolejnej funkcji).
>
>
> a skad to mozna sciagnac? Google ani jednego wyniku nie wyrzucaja.
>
>

Bo to się nazywa EMS PostgreSQL Manager

http://www.sqlmanager.net/products/postgresql/manager

--
.:: Piter // phlawski$gmail,com // gg: 4534287 ::.

Kiedyś Chuck Norris wyzwał Lanca Armstronga na konkurs "Kto ma więcej
jąder". Chuck Norris wygrał o 5.

MarcinP

unread,
Mar 5, 2007, 10:06:20 AM3/5/07
to
dap wrote:
> dla Oracle...
>
> -błędy, błędy i jeszcze raz błędy szczególnie w 10g (zawarte w
> podstawowych wersjach, powracające po kolejnych łatkach i na nowo
> usuwane w kolejnych)

Hmmm a mozesz to doprecyzowac ?

Z pozostałymi rzeczami sie zgadzam, ale uważam Oracla za jedną z
bardziej stabilnych baz - pod warunkiem nie używania nowych opcji -
ktore zreszta z release 2 z reguły staja sie uzywalne.

pozdrawiam,
Marcin 'PIORO' Przepiorowski

Sławomir Szyszło

unread,
Mar 5, 2007, 11:43:05 AM3/5/07
to
Dnia Mon, 05 Mar 2007 11:44:10 +0100, "Grzesiek G."
<gruza@spamerom_nie.priv4.onet.pl> wklepał(-a):

>Nie podoba mi się też w wielu bazach (np. Oracle, MS SQL) rozróżnianie
>loginu do serwera BD od użytkownika bazy danych. Chcąc napisać
>aplikację, która zarządza użytkownikami w swojej bazie (użytkownikami,
>na których człowiek powinien się logować do serwera bd) trzeba dać jej
>"administratorom" dostęp do zarządzania serwerem.

Co rozumiesz przez login do serwera BD? Autoryzacja w Oracle może być wykonywana
przez system operacyjny. I wcale taki użytkownik nie musi być administratorem
systemu, wystarczy że w bazie będzie miał odpowiednie uprawnienia.
--
Sławomir Szyszło mailto:slas...@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?group=pl.comp.bazy-danych

Michał Zaborowski

unread,
Mar 5, 2007, 12:22:11 PM3/5/07
to
Paweł Matejski napisał(a):
> Michał Zaborowski wrote:

[...]

>>
>> - brak debugera do pl/pgSQLa - jest o wiele lepiej, wiem - są
>> nawet widoki... ale ja tam nie widziałem dobrze działającego
>> rozwiązania.
>
> Możesz podkręcić jasność pozycji? Bo z tego rozumiem tylko brak debugera. :)
>

Albo jest szybki - vide PgAdmin, albo podpowiada składnię i
coś tam jeszcze potrafi zrobić - tak jak EMS. Chciałbym, żeby
można było szybko pracować - ale bez rezygnowania z tych dodatków.
EMS jest zrobiony pod MySQLa - tam działa sprawnie, w PG działa
wolno.

>> - brak pakietów - zwykle baza danych to wspólny punkt wielu
>> systemów - często jedyny... bez pakietów ciężko jest zamknąć
>> logikę na serwerze...
>
> A co takiego dają pakiety, czego nie załatwisz schematami?
>

80 procedur w jednym schemacie - kiepsko mi się z czymś takim
pracuje. Chciałbym mieć kilka schematów - porządkujących całość
w jakiś logiczny sposób. Można wtedy zarządzać dostępem na poziomie
pakietu... Do tego zmienne... Jest tego troszkę. Można sobie radzić
ale w większości to półśrodki.
Na tej grupie była dyskusja o warstwie z logiką aplikacji.
Ktoś powiedział, że on to ma w bazie - Oracle + pakiety. Ja też
tak bym chciał - i tyle :)

>> - brak sensownego edytora - radzę sobie, ale... chciałbym,
>> żeby edytor podpowiadał co ma podpowiadać, umożliwiał dostęp
>> do komentarzy... no i żeby działał szybko. Widziałem jakieś
>> narzędzia w Javie, które teoretycznie by się nadały, ale...
>> to był swing - czyli zassanie paru tysięcy wierszy z bazy
>> kładło klienta.
>
> EMSPGMenager - w wersji Lite (darmowej) całkiem fajny, i koloruje pl/pgsql, a w
> wersji płatnej nawet debuger ma (choć jak jakiś czas temu triala testowałem, to
> nie potrafił wejść do kolejnej funkcji).
>

Znam, chyba nawet jako pierwszy na tej grupie napisałem, że
potrafi debugować...

>> - GEQO - ogólnie to idzie się przyzwyczaić, ale w przypadku
>> danych zdenormalizowanych - zwyczajnie sobie nie radzi.
>> Gdzieś czytałem, że są plany na zmianę - może rozluźnienie
>> w tej materii - podobnie jak w przypadku procedural languages
>> byłoby dobrym pomysłem. Tu dochodzą hinty... ale nie należę
>> do osób, którym brak hintów przeszkadza.
>
> Hintów brakuje szczególnie przy prepared query. Tu na pewno
> programista może posiadać większą wiedze niż postgres!
>

Może tak, może nie. Nie wiem po prostu. Może jakiś konkretny
przykład dałby mi lepszy ogląd. ;)
Dyskusja nad wprowadzeniem hintów trwa - przyglądam się jej
z zaciekawieniem.

>> - TOAST - chciałbym, żeby ten mechanizm był bardziej elastyczny.
>> Fajne jest to, że mechanizm jest ogólny, ale przeszkadza mi to,
>> że jak wyjedzie się poza stronę całość dostaje strasznego kopa...
>> w nerę... :-(
>
> A co tu można uelastycznić? ;)
>

Teraz jedna tabela to jeden plik - chciałbym mieć coś jak extentsy w
Oracle. Druga sprawa to trzymanie BLOBów. Teraz jest tak, że jak rekord
jest większy od 1 strony - reszta rekordu trafia do osobnej przestrzeni.
Walka się zaczyna jak są jakieś updates... Chciałbym, żeby baza z
automatu radziła sobie z przechowywaniem plików w wyznaczonym katalogu.

sg

unread,
Mar 5, 2007, 12:28:34 PM3/5/07
to
Dnia 05-03-2007 o 11:45:54 Brzezi <usunto...@enter.net.pl> napisał(a):

> pon, 05 mar 2007 o 00:06 GMT, Michał Zaborowski napisał(a):
>
>> - brak sensownego edytora - radzę sobie, ale... chciałbym,
>> żeby edytor podpowiadał co ma podpowiadać, umożliwiał dostęp
>> do komentarzy... no i żeby działał szybko. Widziałem jakieś
>> narzędzia w Javie, które teoretycznie by się nadały, ale...
>> to był swing - czyli zassanie paru tysięcy wierszy z bazy
>> kładło klienta.
>
> Musze przyczepic do spraw javowcyh, bo niestety przesadzasz i siejesz
> zamet
> nie majac chyba duzego pojecia o javie :)
> Jak tylko widze jak ktos pisze ze java to "beee", a szczegolnie Swing to
> odrazu mnie cisnie....
>
> Jest taki calkiem fajny klient OpenSourceowy SquirrelSQL, wlasnie
> wykonuje w nim
> zapytania na tabelce generujace tabelke widoku zapytania po kilkadziesiat
> wierszy, a dokladniej teraz 100tys wierszy, i dziala to bardzo sprawnie,
> czas
> samego zapytania na bazie to 4sek, i czas wygenerowanie w gui tabelki dla
> tego to 1sek, wiec nie widze sensu chrzanienia ze dziala to wolno, kiedy
> tak nie jest...
>

fajnie, ale nie napisałeś nic o sprzęcie na którym to odpalasz, bo jakoś
nie chce mi klientom tłumaczyć, że owszem, program będzie chodził
sensownie, ale tylko jak wymienią te komputery sprzed kilku lat na nowe
super maszynki tylko po to żeby księgowa mogła odpalić program. Kiedyś
widziałem to w jednej dużej firmie... java przegrała.

> Licze na sprostowanie tego tematu z twojej strony, podaj przynajmniej
> nazwe
> klienta ktorego uzywales, bo sposob w jaki to napisales berdzo tak nie
> lubie, bezsensowne generalizowanie nic nie wnoszace do dyskusji...
>
> Pozdrawiam
> Brzezi

oj tam, jak się kiedyś zapytałem na pclj na temat wydajności swinga czy
wogóle javy to odpowiedzi były głównie takie, że trzeba mieć zaj*** szybki
komputer i trzeba by mieć takich klientów, którzy mogą je sobie wymienić.

dap

unread,
Mar 5, 2007, 1:32:49 PM3/5/07
to
MarcinP wrote:
> dap wrote:
>> dla Oracle...
>>
>> -błędy, błędy i jeszcze raz błędy szczególnie w 10g (zawarte w
>> podstawowych wersjach, powracające po kolejnych łatkach i na nowo
>> usuwane w kolejnych)
>
> Hmmm a mozesz to doprecyzowac ?

Konkretnie:
Na 10r202 po stworzeniu mv w dla user sys na istniejących tabelach nie
da się tego mv usunąć.
Na tym samym wydaniu są problemy w porównaniu z 9i dla wyszukiwania
przez oracle text na mv dla różnych schematów.
Wraz z patchem 10r203 crs na linuxie zaczyna pisać tysiące wpisów do
/var/log/messages z bezwartościowymi informacjami.

W 9ir204 nie mozna uruchomić agenta EM, w wersji 9ir205 naprawili go,
ale w patchu 9ir206 jest znowu zapomniany, pojawia sie ponownie w
9ir207, ale i tak sa problemy jak chce sie uzyc clusterware dla RAC w 9i...

itd. itd... Jak bym chcial to moze i bym podal numery bledow, ale niech
wystarczy informacja, ze ostatni patch ma 900MB podczas gdy instalka ma
650MB :)

Generanie jest to kicha...


> Z pozostałymi rzeczami sie zgadzam, ale uważam Oracla za jedną z
> bardziej stabilnych baz - pod warunkiem nie używania nowych opcji -
> ktore zreszta z release 2 z reguły staja sie uzywalne.

A jeśli mam r1 to co mam zrobić?

--
,= ,-_-. =. gnu.org
((_/)o o(\_)) polanski.biz
`-'(. .)`-' xoops.pl
\_/

Grzesiek G.

unread,
Mar 5, 2007, 4:48:08 PM3/5/07
to
Sławomir Szyszło napisał(a):

> Dnia Mon, 05 Mar 2007 11:44:10 +0100, "Grzesiek G."
> <gruza@spamerom_nie.priv4.onet.pl> wklepał(-a):
>
>> Nie podoba mi się też w wielu bazach (np. Oracle, MS SQL) rozróżnianie
>> loginu do serwera BD od użytkownika bazy danych. Chcąc napisać
>> aplikację, która zarządza użytkownikami w swojej bazie (użytkownikami,
>> na których człowiek powinien się logować do serwera bd) trzeba dać jej
>> "administratorom" dostęp do zarządzania serwerem.
>
> Co rozumiesz przez login do serwera BD? Autoryzacja w Oracle może być wykonywana
> przez system operacyjny. I wcale taki użytkownik nie musi być administratorem
> systemu, wystarczy że w bazie będzie miał odpowiednie uprawnienia.

Autoryzacja przez system operacyjny trochę poprawia sprawę tam, gdzie
można ją zastosować. Natomiast jeżeli chodzi o te odpowiednie
uprawnienia: chodzi mi o to, że admin aplikacji musi mieć odpowiednie
uprawnienia na serwerze BD, a nie tylko w schemacie, z którego korzysta
aplikacja. Zakładając nowego użytkownika musi mu dać prawo do
podłączenia się do serwera BD. A zatem musi mieć odpowiednie prawa do
nadawania (i symetrycznie do odbierania) praw na serwerze BD. Jeżeli
serwer ten zarządza kilkoma bazami, to trzeba zorganizować jakoś, aby
admini tych aplikacji nie namieszali sobie nawzajem.

Nie wiem, czy już wyjaśniłem - późna pora:-). Najwyżej jutro spróbuję
jeszcze raz.

Brzezi

unread,
Mar 5, 2007, 5:01:46 PM3/5/07
to
pon, 05 mar 2007 o 18:28 GMT, sg napisał(a):

> fajnie, ale nie napisałeś nic o sprzęcie na którym to odpalasz,

celeron 2.5GHz
baza na zdalnym hoscie

> bo jakoś nie chce mi klientom tłumaczyć, że owszem, program będzie
> chodził sensownie, ale tylko jak wymienią te komputery sprzed kilku lat
> na nowe super maszynki tylko po to żeby księgowa mogła odpalić program.
> Kiedyś widziałem to w jednej dużej firmie... java przegrała.

komputer ktory uciagnie sprawnie programy w javie mozna kupic do 1k pln, sa
np. na aukcjach takie fajne delle poleasingowe, za jakies 700zl mozna kupic
pentiuma 1.5-2GHz z 256-512MB ramu(czesto razem z monitorem), dorzucic
jeszcze troszeczke ramu, i nie widze probemu zeby jakikolwiek program mial
problemy z dzialanie

>> Licze na sprostowanie tego tematu z twojej strony, podaj przynajmniej
>> nazwe klienta ktorego uzywales, bo sposob w jaki to napisales berdzo tak
>> nie lubie, bezsensowne generalizowanie nic nie wnoszace do dyskusji...

> oj tam, jak się kiedyś zapytałem na pclj na temat wydajności swinga czy
> wogóle javy to odpowiedzi były głównie takie, że trzeba mieć zaj***
> szybki komputer

zdania sa zawsze podzielone, ty przytaczasz tylko te negatywne, zapominajac
ze czesc ludzi pisze tez ze nie ma u nich problemu...

> i trzeba by mieć takich klientów, którzy mogą je sobie wymienić.

z mojej perspektywy, z tego co robie, nie oplaca sie wspolpracowac z
klientem ktorego nie stac na sredniej klasy (1k pln) komputer, tzn nawet
nie to ze sie nie oplaca, poprostu klienta nie stac na plikacje...

poza tym, teraz jest trend robienia aplikacji cienki-klient (najczesciej
web) + server, wtedy aplikacja pojdzie nawet na 200MHz z 64MB ramu...

no oczywiscie potrzebny jest wtedy odpowiedni server, ktory bedzie
obslugiwal tez baze danych, zeby nie byc calkowicie OT :>

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ A sect or party is an elegant incognito ]
[ Ekg: #3781111 ][ devised to save a man from ]
[ LinuxUser: #249916 ][ the vexation of thinking. ]
[ -- Ralph Waldo Emerson, ]
[ Journals, 1831 ]

Artur Muszynski

unread,
Mar 5, 2007, 5:06:40 PM3/5/07
to
hubert depesz lubaczewski wrote:
> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>
> stwierdziłem, że tyczy się to też baz danych.
>
> czy możecie podać czego nie lubicie w swoich bazach?

SQL Server: Brak wielu przydatnych funkcji znanch z innych silników (MD5(),
REGEXP).
MySQL: 2 podstawowe enginy w jednym produkcie to o jeden za dużo, brak
indeksowanych widoków czy indeksów funkcyjnych.
PgSQL: Jawnie określane klasy indeksów, zupełny brak optymalizacji COUNT
Oracle w zasadzie nie używam, ale właśnie dlatego, że odrzuca mnie
niewytłumaczalna waga tego produktu, brak rozróżnienia między "connectivity
library" a klientem i niesamowita toporność narzędzi graficznych.

artur

sg

unread,
Mar 5, 2007, 5:41:07 PM3/5/07
to
Dnia 05-03-2007 o 23:01:46 Brzezi <usunto...@enter.net.pl> napisał(a):

> pon, 05 mar 2007 o 18:28 GMT, sg napisał(a):
>
>> fajnie, ale nie napisałeś nic o sprzęcie na którym to odpalasz,
>
> celeron 2.5GHz
> baza na zdalnym hoscie
>
>> bo jakoś nie chce mi klientom tłumaczyć, że owszem, program będzie
>> chodził sensownie, ale tylko jak wymienią te komputery sprzed kilku lat
>> na nowe super maszynki tylko po to żeby księgowa mogła odpalić program.
>> Kiedyś widziałem to w jednej dużej firmie... java przegrała.
>
> komputer ktory uciagnie sprawnie programy w javie mozna kupic do 1k pln,
> sa
> np. na aukcjach takie fajne delle poleasingowe, za jakies 700zl mozna
> kupic
> pentiuma 1.5-2GHz z 256-512MB ramu(czesto razem z monitorem), dorzucic
> jeszcze troszeczke ramu, i nie widze probemu zeby jakikolwiek program
> mial
> problemy z dzialanie
>

to dlaczego co chwilę mając podobny komputer mam problemy z programami
javovymi, które są tak potwornie wolne, że aż nie chcę się tej javy
dotykać? Kwestia napisania porządnie programu i dlatego nikt tego nie
potrafi zrobić?

>>> Licze na sprostowanie tego tematu z twojej strony, podaj przynajmniej
>>> nazwe klienta ktorego uzywales, bo sposob w jaki to napisales berdzo
>>> tak
>>> nie lubie, bezsensowne generalizowanie nic nie wnoszace do dyskusji...
>> oj tam, jak się kiedyś zapytałem na pclj na temat wydajności swinga czy
>> wogóle javy to odpowiedzi były głównie takie, że trzeba mieć zaj***
>> szybki komputer
>
> zdania sa zawsze podzielone, ty przytaczasz tylko te negatywne,
> zapominajac
> ze czesc ludzi pisze tez ze nie ma u nich problemu...
>

no dobrze, wierzę że nie mają problemu, ale dlaczego ja mam? Czy możesz mi
pokazać jakąś aplikację javovą, która bezproblemowo i szybko działa?

>> i trzeba by mieć takich klientów, którzy mogą je sobie wymienić.
>
> z mojej perspektywy, z tego co robie, nie oplaca sie wspolpracowac z
> klientem ktorego nie stac na sredniej klasy (1k pln) komputer, tzn nawet
> nie to ze sie nie oplaca, poprostu klienta nie stac na plikacje...
>

z jednej strony prawda, ale stawianie klienta przed wymianą ponad 100
komputerów, bo program jest javovy to już inny problem.

> poza tym, teraz jest trend robienia aplikacji cienki-klient (najczesciej
> web) + server, wtedy aplikacja pojdzie nawet na 200MHz z 64MB ramu...
>

prawda, ale wtedy wracamy do podstaw, czyli, że często najlepszym
rozwiązaniem jest rezygnacja z javy.

Brzezi

unread,
Mar 5, 2007, 6:20:42 PM3/5/07
to
pon, 05 mar 2007 o 23:41 GMT, sg napisał(a):
> to dlaczego co chwilę mając podobny komputer mam problemy z programami
> javovymi, które są tak potwornie wolne, że aż nie chcę się tej javy
> dotykać?

moze masz pecha, nie wiem...
ja, czy program jest napisany w javie, czy nie, rozpoznaje tylko tylko po
wygladzie, chociaz z tym tez czasami trudno...


> no dobrze, wierzę że nie mają problemu, ale dlaczego ja mam? Czy możesz mi
> pokazać jakąś aplikację javovą, która bezproblemowo i szybko działa?

chociazby ten SquirrelSQL, zeby byc w temacie...

Eclipse/NetBeans, to sa spore kobyly, a kiedys popelnilem spora aplikacje w
NetBeansie dzialajac na PIII 900MHz, z chyba 512MB ramu, i dzialalo to
bardzo sprawnie...

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ Remembering is for those who have ]
[ Ekg: #3781111 ][ forgotten. ]
[ LinuxUser: #249916 ][ -- Chinese proverb ]

Krzysztof Raczkowski

unread,
Mar 5, 2007, 10:48:19 AM3/5/07
to
hubert depesz lubaczewski napisał(a):

> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>
> stwierdziłem, że tyczy się to też baz danych.
>
> czy możecie podać czego nie lubicie w swoich bazach?
>

MS SQL:

1. Sposób blokowania tabel, trzeba robić różne sztuczki żeby
optymalizator zechciał użyć indeksu i zablokował tylko jeden wiersz przy
update w tabeli jednego wiersza (przynajmniej w MSSQL2000 w 2005
dokładnych testów jeszcze nie robiłem ale podejrzewam że jest podobnie)

Postgres:

1. Brak możliwości łatwego zwrócenia przez procedurę/funkcję rowsetu
(idealne by było tak jak w MSSQL)

MySQL:

1. Upgrade z wersji jakiejś 4.* do 5.* (nie pamiętam dokładnie numerków)
spowodował że niektóre zapytania przestały się wykonywać (błąd składni).
Były to zapytania gdzie złączenia były robione dwoma sposobami przez
'joiny' i poprzez warunki w where


--
Pozdrawiam
K.R.

Herakles

unread,
Mar 6, 2007, 4:04:59 AM3/6/07
to
hubert depesz lubaczewski wrote:

> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>
> stwierdziłem, że tyczy się to też baz danych.
>
> czy możecie podać czego nie lubicie w swoich bazach?
>
> aby nie było, że szukam amunicji na "wrogów", podaję, co mnie wnerwia w
> postgresie:
> - cały czas słychać, że są różne rozwiązania replikacyjnie - w tym
> multi-master. realnie - nie ma żadnego multi-master, a to co jest
> oszukuje robiąc replikację zapytań a nie danych.
> - brak możliwości podpowiadania planerowi czego użyć
> - mvcc i update'y
> - brak backupów przyrostowych (tzn. wiem o backupowaniu wal'ami które
> działa ok, ale wolałbym przyrostowe sql'e)
> - konieczność pobierania danych z tabel nawet jeśli teoretycznie są w
> indeksie który jest użyty do scan'u.

dorzucam
- brak zautomatyzowanego usuwania starych wersji rekordów.
- wolny count (ale można to ominąć).
- kiepski dblink.
- Brak możliwości wybrania locale per połączenie, a w ogóle per baza.
- Brak zmiennych lokalnych, podobno mają zrobić.

Ale zalet ma dużo więcej niż wad:
- masa rozszerzeń dostępnych w sieci(i nie pisze tu tylko o contribie a
raczej o pgFoudary, temat morze).
- przyjazny interfejs C do własnych rozszerzeń.
- Bardzo dobry manual.
- Bardzo szybki silnik, który nie muli przy dużych obciążeniach
- Skąpiluje go przedszkolak.
- Dobrze se radzi z ogromnymi bazami.
i tak dalej i tak dalej...

Herakles

unread,
Mar 6, 2007, 4:09:08 AM3/6/07
to
Jacek Dębowczyk wrote:

> hubert depesz lubaczewski <dep...@depesz.com> napisał(a):
>> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
>> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
>> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>>
>> stwierdziłem, że tyczy się to też baz danych.
>>
>> czy możecie podać czego nie lubicie w swoich bazach?
>
> Jeśli chodzi o PostgreSQL, do wymienionych dorzucę jeszcze brak
> implementacji derived keys. Przez to 'UPDATE t SET col=col+1' na
> kolumnie z kluczem unikalnym na ogół nie jest wykonalne bez
> kombinowania.
>

co gorsze

Update x set sort_order=sort_order+1
from (select x_id, sort_order from x order by sort_order desc) as sel
where x.x_id=sel.x_id
też nie działa.

Grzesiek G.

unread,
Mar 6, 2007, 5:43:51 AM3/6/07
to
Brzezi napisał(a):

> pon, 05 mar 2007 o 18:28 GMT, sg napisał(a):
>
>> fajnie, ale nie napisałeś nic o sprzęcie na którym to odpalasz,
>
> celeron 2.5GHz
> baza na zdalnym hoscie
>
>> bo jakoś nie chce mi klientom tłumaczyć, że owszem, program będzie
>> chodził sensownie, ale tylko jak wymienią te komputery sprzed kilku lat
>> na nowe super maszynki tylko po to żeby księgowa mogła odpalić program.
>> Kiedyś widziałem to w jednej dużej firmie... java przegrała.
>
> komputer ktory uciagnie sprawnie programy w javie mozna kupic do 1k pln, sa
> np. na aukcjach takie fajne delle poleasingowe, za jakies 700zl mozna kupic
> pentiuma 1.5-2GHz z 256-512MB ramu(czesto razem z monitorem), dorzucic
> jeszcze troszeczke ramu, i nie widze probemu zeby jakikolwiek program mial
> problemy z dzialanie
>

Gorzej, jak to są jeszcze SDRAMy:-(.

[...]


>> i trzeba by mieć takich klientów, którzy mogą je sobie wymienić.
>
> z mojej perspektywy, z tego co robie, nie oplaca sie wspolpracowac z
> klientem ktorego nie stac na sredniej klasy (1k pln) komputer, tzn nawet
> nie to ze sie nie oplaca, poprostu klienta nie stac na plikacje...

Przy jednym komputerze nie ma co mówić - chyba, że piszesz programy na
półkę. Przykro, żeby X klientów wybrało produkt konkurencji, bo ma
mniejsze wymagania sprzętowe.

Czasami jest też polityczna sytuacja, że jeszcze klient ma pieniądze w
worku na software, a nie ma już na sprzęt - ale takiej polityki nie
lubię, więc już kończę:-(...

A czasami klient po prostu mówi, że musi chodzić na takim to a takim
sprzęcie (bo taki ma) i jest to wymaganie jak każde inne.

>
> poza tym, teraz jest trend robienia aplikacji cienki-klient (najczesciej
> web) + server, wtedy aplikacja pojdzie nawet na 200MHz z 64MB ramu...
>

Nie zauważam trendu robienia cienkich klientów nie pod web. Zapewne
taniej jest zarządzać serwerem terminali,

> no oczywiscie potrzebny jest wtedy odpowiedni server, ktory bedzie
> obslugiwal tez baze danych, zeby nie byc calkowicie OT :>

Oczywiście:-)

Grzesiek G.

unread,
Mar 6, 2007, 5:49:43 AM3/6/07
to
Krzysztof Raczkowski napisał(a):

> hubert depesz lubaczewski napisał(a):
>> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
>> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
>> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>>
>> stwierdziłem, że tyczy się to też baz danych.
>>
>> czy możecie podać czego nie lubicie w swoich bazach?
>>
>
> MS SQL:
>
> 1. Sposób blokowania tabel, trzeba robić różne sztuczki żeby
> optymalizator zechciał użyć indeksu i zablokował tylko jeden wiersz przy
> update w tabeli jednego wiersza (przynajmniej w MSSQL2000 w 2005
> dokładnych testów jeszcze nie robiłem ale podejrzewam że jest podobnie)
>

Jakie sztuczki? Chodzi o hint ROWLOCK? Czy są z nim jakieś problemy?

MarcinP

unread,
Mar 6, 2007, 8:09:51 AM3/6/07
to
dap wrote:
> Na 10r202 po stworzeniu mv w dla user sys na istniejących tabelach nie
> da się tego mv usunąć.

to feature a nie blad ;) user sys jest dosc specyficzny juz od dawna ;)

> Na tym samym wydaniu są problemy w porównaniu z 9i dla wyszukiwania
> przez oracle text na mv dla różnych schematów.
> Wraz z patchem 10r203 crs na linuxie zaczyna pisać tysiące wpisów do
> /var/log/messages z bezwartościowymi informacjami.
>
> W 9ir204 nie mozna uruchomić agenta EM, w wersji 9ir205 naprawili go,
> ale w patchu 9ir206 jest znowu zapomniany, pojawia sie ponownie w
> 9ir207, ale i tak sa problemy jak chce sie uzyc clusterware dla RAC w 9i...

Inteligentny Agent działał mi we wszystkich wersjach 9i, fakt ze jego
nazwa jest niezbyt odpowiednia ale troche optymizmu ;)


> itd. itd... Jak bym chcial to moze i bym podal numery bledow, ale niech
> wystarczy informacja, ze ostatni patch ma 900MB podczas gdy instalka ma
> 650MB :)

hmmm no to wymienili cos czego nie zainstalowales ;) - ale to prawda ze
patche male nie sa ;) po prostu chyba nie oplaca im sie robic przyrostow


> Generanie jest to kicha...
>

Moze i jest to kicha, ale ta kicha potrafi działać z bazami od 100 MB do
20 TB (takich dotykalem wlasnymi rekami), czego nie da sie powiedzieć o
wielu innych bazach - co oczywiscie nie znaczy ze Oracle jest jedyny.

> A jeśli mam r1 to co mam zrobić?
>
>

Upgrade panie, upgrade,
Wiem mowie jak support Oracla - po prostu nalezy ustabilizowac dzialanie
bazy a nie wygrywac patche jak leci.


pozdrawiam,
Marcin 'PIORO' Przepiorowski

Krzysztof Raczkowski

unread,
Mar 6, 2007, 8:16:09 AM3/6/07
to
Grzesiek G. napisał(a):

Owszem z moich eksperymentów na SQL2000 wynika że blokowanie
pojedynczych rekordów działa pod warunkiem że optymalizator skorzysta z
indeksu (to taka 'gwiazdka' w dokumentacji :) ). Nie chodzi tu dokładnie
o ROWLOCK bo on dotyczy select.

Załóżmy że mamy tabelę tab z kolumnami k1 i k2. Jeżeli na k1 mamy indeks
a na k2 nie to update na takiej tabeli na zasadzie

update tab set k2=cos where k2=cos_innego

powoduje blokadę większej ilości wierszy niż to wynika z ilości wierszy
aktualizowanych. Taki update można przerobić na coś takiego:

update tab set k2=cos where k1 in (select k1 from tab(nolock) where k2 =
cos_innego)

Co działa w sposób oczekiwany ... i to nazywam sztuczkami...

--
Pozdrawiam
K. Raczkowski

Grzesiek G.

unread,
Mar 6, 2007, 9:24:01 AM3/6/07
to
Krzysztof Raczkowski napisał(a):

> Grzesiek G. napisał(a):
>> Krzysztof Raczkowski napisał(a):
>>> hubert depesz lubaczewski napisał(a):
>>>> pewien koleś ostatnio napisał, że aby wiedzieć co sie używa i czemu
>>>> trzeba umiec podać 5 rzeczy których sie nienawidzi w używanym języku.
>>>> (http://use.perl.org/~brian_d_foy/journal/32556?from=rss).
>>>>
>>>> stwierdziłem, że tyczy się to też baz danych.
>>>>
>>>> czy możecie podać czego nie lubicie w swoich bazach?
>>>>
>>>
>>> MS SQL:
>>>
>>> 1. Sposób blokowania tabel, trzeba robić różne sztuczki żeby
>>> optymalizator zechciał użyć indeksu i zablokował tylko jeden wiersz
>>> przy update w tabeli jednego wiersza (przynajmniej w MSSQL2000 w 2005
>>> dokładnych testów jeszcze nie robiłem ale podejrzewam że jest podobnie)
>>>
>>
>> Jakie sztuczki? Chodzi o hint ROWLOCK? Czy są z nim jakieś problemy?
>>
>> Pozdrawiam
>>
>
> Owszem z moich eksperymentów na SQL2000 wynika że blokowanie
> pojedynczych rekordów działa pod warunkiem że optymalizator skorzysta z
> indeksu (to taka 'gwiazdka' w dokumentacji :) ). Nie chodzi tu dokładnie
> o ROWLOCK bo on dotyczy select.
>

AIK dotyczy FROM, więc można go użyć także w UPDATE.

> Załóżmy że mamy tabelę tab z kolumnami k1 i k2. Jeżeli na k1 mamy indeks
> a na k2 nie to update na takiej tabeli na zasadzie
>
> update tab set k2=cos where k2=cos_innego
>
> powoduje blokadę większej ilości wierszy niż to wynika z ilości wierszy
> aktualizowanych. Taki update można przerobić na coś takiego:
>

Domyślne blokowanie większej liczby wierszy (konkretnie całych stron)
pozwala uniknąć zjawiska zwanego "eskalacją blokad" - także nie zawsze
IMO jest złe.

> update tab set k2=cos where k1 in (select k1 from tab(nolock) where k2 =
> cos_innego)
>
> Co działa w sposób oczekiwany ... i to nazywam sztuczkami...

Acha, postaram się zapamiętać, jakbym kiedyś potrzebował:-).

Paweł Matejski

unread,
Mar 6, 2007, 11:52:04 AM3/6/07
to
Herakles wrote:
>
> dorzucam
> - brak zautomatyzowanego usuwania starych wersji rekordów.

Też mi to doskwiera. Ale próbowałem się zastanowić, czy da się zrobić inaczej.
Jedyne rozwiązanie, jakie przyszło mi do głowy, to przechowywanie w pamięci
skasowanych rekordów i co pewien czas (albo co commit) sprawdzanie czy jakieś
nadają się do fizycznego usunięcia. Myślę, że takie rozwiązanie nie jest
akceptowalne. Choć jako opcja, dla niektórych tabel mogło by poprawić wydajność.

> - wolny count (ale można to ominąć).

A tu mam jedno pytanie - wiem, że count na całej tablicy jest wolniejszy np. od
mysql, ale jak jest w np. w oraclu?
I czy też jest wolniejszy w przypadku zapytania z warunkiem, szczególnie gdy
warunek nie wykorzystuje indexu (tu oracle z tego co wiem potrafi w ogóle nie
sięgać do tabeli)?

> - kiepski dblink.
> - Brak możliwości wybrania locale per połączenie, a w ogóle per baza.

Przecież można ustawić client_encoding!

> - Brak zmiennych lokalnych, podobno mają zrobić.

--
P.M.

Przemyslaw Popielarski

unread,
Mar 6, 2007, 11:59:53 AM3/6/07
to
Krzysztof Raczkowski wrote:
> 1. Upgrade z wersji jakiejś 4.* do 5.* (nie pamiętam dokładnie
> numerków) spowodował że niektóre zapytania przestały się wykonywać
> (błąd składni). Były to zapytania gdzie złączenia były robione dwoma
> sposobami przez 'joiny' i poprzez warunki w where

To bylo udokumentowane dobrze i zasadniczo gdybys napisal zgodnie ze
standardem wczesniej, to bys nie mial potem problemu. 5.x jest po prostu
bardziej standardowa.

--
./ premax
./ pre...@hot.pl
./ koniec i bomba, a kto czytal ten traba. w.g.

Sławomir Szyszło

unread,
Mar 6, 2007, 12:09:35 PM3/6/07
to
Dnia Mon, 05 Mar 2007 22:48:08 +0100, "Grzesiek G."
<gruza@spamerom_nie.priv4.onet.pl> wklepał(-a):

>Autoryzacja przez system operacyjny trochę poprawia sprawę tam, gdzie

>można ją zastosować. Natomiast jeżeli chodzi o te odpowiednie
>uprawnienia: chodzi mi o to, że admin aplikacji musi mieć odpowiednie
>uprawnienia na serwerze BD, a nie tylko w schemacie, z którego korzysta
>aplikacja. Zakładając nowego użytkownika musi mu dać prawo do
>podłączenia się do serwera BD. A zatem musi mieć odpowiednie prawa do
>nadawania (i symetrycznie do odbierania) praw na serwerze BD. Jeżeli
>serwer ten zarządza kilkoma bazami, to trzeba zorganizować jakoś, aby
>admini tych aplikacji nie namieszali sobie nawzajem.

Jakoś nie czuję problemu. :) Jeśli na serwerze działa kilka baz, to przecież
użytkownik-administrator aplikacji ma dostęp tylko do swojej bazy, innym w żaden
sposób nie przeszkadza. Chyba, że miałeś na myśli to, że na jednej bazie działa
kilka aplikacji i posiadają obiekty w różnych schematach.

Nie wiem jak chciałbyś rozwiązać nadawanie uprawnień bazodanowych przez
administratora, który takich uprawnień nie posiada. :)

Krzysztof Raczkowski

unread,
Mar 6, 2007, 1:50:58 PM3/6/07
to
Przemyslaw Popielarski napisał(a):

> Krzysztof Raczkowski wrote:
>> 1. Upgrade z wersji jakiejś 4.* do 5.* (nie pamiętam dokładnie
>> numerków) spowodował że niektóre zapytania przestały się wykonywać
>> (błąd składni). Były to zapytania gdzie złączenia były robione dwoma
>> sposobami przez 'joiny' i poprzez warunki w where
>
> To bylo udokumentowane dobrze i zasadniczo gdybys napisal zgodnie ze
> standardem wczesniej, to bys nie mial potem problemu. 5.x jest po prostu
> bardziej standardowa.
>

1) Nie ja pisałem :)
2) Nie przytoczę SQL bo już go nie ma ... ale na moje oko był prawidłowy.

Tak czy siak jest to pewna słabość MySQL bo to co kiedyś 'uchodziło
płazem' teraz już nie ... więc już się boję jak będzie następny upgrade ...

Jeżeli nie jesteś autorem aplikacji to możesz jedynie zrobić upgrade i
obserwować :) Pewną moją winą było to że nie zrobiłem upgrade do
najnowszej wersji aplikacji tylko najpierw zrobiłem upgrade MySQL

--
Pozdrawiam
K. Raczkowski

Grzesiek G.

unread,
Mar 6, 2007, 2:22:45 PM3/6/07
to
Sławomir Szyszło napisał(a):

> Dnia Mon, 05 Mar 2007 22:48:08 +0100, "Grzesiek G."
> <gruza@spamerom_nie.priv4.onet.pl> wklepał(-a):
>
>> Autoryzacja przez system operacyjny trochę poprawia sprawę tam, gdzie
>> można ją zastosować. Natomiast jeżeli chodzi o te odpowiednie
>> uprawnienia: chodzi mi o to, że admin aplikacji musi mieć odpowiednie
>> uprawnienia na serwerze BD, a nie tylko w schemacie, z którego korzysta
>> aplikacja. Zakładając nowego użytkownika musi mu dać prawo do
>> podłączenia się do serwera BD. A zatem musi mieć odpowiednie prawa do
>> nadawania (i symetrycznie do odbierania) praw na serwerze BD. Jeżeli
>> serwer ten zarządza kilkoma bazami, to trzeba zorganizować jakoś, aby
>> admini tych aplikacji nie namieszali sobie nawzajem.
>
> Jakoś nie czuję problemu. :) Jeśli na serwerze działa kilka baz, to przecież
> użytkownik-administrator aplikacji ma dostęp tylko do swojej bazy, innym w żaden
> sposób nie przeszkadza. Chyba, że miałeś na myśli to, że na jednej bazie działa
> kilka aplikacji i posiadają obiekty w różnych schematach.

To się zgadza. Tylko administrator aplikacji dokładając nowego
użytkownika musi mu dać prawo connect do serwera. A może ten użytkownik
już to prawo ma dla innej aplikacji (np. wiele aplikacji może mieć
użytkownika "Prezes")?

>
> Nie wiem jak chciałbyś rozwiązać nadawanie uprawnień bazodanowych przez
> administratora, który takich uprawnień nie posiada. :)

Zobacz jak to zrobione (a przynajmniej było) jest w serwerze Gupta SQL.
Można powiedzieć, że do serwera BD może się łączyć każdy. Ale przy
łączeniu należy podać, z jakiej bazy się chce korzystać (serwer zarządza
wieloma bazami). A same dane uwierzytelniające użytkownika i jego
uprawnienia są przechowywane tylko i wyłącznie w bazie danych. Większe
uprawnienia (admina komputera) są potrzebne tylko do instalacji bazy na
serwerze baz danych. Później baza jest "samowystarczalna". Mniej więcej
odpowiada to sytuacji, kiedy każdy program korzystający z Oracle'a czy
SQL Servera miałby swoją instancję serwera BD. A tak często nie jest ze
względów licencyjnych (przynajmniej jeżeli chodzi o SQL Server).

Sławomir Szyszło

unread,
Mar 6, 2007, 2:48:50 PM3/6/07
to
Dnia Tue, 06 Mar 2007 20:22:45 +0100, "Grzesiek G."
<gruza@spamerom_nie.priv4.onet.pl> wklepał(-a):

>To się zgadza. Tylko administrator aplikacji dokładając nowego

>użytkownika musi mu dać prawo connect do serwera. A może ten użytkownik
>już to prawo ma dla innej aplikacji (np. wiele aplikacji może mieć
>użytkownika "Prezes")?

Teraz rozumiem o co ci chodzi. Z tym, że samo ponowne nadanie uprawnień nic nie
zepsuje, co innego odebranie. Jeśli podstawowe uprawnienia typu connect, select,
insert, update zostaną przypisane do ról, to przyznając/odbierając je można
bezproblemowo zarządzać nawet "wspólnymi" użytkownikami. Co najwyżej uprawnienia
wspólne dla różnych aplikacji mogą być nadmiarowe. Można to zrobić np. tak:

Role:
APP1_STANDARD (zawiera connect, select)
APP1_ADVANCED (zawiera insert, update, delete)
APP2_STANDARD (zawiera connect, select)
APP2_ADVANCED (zawiera insert, update, delete)

Role APP1 dotyczą obiektów aplikacji 1 (np. schematu X), a APP - tylko obiektów
aplikacji 2 (np. schematu Y). W ten sposób odebranie nawet wszystkich ról do
jednej z aplikacji nie blokuje użytkownikowi możliwości korzystania z drugiej.

>Zobacz jak to zrobione (a przynajmniej było) jest w serwerze Gupta SQL.
>Można powiedzieć, że do serwera BD może się łączyć każdy. Ale przy
>łączeniu należy podać, z jakiej bazy się chce korzystać (serwer zarządza
>wieloma bazami). A same dane uwierzytelniające użytkownika i jego
>uprawnienia są przechowywane tylko i wyłącznie w bazie danych. Większe
>uprawnienia (admina komputera) są potrzebne tylko do instalacji bazy na
>serwerze baz danych. Później baza jest "samowystarczalna". Mniej więcej
>odpowiada to sytuacji, kiedy każdy program korzystający z Oracle'a czy
>SQL Servera miałby swoją instancję serwera BD. A tak często nie jest ze
>względów licencyjnych (przynajmniej jeżeli chodzi o SQL Server).

To jest po prostu inna koncepcja działania bazy, a nie wada jako taka. Podobnie
działa OIDP MySQL.

Sławomir Szyszło

unread,
Mar 6, 2007, 3:29:01 PM3/6/07
to
Dnia Mon, 05 Mar 2007 18:22:11 +0100, Michał Zaborowski
<michal.zaborowski@_nospam_wp.pl> wklepał(-a):

> 80 procedur w jednym schemacie - kiepsko mi się z czymś takim
>pracuje. Chciałbym mieć kilka schematów - porządkujących całość
>w jakiś logiczny sposób. Można wtedy zarządzać dostępem na poziomie
>pakietu... Do tego zmienne... Jest tego troszkę. Można sobie radzić
>ale w większości to półśrodki.

Moja aplikacja ma jakieś 300-400 pakietów... procedur i funkcji wewnątrz nigdy
nie liczyłem, ale niech będzie średnio 5. Jakby miała być każda osobno to by
była masakra. Każdy pakiet ma określone przeznaczenie - obsługuje daną tabelę,
moduł aplikacji lub też zawiera jakąś logikę obliczeniową, która jest
wykorzystywana głównie przez procesy przetwarzające dane w tle.

Ponadto - "samotna" procedura/funkcja jest w ogólności dostępna dla każdego
(pomijam kwestię uprawnień). Pakiet pozwala ukryć funkcje pełniące role
pomocnicze, a udostępnić tylko black-boxy.

Jak dla mnie - przynajmniej jeśli chodzi o Oracle - pakiet ma jedną, podstawową
zaletę - pozwala na tworzenie zmiennych globalnych. Tak, wiem jak to bywa ze
zmiennymi globalnymi, ale najważniejsza ich zaleta jest taka, że pozwalają
przechowywać *stan*, który zostaje zachowany nawet po zakończeniu wykonywania
jakiejś procedury/funkcji i aplikacja cały czas ma do niego dostęp.

Co więcej, nie musi to być prosta zmienna typu number, ale rekord, tablica
zmiennych prostych/rekordów, obiekt czy co najciekawsze - tablica asocjacyjna.
To ostatnie zastosowanie znacząco przyspiesza pewne operacje, które użytkownik
wykonuje w ciągu pracy wielokrotnie. I tak dla modułu, który potrzebuje częstego
wykorzystania mapowania np. kod dokumentu -> numer konta księgowego tworzy się
taką tabelę z mapowaniem, wypełnia ją przy pierwszym załadowaniu (uruchomieniu)
pakietu. Potem to mapowanie odbywa się bez wielokrotnego użycia zapytań, bo
wszystko jest już w pamięci dla sesji (każda sesja ma widzi tylko swój stan
zmiennych pakietowych). Oczywiście to procedura składowana musi z tego mapowania
korzystać, bo jeśli będzie to aplikacja kliencka, to wtedy dochodzi koszt
odwołania się do pakietu w bazie.

W szczególności, jeśli chodzi np. o procesy zamykania miesiąca księgowego,
pierwszy pakiet z całej serii może wyznaczać pewne dane, pamiętać słowniki czy
co tam jeszcze, a kolejne etapy procesu (pakiety) korzystają już z danych
zmagazynowanych w tym pakiecie, zamiast wielokrotnie pobierać je z tabel.

Przy procesach przetwarzających większe ilości danych można te dane ładować
porcjami do pamięci i obrabiać, zamiast czytać je rekord po rekordzie czy
kombinować z jakimś cache'owaniem.

W takiej formie pakiet staje się czymś więcej niż tylko zbiorem funkcji czy
procedur.

P.S.
Tak przejrzałem to co napisałem i brzmi jak jakaś ulotka marketingowa. ;)

Paweł Matejski

unread,
Mar 6, 2007, 9:13:52 PM3/6/07
to
Sławomir Szyszło wrote:

Może, ale po tym tekstcie też zaczęło mi brakować pakietów w postgresie. :)

--
P.M.

Herakles

unread,
Mar 7, 2007, 2:14:12 AM3/7/07
to
Paweł Matejski wrote:

Co mi tam po client_encoding, dla mnie by była bajka, jakby było coś takiego
jak client_locale, które w order by odpowiednio działa.

Reply all
Reply to author
Forward
0 new messages