Witam
Ostatnio po pytaniach "którą bazę wybrać" wpadłem na pomysł przeprowadzenia w miarę bezstronnego testu wybranych darmowych serwerów baz danych (min. MySQL 4.1, MySQL5.0, PostgreSQL, FireBird, MSDN, Paradox (to tak dla porównania), SQLite, Oracle 10g EE) a potem porównanie ich z komercyjnymi systemami (MSSQL, Oracle 10g r2, DB2). Lista baz do dyskusji, ale wymienione to wg. mnie te najbardziej znane i mające najwięcej rynku.
Porównywane były by w trzech płaszczyznach:
- możliwości - czyli
a) zgodność ze standardem SQL
b) transakcje
c) procedury wbudowane
d) wyzwalacze
e) indexy i więzy integralności
f) widoki
g) obsługiwane języki
h) archiwizacja
i) itd
- wydajność
a) mała baza (ok 50MB)
b) średnia baza (ok 500MB)
c) duża baza (ok 2GB)
na każdej z nich wykonywane były by operacje typu (i mierzony czas ich wykonania)
a) prosty SELECT z jednej tabeli
b) złożony SELECT z kilku (kilkunastu) tabel z warunkami i sortowaniem wg konkretnej kolumny
c) SELECT z widoku (jeśli baza posiada widoki)
d) INSERT do tabeli bez wyzwalaczy
e) INSERT do tabeli z wyzwalaczami (jeśli baza obsługuje wyzwalacze)
f) UPDATE
g) DELETE
h) DELETE rekordu powiązanego więzami integralności
Jak to sobie wyobrażam
Został by stworzony schemat bazy testowej i byłby on taki sam dla wszystkich typów baz. Następnie pustą bazę wypełniało by się danymi do określonego rozmiaru. Dla wszystkich SZDB dane były be dokładnie te same. Następnie została by napisana aplikacja testująca konkretną bazę. Teraz każda z osób uczestniczących w projekcie miała by za zadanie na swoim kompie przetestować WSZYSTKIE bazy i wyniki przekazać do dalszej obróbki. Bazy testowane były by w dwóch konfiguracjach - 1. podstawowej, czyli zainstalowana i tyle, 2. po tuningu SZDB.
W wyniku mieli byśmy czasy wykonania poszczególnych zapytań na konkretnej bazie z konkretną ilością danych i na konkretnej maszynie :) (zakręcone trochę - wiem). Jako wynik końcowy były by średnie ogólne, dla konkretnego systemu (windows/linux bo nic innego chyba nie będzie), dla procka (intel / Amd + może podział na rodzinę) i jak ktoś będzie chciał to dane jednostkowe w postaci źrodłowej.
Czego oczekuję od uczestników
Przede wszystkim poważnego podejścia oraz świadomości, że trzeba będzie w to włożyć trochę pracy i czasu. To co napisałem wyżej to są bardzo ogólne założenia. Wszystkie szczegóły są do omówienia. Potrzebni są ludzie, którzy znają się choć trochę na bazach danych, przydali by się też spece, którzy potrafią wycisnąć z danej bazy max :). W zależności od ilości osób część lub wszyscy musiała by też napisać program, który testował by konkretną bazę (wytyczne oraz sposób testowania i pomiaru czasu będzie opracowany i taki sam dla wszystkich)
Co mogę zaoferować w zamian
Zaszczytne miejsce na liście uczestników projektu :P. Być może (w zależności od końcowego efektu) powstała by strona projektu (a wierzcie mi, takich porównań w necie jest jak na lekarstwo). Cały projekt jest darmowy, nikt go nie sponsoruje i nikt nikomu nic nie płaci. Jedyne co możecie zyskać to sławę i szacunek milionów zagubionych poszukiwaczy tej jedynej i najlepszej dla nich bazy danych :P
I na koniec mam nadzieję, że będzie jakikolwiek odzew, choćby nawet negatywny ...