memSQL i MariaDB w Django
memSQL
memSQL to nowa baza danych oferująca wysoką wydajność dzięki wykorzystaniu pamięci RAM jako głównego składowiska danych jak i kompilacji zapytań (FAQ). Nie jest powiązana z MySQL, ale oferuje interfejs zgody z tą bazą danych co ułatwia jej wykorzystanie, czy szybkie przetestowanie.
Pobieramy paczkę z bazą danych (trzeba podać adres email, po czym otrzymamy dostęp do naszej kopii memSQL). Wykonujemy podane instrukcje - pobieramy i rozpakowujemy archiwum. Następnie możemy sprawdzić wymagania systemowe:
Serwer działa na porcie 3307. MySQL domyślnie działa na porcie 3306. By połączyć się z serwerem memSQL wystarczy:
mysql -u root -h 127.0.0.1 -P 3307 --prompt="memsql> "
memSQL i Django
Django nie posiada backendu dla memSQL. Można wykorzystać backend MySQL, ale nie będzie to rozwiązanie w pełni sprawne. Konfiguracja bazy danych w settings.py wygląda następująco:
DEBUG = False
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3307',
}
}
DEBUG trzeba wyłączyć by "warningi" zwracane przez serwer nie generowały wyjątków (a napotkamy np. "Feature 'REFERENCES' is not supported by MemSQL. Execution will continue, but the feature will be ignored."). Pozostała część jest standardowa. Zmieniamy port i host tak by projekt Django łączył się z memSQL a nie MySQL.
Jeżeli na komputerze mamy MySQL 5.0.3 lub nowsze i nowszą wersję Django (np. 1.4) to framework będzie używał w transakcjach operatora "SAVEPOINT", który nie jest obsługiwany przez memSQL (co da wyjątek "Feature 'SAVEPOINT' is not supported by MemSQL"). Edytujemy kod Django - django/db/backends/mysql/base.py i szukamy:
self.features.uses_savepoints = self.get_server_version() >= (5, 0, 3)
self.features.uses_savepoints = False
memSQL może być dla niektórych aplikacji bardzo korzystnym rozwiązaniem. Dla wdrożeń produkcyjnych potrzebny byłby jednak dedykowany backend.
MariaDB
MariaDB to fork MySQL, binarnie zgodny z tą bazą danych. W odróżnieniu od "rodzica" MariaDB zawiera dodatkowe silniki do przechowywania danych i liczne dodatki - opisane w dokumentacji. W przypadku tego serwera baz danych nie powinno być problemów ze stosowaniem backendu MySQL w Django do jego obsługi.
Comment article