# Postgres vs Mysql

## soban_

Tak jak w teamcie. Co lepiej Waszym zdaniem w praktyce sie sprawdza.

----------

## ender74

W praktyce oba RDBMS'y się sprawdzają.

O co dokładnie chcesz się zapytać?

----------

## soban_

Co jest wydajniejsze pod katem stron internetowych, bo wiem ze wiekszosc i tak woli mysqla.

----------

## gexcite

 *soban_ wrote:*   

> Co jest wydajniejsze pod katem stron internetowych, bo wiem ze wiekszosc i tak woli mysqla.

 

To raczej nabiera znaczenia przy x tysiącach wejść dziennie

----------

## soban_

No ok, a jak sprawa wyglada z zasobami?

----------

## Zwierzak

Znajdź na internecie benchmarki. Jest tego pełno.

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.

----------

## soban_

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.

----------

## Raku

 *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.

----------

## soban_

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

----------

## Jacekalex

Ani jedno, ani drugie.

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.

Pozdrawiam

 :Wink: 

----------

## gexcite

A MariaDB to nie czasem fork MySql?

----------

## Jacekalex

 *gexcite wrote:*   

> A MariaDB to nie czasem fork MySql?

 

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

----------

## lsdudi

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)

----------

