W ostatnim czasie zastanawiałem się nad zmianą bazy danych serwera Giazrmy. Obecnie stan gry przechowywany jest w bazie danych Mysql oraz pliku binarnym. Mógłbym jednak używać bazy tupu noSQL, ponieważ nie używam skomplikowanych zapytań łączących wiele tabel (nie korzystam z relacyjności bazy). Żeby sprawdzić, czy w ogóle mi się taka zmiana opłaca przeprowadziłem następujący test dla trzech typów źródeł danych: bazy Mysql, bazy MongoDB oraz pliku binarnego.
Test sprawdza szybkość odczytu / zapisu bloków danych (update i select).
-
Tworzę testowy zbiór danych składający się z dużej liczby binarnych bloków danych o stałej długości
-
Sekwencja testowa (powtarzana wielokrotnie):
Parametry maszyny:
Intel Core 2 Duo 2.2GHz, 3GB ram
Parametry testów:
liczba powtórzeń odczytu / zapisu: 100
rozmiar bloku: 10000B
liczba bloków: 300
Implementacja:
kod testujący napisany został w PHP. Tutaj można pobrać kod źródłowy
Średni czas dla wykonania sekwencji testowej:
Mysql: 140ms
MongoDB: 80ms
Plik: 8ms
Oczywiście należy traktować te wyniki orientacyjnie, bo czasy zależą od chwilowego obciążenia systemu, sposobu instalacji serwerów baz (np. czy są na tej samej czy innej maszynie) i innych czynników.
Troll