PostgreSQL 8.4 Beta 1

Pierwsza beta najbardziej zaawansowanej bazy danych SQL na licencji opensource, w wersji 8.4 została właśnie wydana przez deweloperów PostgreSQL. Po czternastu miesiącach intensywnych prac, wersja 8.4-b1 jest gotowa do testów.

Wersja 8.4 wnosi setki nowych usprawnień oraz rozszerzeń.
Najważniejsze z nich, to:

  • Window functions,
  • CTE (Common table expressions), WITH, WITH RECURSIVE,
  • domyślne wartości parametrów w funkcjach,
  • wielowątkowe odtwarzanie bazy danych,
  • poprawiona wydajność indeksów hash,
  • znacznie usprawniona implementacja pod-zapytań z wykorzystaniem [NOT] EXISTS,
  • znacznie udoskonalony „warm standby”,
  • automatyczny FSM,
  • bardziej inteligentny „odkurzacz” postgresowy- vacuum,
  • bardzo mocno poprawiony psql, teraz z możliwością edycji funkcji (ef)
  • Nowe dodatki: pg_stat_statements, auto_explain, citext, btree_gin.

Więcej informacji pod adresem (w jęz. angielskim) programu beta.

Szczegółowa lista zmian: (w jęz. angielskim) tu.

Źródełka do pobrania spod tego adresu

Będą dostępne także instalatory pod Microsoft Windows, więcej informacji na stronie programu beta.

Ze swojej strony, zapraszam do testowania. Wszelkie problemy, bądź to instalacyjne, bądź błędy proszę zgłaszać na listach dyskusyjnych, wykaz tych list znajduje się tu.

Kilka przykładów:

Niusa podesłał Grzegorz Jaśkiewicz

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar maciek
    maciek

    Czy aby na pewno najbardziej zaawansowana? Na pewno to dobry wyrób, ale otwarte są m.in. tak popularne programy jak mysql czy sqlite, oraz całe multum innych nowych rdbmsów (HSQLDB, H2… )

    1. Awatar WoW
      WoW

      MySQL? Jesteś masochistą?

      1. Awatar Mieszko Kaczmarczyk
        Mieszko Kaczmarczyk

        @WoW:
        Najlepiej od razu się pobijcie! Solówa w Realu (albo w Tesco/Biedronce/itd.)
        .
        Juz ponad tydzień nie było lamerskich wojen.

    2. Awatar wiktor
      wiktor

      Firebird (Interbase).
      Jeśli już mowa o zaawansowaniu baz, to ta ma od dawna możliwości, których powyżej wymienione się dorobić nie mogą do dziś.
      Z opensource'u do poważnych zastosowań najlepsza.

      1. Awatar trasz
        trasz

        @wiktor: Podaj jakis przyklad.

        1. Awatar jacek2v
          jacek2v

          @trasz

          Apropo możliwości Interbase/firebird. To jedna z niewielu baz na świecie, która ma tzw. optymistyczne lokowanie. Jakieś parę lat temu jeszcze nie wielu programistów z którymi rozmawiałem nawet nie wiedzieli o co chodzi. Żyli w koszmarze dirty, commited czy innych isolation level. Baza ta nie ma bajerów. Jest prosta i niezawodna, a jak ktoś się uprze to i umożliwiająca rozbudowę poprze np. pisanie dodatkowych bibliotek dosŧępnych z SQL. Co do wydajności to trudno mi się autorytatywnie wypowiadać – bo i trochę lat minęło i testów też nie rozbiłem zbyt rozbudowanych – ale szybkość jej była co najmniej zadowalająca 🙂 Baardzo dawno temu, kiedy jeszcze baza była u Borlanda, gość z Borlanda twierdził, że baza jest profilowana na ok 200 userów i więcej nie ma co jednocześnie połączać 🙂

          @nobody:
          Może i Iterbase jest stary, ale to antyk, który ma wbudowaną technologię bardziej zaawansowaną niż MS SQL, mySQL czy też PostrgeSQL (kiedyś Postrgres miał mieść optymistyczne lokowanie, ale chyba nie dodali).

          @mario:
          Fajne narzędzia do zarządzania firebird były kilka lat temu i chyba nie zniknęły 🙂
          A co do składni SQL to zależnie od gustów. Ja wolę prostą składnie i dobrze zaprojektowaną bazę niż zaufanie do "magicznych" właściwości optymizerów silnika bazy danych.
          Stara prawda mówi: każdy sprzęt można "zabić" przy pomocy odpowiedniego softu – każdy silnik bazy danych można zabić przy odpowiednio skleconym zapytaniu SQL 🙂
          Jeśli chodzi o poziom zgodności to z tego co pamiętam to firebird dość mocno trzymał się standardów SQL, ale oczywiście mogło się to zmienić :).

          @macias:
          Miałem podobne odczucia w stosunku do PostgreSQL.

          @mario:
          To, że jakiś produkt jest gówniany nie oznacza, że baza na której został postawiony jest gówniana. To tak jakbyś twierdził, że np. C (lub inny język programowania) jest gówniany bo produkt jest gówniany 🙂

        2. Awatar borizm
          borizm

          Optimistic Locking to niby cecha RDBMS'a ? Raczej sposobu dostępu do modyfikowanych rekordów bazy !
          Raczej chodziło Ci o MVCC (MultiVersion Concurrency Control).

          PostgreSQL też to ma od dawien dawna, MS SQL Server od wersji 2003, Oracle chyba od wersji 8, SAP/MAX DB i chyba InoDB to ma, a DB2, MySQL i wieli innych nie.

          Firebird, to miły RDBMS i ponoć bezobsługowy (sam się nim tylko bawiłem), ale z tego co pamiętam przed 4 laty, to miał poważne braki funkcjonalne (np.: nie był XML ready), a wiem że jego rozwój nie jest wcale tak dynamiczny.

          Ja stawiam na PostgreSQL od dawien dawna i życzę IBM'owi aby ten zaczął współrozwój tego RDBMS'a, bo ich DB2 UDB wciąż słabnie (wersja na Mainframe się obroni sama), a Informix to legacy od wielu lat.
          Jeśli IBM (twórca pierwszej komercyjnej bazy relacyjnej na modelu E. F. Codd'a) się nie obudzi to Oracle i MS połkną cały rynek RDBMS'ów.

          MySQL jest w rękach Sun, a najprawdopodobniej właśnie dziś trafił w ręce Oracle razem z całym Sun Microsystems. Jeśli dobrze czuję politykę Oracle, to będą oni raczej usuwać kłody sprzed sztandarowego Oracle Database, więc InoDB ani MySQL nie mają szans stać się tym czym jest obecnie PostgreSQL lub nawet Firebird. Oracle prędzej stworzy pomost między MySQL'em a Oracle DB (ukompatybilni je) i skłoni do używania tego drugiego na chwilowo preferencyjnych warunkach.

        3. Awatar jacek2v
          jacek2v

          @borizm

          Oczywiście, że optymistic locking to cecha RDBMS i zresztą nie tylko także i innych baz.
          Ja w PostgreSQL ani MS SQL ani Oraclu oraz w MySQL nie znalazłem oplock.
          Raczej tu chodzi o to w jaki sposób są rozwiązywane konflikty modyfikacji oraz jak działają transakcje. Rzeczywiście jest to związane z MVCC, ale np. w Firebird/Interbase oznacza to co innego niż w bazach z pesymistic locking.

          Możesz podesłać jakieś linki ?

          Te wersje w swoich opisach mają jasno powiedziane, że są pesymistic locking. Notabene niektóre chyba do tej pory na poziomie strony a nie rekordu.

      2. Awatar nobody@gmail.com
        nobody@gmail.com

        chodzi ci o ten antyk co borland się go pozbył kilka lat temu i wypuścił na licencji os? tylko osoba, która nigdy nie uzywała postgresa może twierdzić, że firebird jest bardziej zaawansowany. od momentu wypuszczenia nie był. no chyba że dla kogoś miarą zaawansowania jest wypuszczenie przez dużą korporację. to wtedy składam kondolencje.

        1. Awatar mario
          mario

          Mamy w firmie jeden produkt na firebirdzie i jest to tak wielkie gówno, że wolę się na jego temat nie wypowiadać. PGSQL bije Firebirda pod wieloma względami na głowę. Choćby zgodność z SQL, poziom zaawansowania zapytań, prędkość, ilość narzędzi, maksymalny rozmiar bazy, komunikaty błędów firebirdzie to koszmar.

    3. Awatar ak47
      ak47

      Rozumiem ze można się przyczepić do tego ze mysql jest popularniejszy. Ale już zarzucenie postgresowi że jest mało zaawansowany to już kompletna nie znajomość tematu.
      Weź sobie kartkę kolego i odwiedź te strony, pospisuj jakie funcjonalności oferuje każda z tych baz.
      Później w ramach testu znajdz opinie o tym na necie (np mysql posiada gis ale nikt tego nie uzywa), Zrób sobie część wspólną dla każdej z baz. Wyjdzie że najbardziej kompletną bazą jest postgres.

      1. Awatar macias
        macias

        > Weź sobie kartkę kolego i odwiedź te strony, pospisuj jakie funcjonalności oferuje każda z tych baz.

        A pozniej dopisz co z tej szerokiej oferty jest faktycznie wdrozone i sie nie sypie.

        Swego czasu (3 lata temu) musialem wybrac jedna z tych baz i wstepnie wybralem postgresa, ale jak zaczalem wnikac w szczegoly, to sie okazalo, ze teoretycznie rewelacja, ale praktycznie to blad za bledem, albo niedorobka. MySQL jest o tyle lepszy, ze przynajmniej sie glupio nie "reklamuje". To co opisali, ze jest, faktycznie jest.

        1. Awatar ak47
          ak47

          Nikt nie twierdzi że każdy produkt w każdym zastosowaniu jest najlepszy.
          Zarzuciłeś postgresowi niską funkcjonalność, a w stosunku do takiego mysql'a postgres oferuje dużo więcej.
          Specjalnie napisałem:
          >Później w ramach testu znajdz opinie o tym na necie …
          Bo to co piszą na stronach czasem nie ma odzwierciedlenia w realu.
          Co do twojego przypadku to znam ludzi o dokładnie odwrotnych doświadczeniach. I weź sobie pod uwagę jeszcze jedno. Dla "nowych" frameworków np. django,RoR,pylons referencyjna bazą danych jest właśnie postgres, nie mysql.

        2. Awatar trasz
          trasz

          @macias: Co jest o tyle zabawne, ze w druga strone – w sensie, o rzeczach, ktore w MySQL podobno sa, ale w praktyce nie dzialaja do konca – mozna opowiadac godzinami; od transakcji – ktore w MySQL nie sa we wszystkich przypadkach transakcyjne, oczywiscie pod InnoDB – poczawszy, na podstawowych rzeczach w rodzaju podselectow (ktore nie w kazdej sytuacji dzialaja) czy wsparcia dla bindowania argumentow w API (ktore bindowaniem jest tylko z nazwy) skonczywszy.

          I to oczywiscie zupelnie abstrahujac od problemow z wydajnoscia MySQL-a, poczawszy od szczatkowego plannera (przez co baza klęka, jesli probujesz robic to, pod katem czego model relacyjny wymyslono, czyli mniej trywialne joiny), po zwalona architekture, przez co MySQL sie nie skaluje.

          Napisz konkretnie, co w Postgresie nie dzialalo, mimo ze powinno.

        3. Awatar macias
          macias

          Ok, ale czy na pewno dokumentacja MySQL-a tego nie opisuje? Nie myl ogolnych oczekiwan vs. implementacja MySQL-a, bo ja o tym nie pisalem. Co do wspomnien, to az takiej archeologii rozwoju softu nie prowadze 😀

        4. Awatar nobody@gmail.com
          nobody@gmail.com

          @macias
          najnormalniej w świecie łżesz i siejesz fud,

        5. Awatar bk76
          bk76

          Wybraliśmy Postgresql'a jakieś 3-4 lata temu do bankowości elektronicznej i nie było z nim przez ten czas żadnych problemów.

        6. Awatar Królik
          Królik

          W sensie stricte matematycznym PostgreSQL nie jest najbardziej zaawansowanym systemem baz danych na licencji OS. Tzn. MySQL bije go pod przynajmniej kilkoma względami np. możliwością ustawienia języka dla danej kolumny, większą wydajnością przy prostych zapytaniach czy dużo prostszą konfiguracją replikacji. Ale lista różnic w drugą stronę jest znacznie większa… 😛

          P.S. I tak MS SQL Server rządzi. No, ale to nie OS. Szkoda.

        7. Awatar grzempek
          grzempek

          A nie mozemy po prostu przyznać, że i MySQL i PostgresSQL i SQLite są dobrymi bazami, i tylko od charakteru zastosowania zależy, ktorą się wybierze?

        8. Awatar Królik
          Królik

          Pełna zgoda, ale obecni developerzy Postgresa uzurpują sobie prawo do nazywania ich systemu "najbardziej zaawansowanym otwartym RDBMSem", co IMHO nie jest do końca prawdziwe. Jak mierzyć zaawansowanie? Liczbą dostępnych funkcji? Ilością kodu źródłowego? Innowacjami prowadzącymi do wysokiej wydajności? Wygodą administracji? Zgodnością z ACID?

        9. Awatar 0xhiryuu
          0xhiryuu

          @grzempek
          Jasne, ze nie mozemy bo trzeba toczyc zaciekly boj o to kto ma lebsze resoraki w piaskownicy.

        10. Awatar sjakub
          sjakub

          @trasz, co z toba? tyle plusow? bys sie wstydzil 😛

        11. Awatar karakar
          karakar

          @Królik: A to nie jest tak, że wraz z którąś z wersją 7.x wyprzedził MySQL-a w wydajności wykonywania prostych zapytań?

          Tu masz test ze stycznia:
          http://matipl.pl/2009/01/07/porownanie-wydajnosci…

      2. Awatar maciek
        maciek

        Ale już zarzucenie postgresowi że jest mało zaawansowany to już kompletna nie znajomość tematu.

        Czy ja twierdzę, że jest mało zaawansowany? Ja jedynie wymieniłem inne i zadałem pytanie, dlaczego najbardziej zaawansowany 😉

    4. Awatar szatox
      szatox

      sqlite nie jest konkretnie bazą danych, ale biblioteką sprawiającą, że plik tekstowy zaczyna zachowywać się trochę podobnie do bazy danych. Duży plus za nie pożeranie gigantycznej ilości zasobów, ale zakres możliwych zastosowań jest mocno ograniczony

      1. Awatar macias
        macias

        To samo mozna powiedziec o kazdej bazie, za wyjatkiem tej, ktora pozera najwiecej zasobow 🙂

        1. Awatar michuk
          michuk

          Sqlite jest raczej w tej kategorii co MS Access, czyli "desktopowych" baz danych, działających po stronie klienta.

          MySQL czy Postgres konkurują raczej z SQL Server.

        2. Awatar Maciej Piechotka
          Maciej Piechotka

          Mi się marzy taki 'desktop PostgreSQL' do programowania. SQLite ma kilka 'możliwości' utrudniające programowanie (gdybym nie spróbował uruchomić na PSQL to nigdy bym się nie dowiedział że poprzez błąd w kodze zapisuje string do kolumny typu Integer – taki 'ficzer' SQLite).

        3. Awatar ó
          ó

          To NIE JEST "błąd w kodzie"; SQLite po prostu tak naprawdę ignoruje typy danych, i to jest zamierzone. Możesz sobie pola poopisywać jako integery, reale, stringi itd. – ale w sumie i tak możesz potem wsadzać "wszystko wszędzie", bo tak ma być. Zasadniczo wszystko tam uważane jest za string, z którego – w razie potrzeby, i zależnie od kontekstu – np. "wydłubuje się" wartość numeryczną.

          Baza nie pilnuje, czy typ wpisywany zgadza się z deklarowanym, bo jej jest wszystko jedno. Te deklaracje mają charakter czysto opisowy.

          A nie, że "błąd w kodzie".

        4. Awatar Rsh
          Rsh

          Też nie do końca wszystko wszędzie i też nie do końca ignoruje. Nieprawdą jest również, że wszystko jest tekstem. 🙂 Po szczegóły zapraszam do źródła.

        5. Awatar Nikodem
          Nikodem

          > To NIE JEST “błąd w kodzie”; SQLite po prostu tak naprawdę
          > ignoruje typy danych, i to jest zamierzone.

          Muszę Ci podziękować za tą informację. Zaoszczędziłem trochę czasu, miałem właśnie w ramach wolnego czasu potestować FB, ale widzę, że to taki bazodanowy jukebox. Wkładasz królika, wyciągasz zająca i wszyscy szczęśliwi 🙂

        6. Awatar ó
          ó

          > Też nie do końca wszystko wszędzie i też nie do końca ignoruje.

          Owszem, tam są drobne ograniczenia – generalnie zasada jednak jest taka, jak napisałem.

          Any column in a version 3 database, except an INTEGER PRIMARY KEY column, may be used to store any type of value. [..]
          The key here is that the type is recommended, not required. Any column can still store any type of data, in theory. It is just that some columns, given the choice, will prefer to use one storage class over another. The preferred storage class for a column is called its "affinity".

        7. Awatar ó
          ó

          > widzę, że to taki bazodanowy jukebox. Wkładasz królika,
          > wyciągasz zająca i wszyscy szczęśliwi

          1. Jak widać, nie znasz znaczenia słowa "jukebox" – kup słownik jakiś (hint: "jukebox" to bynajmniej nie "klatka na króliki").

          2. Ten drugi komentarz jest po prostu głupi. Na razie wypowiadam się o głupocie komentarza, nie autora – ale za drugim takim komentarzem stosowny wniosek będzie raczej nie do uniknięcia.

        8. Awatar nikodem
          nikodem

          do "ó"

          Widzę, że z Ciebie to taki "wujek dobra rada". Doradź mi proszę jakiś konkretny słownik, bo na prawdę nie wiem co wybrać.

          A co do głupoty drugiej części komentarza: nie moja wina, że FB tak ma.

        9. Awatar ó
          ó

          > na prawdę nie wiem co wybrać

          …skoro "na prawdę" – to polecam słownik ortograficzny na początek.

          > nie moja wina, że FB tak ma

          A, to sorry, tym razem pokajam się: widząc toto pod moim komentarzem sądziłem, że to miało dotyczyć SQLite (literki FB jakoś mi "umknęły").

          Jak to zaś naprawdę jest z FB – to nie wiem.

        10. Awatar ó
          ó

          Wycofuję "pokajanie" :] – zapomniałem, że przecież odpisałeś wyraźnie cytując moją wypowiedź.

          Zdecyduj się więc zatem, czy chodzi Ci o FB, czy o SQLite. Jeśli jednak o SQLite – to nie, SQLite "tak nie ma".

        11. Awatar Maciej Piechotka
          Maciej Piechotka

          > To NIE JEST “błąd w kodzie”; SQLite po prostu
          > tak naprawdę ignoruje typy danych, i to jest
          > zamierzone. Możesz sobie pola poopisywać jako
          > integery, reale, stringi itd. – ale w sumie i
          > tak możesz potem wsadzać “wszystko wszędzie”,
          > bo tak ma być. Zasadniczo wszystko tam
          > uważane jest za string, z którego – w razie
          > potrzeby, i zależnie od kontekstu – np.
          > “wydłubuje się” wartość numeryczną.

          Nie zrozumiałeś – błąd był w moim kodzie. Działał z SQLite – i z niczym innym.

    5. Awatar y0g1
      y0g1

      korzystam z mysql – i jak narazie spelnia moje oczekiwania. Jest tylko jeden problem, ktory zmusza mnie do jego porzucenia. libmysql jest na licencji gpl, a wolalbym lgpl lub bsd. Tylko z tego powodu, ze dane, do ktorych sie odwoluje w programach sa przechowywane w mysql, musze wszystkie programy udostepniac na tej samej licencji.
      Pozostale biblioteki z jakich korzystam sa na lgpl lub bsd – dlatego przymierzam sie do
      zastapienia mysql przez postgresql.

      1. Awatar michuk
        michuk

        Ale modyfikujesz libmysql i zmodyfikowana wersja jest częścią twojego programu? Bo jeśli nie, to spokojnie możesz przecież traktować MySQL jako oddzielny soft, niezależny od twojej aplikacji i wcale nie musisz udostępniać swojego całego kodu na GPL…

        1. Awatar kj
          kj

          Tu jest właśnie główny problem licencji GPL. O ile MySQL faktycznie jest oddzielnym softem i nie może wpływać na warunki licencjonowania mojego programu, o tyle libmysql jest linkowana (statycznie lub dynamicznie) z moim programem. W przypadku, gdy jest ona na GPL zaczynają się schody, bo Stallman twierdzi, że mój program powinien być dystrybuowany na GPL, a prawnicy, że nie. I bądź tu mądry ;).

        2. Awatar kj
          kj

          Żeby uniknąć nieporozumień: "mój program" w wypowiedzi powyżej to tylko twór teoretyczny, nie mający nic wspólnego z programem y0g1 ;).

        3. Awatar trasz
          trasz

          @michuk: RMS (i cale FSF) twierdza cos przeciwnego – ze kazdy kod zlinkowany (nawet dynamicznie) z kodem na GPL musi byc na licencji GPL.

        4. Awatar michuk
          michuk

          @trasz: Racja. Jeśli biblioteka byłaby wykorzystywana przez program, tj. nasze funkcje wołałyby jej poprzez api, to pewnie trzebaby udostępnić nasz kod na GPL.

          Co ciekawe już skorzystanie z bazy MySQL (przez interfejs typu JDBC) nie wymusza wypuszczenia kodu na GPL, nawet jeśli baza w MySQL jest integralną częścią naszego produktu.

          Głupie to. BSD rządzi 🙂

        5. Awatar clondike
          clondike

          @michuk
          A żeby było ciekawiej, oficjalny darmowy sterownik JDBC do MySQL jest na licencji GPL. Pisząc aplikację linkujemy z nim, więc trzeba wypuścić program na GPL. Oczywiście, możesz kupić sterownik na innej licencji 😛

        6. Awatar jellonek
          jellonek

          trasz: to ze RMS (i cale FSF) cos twierdzi – to jak sam wiesz, nie musi sie zgadzac z rzeczywistoscia.
          ich "chcice" sa zlewane przez wielu, np. popatrz na stery nvidiowe…

        7. Awatar maciek
          maciek

          Mi się wydaje, że Stallman jako autor systemu GNU, a przynajmniej jego inicjator, ma cokolwiek do powiedzenia w sprawie zasad rządzących owym systemem 😉

        8. Awatar gotar
          gotar

          A ktoś używa tego ich systemu?

        9. Awatar jellonek
          jellonek

          jakiego systemu?
          przeciez rozmawiamy o licencji a nie o hurdzie…

        10. Awatar gotar
          gotar

          @jellonek – ja tam widzę, że maciek pisze o systemie GNU. I autor nie ma nic więcej do gadania niż to, co zostało w licencji zapisane.

      2. Awatar Thar
        Thar

        Tak, GPL dla biblioteki to zły wybór. Ale skoro Sun kupił MySQL, mógłby to zmienić.

    6. Awatar mario
      mario

      @maciek: z całą pewnością pgsql to najpoważniejszy OpenSourceowy RDBMS. sqlite czy hsqldb służą raczej do embedowania w programach, do operacjach na małych bazach, mysql do prostych serwisów internetowych, gdzie nie ma skomplikowanych zapytań i liczy się prędkość.

  2. Awatar Fazer
    Fazer

    A ja spytam z innej beczki, dlaczego PostgreSQL jest lepsze od MySQL? Nie orientuję się zbytnio w bazach danych, ale kilka lat temu kupiłem sobie książkę o PHP + MySQL (jeszcze nie przeczytałem). Czy teraz nie warto jej się uczyć? Pytam z czystej ciekawości.

    1. Awatar niktciekawy
      niktciekawy

      Zaryzykuje i poloze swoja glowe na szali, ze z mysqla to masz tam do poznania z 5 funkcji (wlasciwie to api do polaczenia z baza, zrobienia zapytania i sparsowania wynikow). Pozostala czesc to tworzenie baz danych czy tabel w ogolnosci. Odnosnie tych "5-ciu funkcji" to pewnie zamiast mysql_connect uzywasz pg_connect lub cos w ten desen. Wiec jak najbardziej ksiazki sie nie pozbywaj tylko z tego powodu, ze chcialbys "ruszyc" wszystko na postgresie.

    2. Awatar Królik
      Królik

      Do pewnych rzeczy lepszy, do innych nie. Przy złożonych zapytaniach PostgreSQL jest zdecydowanie wydajniejszy. Lepiej też się sprawuje przy dużej liczbie równoległych transakcji niż InnoDB w MySQLu. Ale już np. replikacja master-slave w Postgresie to porażka (właściwie to oficjalnie jej nie ma). Podobnie przy dużej intensywności zapisów, MySQL też radzi sobie lepiej, bo tam każdy update nie powoduje dopisywania nowego rekordu.

      A czemu nie DB2 Express-C? Darmowy i zupełnie inna półka, jeśli chodzi o wydajność i możliwości.

      1. Awatar maciek
        maciek

        DB2 ma kilka poważnych wad, których pozbawione są alternatywy:
        – jest zamkniętym oprogramowaniem
        – ma na sztywno wbite ograniczenia co do wielkości zasobów, jakimi może dysponować. Nie myśl nawet o replikacji, czy choćby wykorzystaniu wielo-procesorowego serwera 🙂

        1. Awatar Królik
          Królik

          Tak, to prawda, pytanie tylko, czy jak ktoś rozważa replikację, lub wykłada kasę na wieloprocesorowy serwer lub kilka, to czy przypadkiem koszty pełnej licencji nie stają się śmiesznie małe w porównaniu z resztą kosztów całego przedsięwzięcia. Wiele firm kupuje te produkty (np. w Polsce głównie Oracla i Ms SQL Server) i im się to opłaca. A to nie jest sytuacja taka jak Windows kontra Linux, że ludzie biorą, coś do czego są przyzwyczajeni.

        2. Awatar Królik
          Królik

          A, jeszcze co do ilości zasobów, to należy uwzględnić, że takie DB2 Express-C niby ma ograniczenie na 2GB RAMu, ale z tych 2GB potrafi zrobić dużo lepszy użytek niż taki MySQL czy PostgreSQL. Choćby bufory na sortowanie są o wiele inteligentniej rozwiązane czy buforowanie planów zapytań (PostgreSQL w ogóle potrafi buforować plany zapytań ad-hoc? Po czasie wykonywania w kółko tych samych zapytań wnoszę, że nie). No i DB2 nie potrzebuje też dodatkowej pamięci na VACUUM. 😀

        3. Awatar nobody@gmail.com
          nobody@gmail.com

          @Króli: "Po czasie wykonywania w kółko tych samych zapytań wnoszę, że nie"

          łżesz i siejesz fud

        4. Awatar maciek
          maciek

          Niestety w takich sytuacjach często koszt licencji zamkniętego oprogramowania co do rzędu wielkości jest porównywalny z ceną samego sprzętu. Proszę zobaczyć na przykład ten wpis

          Proszę zwrócić uwagę:
          RDBMS open source + system operacyjny open source + takiż webserwer + sprzęt pod całe to tatałajstwo: $131k
          Web ops/s: 9546

          RDBMS własnościowy + takiż system operacyjny + takiż webserwer + sprzęt pod to całe tatałajstwo: $204k (duża część ceny to licencje właśnie)
          Web ops/s: 6250 (drożej a wolniej)

          Tu akurat MySQL, ale ogółem nie jest tak, że zalety zamkniętego oprogramowania (nawet jeśli obiektywnie bardziej zaawansowanego technicznie) usprawiedliwiają pakowanie się w vendor lock-in, drogie licencje i całe to zamieszanie 🙂

          Z resztą taki MySQL ze swoimi zapowiadanymi technologiami Falcon i Maria oraz innymi rozwinięciami proponowanymi przez nowego właściciela nie tylko jeszcze jaśniej zacznie świecić w świecie webowym, ale i w innych zastosowaniach się może wybić.

          PostgreSQL z kolei sam z iebie jest przedsięwzięciem niesamowicie rozwojowym, o czym świadczy choćby powodzenie takich przedsięwzięć jak Greenplum czy EnterpriseDB.

        5. Awatar ak47
          ak47

          @królik
          Chyba nie widziałeś cen za licencje sybase czy oracle. Za taką kasę to można kilka zajebistych maszyn kupić.
          >A to nie jest sytuacja taka jak Windows kontra Linux, że ludzie biorą, coś do czego są >przyzwyczajeni.
          Czy ty robiłeś kiedys migracje z jednego systemu bazodanowego na inny, że takie pierdoły gadasz? Ta aplikacja napisana na oracle'a zadziala od ręki na mssql? Idź wytrzeźwiej.
          To że firmy które używały, nadal kupują te bazy, wynika z tego ze dostają rabaty na poziomie 80-90%. Tak się trzyma użytkownika.
          Expresy -> wszystko pięknie ładnie dopóki proc się wyrabia, i nie potrzebujesz więcej miejsca na baze ,partycjonowania lub innej funkcji zablokowanej.

        6. Awatar trasz
          trasz

          @maciek: Porownanie o tyle od czapy, ze po pierwsze SQL Server jest baza danych polke wyzej niz MySQL pod wzgledem funkcjonalnym (o bezpieczenstwie danych i niezawodnosci nie wspominajac), a po drugie Windows chodzilo pod jakas dziwna wirtualizacja, ktorej szczegolow nie podano.

          I ogolnie jest tak, ze zalety oprogramowania zamknietego jak najbardziej usprawiedliwiaja pakowanie sie we wszystkie, rzeczywiste (cena) i raczej hipotetyczne (vendor lock-in) problemy z nimi zwiazane. Dlatego wlasnie tak duzo widac Oracle'a.

        7. Awatar Królik
          Królik

          Wiesz, to jest jednostkowy przykład i to jeszcze na dodatek pochodzący od Suna, więc faktycznie bardzo wiarygodny i bezstronny 😀 Wejdź na strony Microsoftu, to wyjdzie, że MS SQL Server jest 2x tańszy i to nawet po wykupieniu licencji na Windows. 😀
          A co do rozwoju MySQLa, to nie jest wcale tak różowo – póki co kilkaset nierozwiązanych bugów ostatniej stabilnej wersji i odejście głównych devów nie wróży nic dobrego.

          Rozwiązania zamknięte owszem są może droższe i mają pewne wady typu vendor-lockin, ale w powyżej pewnych obciążeń lub przy odpowiednio wysokim skomplikowaniu zapytań, rozwiązania FLOSS się nie umywają. Zapuść sobie PostgreSQL 8.3 na benchmarku TPC-H i porównaj z czymkolwiek komercyjnym. To nie są różnice procentowe. To są różnice wydajności rzędu dziesiątek, a czasem tysięcy razy.

        8. Awatar maciek
          maciek

          To prawda, że jeszcze nie ma programu open source pod każde zastosowanie, ale po co je dyskryminować tam, gdzie sprawdzają się znakomicie?

        9. Awatar maciek
          maciek

          tr:
          Leading Virtualization Platform to oczywiście vmware, a nie nie "jakas dziwna wirtualizacja"… choć może dziwna jest dobrym określeniem dla tego cool'awego rozwiązania.

          I ogolnie jest tak, ze zalety oprogramowania zamknietego rzadko usprawiedliwiaja pakowanie sie we wszystkie (cena, vendor lock-in) problemy z nimi zwiazane. Dlatego wlasnie tak duzo widac MySQLa.

          A o tych półkach wyżej i niżej to można dyskutować… skoro dolnopółkowy produkt ma lepsze wyniki niż górnopółkowy 😀
          Ponadto nie wiem, jak MS SQL Server instaluje się w środowisku Solaris Cluster 😉 (wiem, że Oracle jak najbardziej to rozwiązanie wspiera). No to tyle w sprawie niezawodności 😛

          Wracając jeszcze do perspektyw rozwoju samego MySQLa: po to się wykłada 3 miliardy złotych na "M" w LAMP, aby dostarczyć kompleksowe rozwiązanie z rozsądnymi perspektywami rozwoju. Nie chce mi się wierzyć, że kierownictwo Suna władowało kupę kasy w niezbyt rozwojowe badziewie 😉

        10. Awatar michallo
          michallo

          @Królik. Tak się spodziewam, że oracle czy też mssql także mają kilkaset nierozwiązanych bugów. Oracle też wypuszcza róznego rodzaju hotfixy itp itd.

        11. Awatar dancios
          dancios

          Linux, Apache Middleware and PostgreSQL

      2. Awatar jata
        jata

        fakt, nie ma wbudowanej replikacji, ale czy porazka? Slony-I sprawdza sie bardzo dobrze, a juz zwlaszcza w replikacji master-slave..;)

    3. Awatar ak47
      ak47

      choćby
      – indeksy funkcyjne i warunkowe
      – tranzakcyjne ddl
      – stabilność ( na mysql widzialek kilka razy crash table, postgres mi padł jak macierz dyskowa zastrajkowała, a różne rzeczy z nim wyprawiałem)
      – sekwencje z prawdziwego zdarzenia
      – gis gdzie jest chyba jedyną alternatywa dla oracle'a
      – typy danych "usera"
      – kilka jezyków (pl/*)do klepania funkcji

      Co do uczenia, zawsze warto się uczyć :).

      1. Awatar Lewy
        Lewy

        > – gis gdzie jest chyba jedyną alternatywa dla oracle’a

        Tu akurat nieźle się prezentuje MonetDB (teoretycznie – GIS'a akurat nie testowałem)

        http://monetdb.cwi.nl/

      2. Awatar jellonek
        jellonek

        ak47: znasz moj przypadek 😉 tj. padajace raz na miesiac postgresy 😉 btw. nadal padaja, ale ze wzgledu na brak kompatybilnosci na poziomie plsql pomiedzy 8.2.x i nowszymi – niestety cale rozwiazanie nadal oferowane jest na "starych" bazach… (prace nad migracja sa prowadzone, ale za malo osob nad tym pracuje, a kodu do przerobienia jest cala tona…)

  3. Awatar wuem
    wuem

    A co ma SQLite do FB o_O?

  4. Awatar OCM
    OCM

    Przecież jest Oracle. Po co ta dyskusja? 😉

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *