Kiedyś inwestowało się w MySQL ze względu na jego znaczącą przewagę szybkości w porównaniu do pgSQL, aktualnie sytuacja całkowicie się zmieniła i ich prędkości są porównywalne, a widziałem nawet benchmarki przemawiające na korzyść pgSQL. Poza tym jeżeli jesteś programistą SQL (a nie osobą stawiającą gotowe rozwiązania) to pgSQL jest pełnym w tego znaczeniu serwerem SQL, a MySQL to marna atrapa. MySQL wspiera tylko minimum, które jest potrzebne. Poza tym przed MySQL nadal jest niepewna przyszłość, w szczególności od czasów przejęcia go przez Oracle, które posiada własne rozwiązania. A Oracle niestety decyduje o swoich produktach bardzo późno, bo dopiero po ponad roku od przejęciu Sun Microsystems zdecydowali co będą robić z OpenOffice, tak właściwie zabijając go, bo ODF już dawno go sforkowało i znacznie przyśpieszyło jego rozwój.
Wlasnie to ostatnio dosyc znane zjawisko z tym Sun i nie tylko MySQL. Wiecej chyba tez programow jest kompatybilnych z MySQL np TeamSpeak3 - chodzi mi tez o to, co bardziej oplaca sie na serwer stawiac, no i Wasze doswiadczenia z bazami. Kumpel ostatnio pisal prace magisterska na temat baz i zachwalal wlasnie postgresa - zwlaszcza jego instalacje i rozmiar w stosunku do MySQL.
soban_ wrote:Kumpel ostatnio pisal prace magisterska na temat baz i zachwalal wlasnie postgresa - zwlaszcza jego instalacje i rozmiar w stosunku do MySQL.
Moja dawna koleżanka zwykła mawiać: "nieważna wielkość magicznej pałeczki, liczą się jej magiczne zdolności..."
Jeśli instalacja i rozmiar serwera bazodanowego to wg twojego kumpla najważniejsze zalety, to gratuluję mu pracy magisterskiej. Musi być genialna.
No nie, ale to sa argumenty - ktore przytoczyl miedzy innymi, dlatego dalem temat na forum. Oczywiscie masz racje z tym, chociaz porownanie tego do magicznosci pauki mnie rozbawilo ; P
Wolę MariaDB, pewna licencja, nie ma w niej podziału na darmową i komercyjną wersję (jak w Mysql), i ma sporą przyszłość.
Do tego gdzieś czytałem, pojawił się w niej nowy format tabel, podobny do MyiSam ale obsługujący transakcje tak samo jak InnoDB.
Zaczęła jako fork Mysql, ale ponieważ Oracle pozbyło się głownych Developerów Mysql, i wlaśnie Ci Developerzy teraz tworzą MariadDB i Perconę, to raczej zapytać należy, czy w najnowszych wersjach MariaDB jest forkiem Mysql, czy Mysql jest forkiem MariaDB i Percony.
Bo np mechanizm Xtradb pojawił się najpierw w Perconie, potem w MariaDb, a na końcu w Mysql.
Last edited by Jacekalex on Wed Jul 06, 2011 11:33 pm, edited 1 time in total.
pytanie z cyklu co jest lepsze jabłko czy gruszka.
Postgres zalety:
- stabilna i przewidywalna skalowalność na maszynie (vertykalna)
- bogata skałdania (duża zgodność z oracle) staraja sie byc zgodni ze standardami, schematy,sekwencje
- indeksy częściowe, funkcyjne, wielokrotne, tablespaces
- wiele jezykow wewnetrzengo programowani (pl/pgsql,pl/python ....)
- pełny ACID praktycznie na każdym poziomie (DDL,DML)
- niestandardowe (ip,cidr) i własne typy danych
- tsearch,postgis itd
- stosowany jako referencyjna baza dla django/railsy
- bogate mozliwości ograniczenia dostępu
- Na BSD
Postgres wady:
- 1 połaczenie do bazy to jeden process (nie by nic takiego ale dużo z tego wynika, tworzenie procesu jest dłuższe niz tworzenie watku, nie mozna zrobic parrallel query, backend w idle sa nieuzywane dla innych polaczen, za to wywalenie jednego backendu nie prowadzi do korupcji danych )
- młoda replikacja w core (asynchroniczna od 9.0 , synchroniczna ma wejsc w 9.1 ) , są także poza corowe implementacje
- kiepsko jest z hostingami (w postgresie nie da sie założyć quoty na baze, trzeba sie troche oklepac aby zabronic uzytkownikom zagladania do nie swoich baz ) ale w erze popularnosci vpsow to juz nie jest tak bolesne
- MVC (wynika z tego że, w posgresie update to tak naprawdę delete i insert, do niedawna były spore problemy z vaccum ( czyszczenie z przedawnionych krotek tabeli) )
- nie jest uczony na uczelniach ani jako baza pod www (mysql) ani jako komercyjne duze rozwiazanie oracle/mssql
- brak mozliwości wykonia zapytań pomiędzy bazami/hostami (np select * from host.baza.table )
- brak mozliwości podpięci cache do konkretnego obiektu bazodanowego (za to odpowiada os)
- brak popularnych (dobrych i darmowych) narzedzi do pisania procedur
- tylko jeden encoding dla bazy
Mysql zalety:
- prostota i duzo narzędzi darmowych do okoła
- skalowalność na wiele maszyn i długa historia replikacji (skalowalność horyzontalna)
- praktycznie na każdym hostingu
- kazdy kurs php uczy współpracy z mysql
- tryb embedded
- wiele silników i możliwość ich mieszania w jednej bazie danych
- wielowatkowosc (jeden connect to jeden watek, szybciej ale za cenę wrażliwości na korupcje danych prz seqfault itd, oraz ograniczenie do 2.8GB wykorzystywanego ramu na 32bit)
- szybko i bezstresowo można zrobić bazę w ramie
- encoding ustawiany dla pola/tabeli
- zapytania pomiędzy bazmi/hostami
Mysql wady:
- uboga składnia (zwykle niepodobna do niczego innego i mająca w głębokim poważaniu standardy)
- skalowalnośc na maszynie (vertykalna) (słyszałem opinie że dawanie mysqlowi wiecej niz 4GB ram to pomyłka, często dołozenie procka/pamieci itd powoduje spadek tps a nie jego wzrost)
- ACID częściowy lub wcale
- problemy licencyjne z connectorami
- mała odporność na awarie
- tragiczna obsługa time/datetime oraz gisów
- optymalizator sssie przy wiekszej ilości złączeń
- schematy obsysają
- z sekwencji jest tylko ident
- ubogie zarządzanie rolami
- każdy silnik ma swoje bolączki, często opcje DDL są tylko dla kopatybilności i tak naprawdę nie są obsługiwane
słowniczek:
tps -> transaction per second
DDL -> Data Definition Language (przykłady create/alter/drop table/view/trigger )
DML -> Data Manipulation Language (select, update,insert,delete )
skalowalność vertykalna -> na pojedynczej maszynie
skalowalnosc horyzontalna -> na wielu maszynach (wszelkiego rodzaju replikacje)