Przeglądając różne tematy na tym forum, widzę dużą niechęć do MySQL i się zastanawiam dlaczego? Oczywiście mowa tu o aktualnej wersji a nie zaszłościach historycznych. Jedyną alternatywą jest Postgres, gdzie bez problemu można sobie go domówić na hostingu. No, ale czemu na MySQL taki jest hejt na niego?
napiszę z mojej perspektywy
na serwis www, który będzie stał na jakimś hostingu jak najbardziej może być - nie ma problemu z licencjami, serwis zazwyczaj nie jest bardzo wymagający.
dla aplikacji, które będą miały własny serwer, czyli tam gdzie trzeba pobrać mysqla i zainstalować zaczyna się problem z licencjami.
Dla mnie osobiście ma skrzywionego SQLa - np. brak konieczności grupowania po wszystkich kolumnach, które nie są np. sumowane (np. SELECT a, b, c, sum(d) FROM tab
zadziała na mysqlu i chyba tylko na nim).
Co do alternatyw to jest ich znacznie więcej, ba nawet giganty mają darmowe wersje także do użytku komercyjnego.
oprócz "słynnego" grupowania:
- jest nieobliczalny, czasem zapytanie z niewiadomych przyczyn za 1001 razem nie zxadziała
- uwaga na triggery - nie możesz w nich updejtować tabel, które są w zapytaniu wyzwalającym ten trigger. Np http://sqlfiddle.com/#!9/79b4ff/1 pierwsze dwa się wykonają, kolejne dwa nie... (oczywiście na na sqlfiddle, bo tam nie moze byc update)
- brak check
- we view nie zrodlem nie moze byc subquery
- SELECT 'ala'='ALA ' ( i wszelkie tego konsekwencje)
- zjeb*** WITH ROLLUP z HAVINGiem
to tak na szybko - reszte bym musial w zapiskach poszukac
z tymi kolumnami w Group by to fakt - bardzo zły nawyk.
Co do innych baz to korzystam z MSSQL express, ale to raczej dla apek desktopowych z dedykowanym serwerem. No, ale jej nie postawisz na dowolnym hostingu na Linux :)
MySQL preferowałem dla apek webowych (a i tak korzystam z ORMa). Mimo wszystko jakoś nie jestem przekonany do porzucenia tego na rzecz Postgresa (może przez przyzwyczajenia i wygodny PMA).
Alternatywą dla MySQL jest raczej SQLite.
Kolejność jest mniej więcej taka:
- baza web read-only: XML/JSON, SQLite
- wizytówka strony, mały sklep, blog, forum z małą liczbą transakcji: MySQL
- niskobudżetowa baza transakcyjna: PostgreSQL
- niskobudżetowa baza transakcyjna z perspektywą wymogu kupna komercyjnej, droższej wersji pakietu: darmowe wersje DB2, Oracle, MS SQL
- baza klasy enterprise (cluster, integracja z LDAP, replikacja, szybkie i małe backupy, HA): to już każdy sobie coś tam wybierze w zależności od portfela
Można by się zastanawiać dlaczego nie wszędzie PostgreSQL. To jest dobre pytanie. Podejrzewam że ma pewne braki w rozwiązaniach enterprise, ale nie znam szczegółów.
Dlaczego PostgreSQL nie jest stosowany tak często w najtańszych rozwiązaniach? Pewnie zaszłość historyczna - każdy PHPowiec zna przede wszystkim MySQL.
Ciekawostka: PostgreSQL ma emulację składni Oracle.
Witam,
Alternatywą dla MySQL i ogólnie dla relacyjnych baz danych są bazy typu NoSQL jak np MongoDB no ale to już zależy do czego jest Ci potrzebna.