Good bye mySQL!
Od wielu lat wykorzystuję sporadycznie system bazodanowy mySQL. W sumie przez lata ograniczało się to do wykorzystania jego najprostszych możliwości – głównie na potrzeby napisania skryptów w PHP. Jednak kiedy zacząłem bardziej poznawać SQL-owskie systemy bazodanowe doszedłem do wniosku, że… wykorzystywałem chyba duży procent jego możliwości, gdyż… okazuje się on teraz bardzo ubogi.
Zauważone braki mySQL:
1. Tworząc bazę danych można użyć przy polu CHECK do sprawdzenia wartości, ale… to nie zadziała tak jak w innych systemach.
2. Nie da się w mySQL stworzyć funkcji zwracającej tablicę.
3. Nie da się stworzyć TRIGGER-a dla widoku i tabeli tymczasowej.
4. Nie da się ustawić dla pola typu DATE aktualnej daty jako domyślnej wartości.
4. Nie da się ustawić dla pola typu DATE aktualnej daty jako domyślnej wartości.
Pierwszy problem można obejść tworząc odpowiedni TRIGGER. Drugi nie ma sensownego rozwiązania, podobnie jak trzeci. O dysfunkcji związanej z trzecim problemem można znaleźć informację w dokumentacji: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html. Z kolei czwarty problem można dość prosto rozwiązać – trzeba korzystać z pola TIMESTAMP ustawiając jako domyślną wartość CURRENT_TIMESTAMP
To wystarczyło, abym rozważył przeniesienie się na inny system bazodanowy. Jako zwolennik OpenSource i użytkownik Linuksa nie rozważałem migracji na MS SQL. Padło na PostgreSQL. Dla niego powyższe problemy nie istnieją. Do programowania tworzenia skryptów w PHP może i mySQL wystarcza, lecz dla wielu poważniejszych zastosowań okazuje się on nie lepszy niż SQLite.
Co do PHP ostatnio ten język stracił u mnie (w moich notowaniach) na rzecz Pythona. Dla ewentualnych potrzeb związanych ze stronami internetowymi rozważam migrację na Django. Tym bardziej, że odpowiada mi wzorzec MTV. Wybranie systemu bazodanowego w Django to kwestia modyfikacji kilku linii w pliku konfiguracyjnym. O kod SQL odpowiadający za wykonanie operacji na danej bazie danych nie trzeba się w ogóle martwić.
Narzędzie do bazy ma by takie jest zapotrzebowanie.
SQLite jest 100 razy uboższy od MySQLa a ma szaloną renomę z prostego względu – jest lekki i świetnie radzi sobie na smartfonach. Nie ma sensu kozaczyć z bazą jeśli wiadomo, że wiele z jej zalet nie jest nam potrzebne. MySQL na to istnieje i na to został stworzony żeby obsługiwać rzeczy lekkie.