Przemysław Krygier

Przemysław Krygier Specjalista Systemów
Informatycznych

Temat: PostgreSQL w poważnych projektach

Witam szanownych forumowiczów.

Od dłuższego czasu (mniej więcej 3 lat) z dużą sympatią i zainteresowaniem przyglądam się bazie PostgreSQL. Powszechna opinia jest taka że Postgres jest najbardziej zaawansowaną bazą freeware. Sam zawodowo tworzę oprogramowanie i z definicji używamy Sql-Server i tu doświadczeń mam sporo. Niestety MS SQL Server kosztuje ... i to niemało - w przypadku wersji SQL Server Express mamy fajną bazkę, ale jednak zbyt ograniczoną (pamięć, przestrzeń dyskowa, procesor).

Nie zlinczujcie mnie - bo sam uważam że koszt bazy w zasadzie niewiele znaczy w stosunku do wartości zgromadzonych danych (moje wypowiedzi na forum), niemniej jednak fascynacja open-source oraz analiza możliwości obniżenia kosztów realizacji mniejszych projektów skłania mnie do zapoznania się z opiniami zawodowców na temat Postgresa.

Zatem proszę was o opinie dotyczące serwera Postgres w profesjonalnych (komercyjnych) zastosowaniach. Pozytywne i negatywne doświadczenia. Udziwnione fragmenty składni ... problemy dużych indeksów, restore backupu ... słowem wszystkiego na co można napotkać w dużych systemach.

PS: Proszę o merytoryczne uwagi - a nie w stylu że Postgresql działa doskonale w aplikacji 'na zaliczenie', albo że hmm ... baza zawiera 2000 rekordów i odpowiedzi są OK. (napisałem przeszło 5 lat temu pracę magisterską na PG i wiem że działa :) ).

Pozdrawiam i z góry dzięki

Przemek

Temat: PostgreSQL w poważnych projektach

W mojej ocenie dużym problemem jest skalowalność postgresa. Nie znam działającej implementacji synchronicznej replikacji multimaster. Sam mechanizm jakiejkolwiek replikacji wbudowanej w postgresa wydaje się dopiero raczkować. O ile HA da się jeszcze jakoś osiągnąć np. w oparciu o DRBD, o tyle jeśli pojedyncza maszyna nie będzie posiadać odpowiedniej wydajności, pojawia się spory problem.
Wojciech Zieliński

Wojciech Zieliński IT
Project/Programme/Pe
ople Manager
(PRINCE2
Practicioner...

Temat: PostgreSQL w poważnych projektach

Używamy Postgresa praktycznie od 6 lat - i zrobiliśmy kilka dużych projektów na tej bazie - włącznie z systemami typu CRM czy ERP. Systemy te przetwarzają dość duże ilości danych - w ERPie mamy ponad 120k klientów, ponad 12k dokumentów księgowych i oczywiści multum dokumentów innego rodzaju. Z systemu korzysta ponad 100 użytkowników i ponad 2700 agentów.
W systemie CRM serwisowym mamy zarejestrowanych ponad 130k urządzeń i ponad 100k czynności serwisowych.

Generalnie systemy te dają sobie radę - oczywiści pod warunkiem wyseparowania serwera bazy danych od serwera aplikacyjnego.

Słyszałem jednak również o potencjalnych problemach ze skalowalnością bazy - dlatego jak cokolwiek robimy w Postgresie, to np. do procedur wbudowanych używamy wyłącznie PL/pgSQLa, który jest w 90% zgodny z Oraclowym PL/SQLem. Sam Postgres również dość mocno jest zgodny z Oracle, co nam zapewnia bezpieczeństwo, że w przypadku takiej konieczności - możemy bazy zmigrować na Oracle dość bezboleśnie. I tam już mechanizmy czy klastrowania czy gridowania baz już nie stanowią problemu.

Z drugiej jednak strony - ja jestem raczej zwolennikiem architektury SOA i klastrowania funkcjonalnego. A w takim przypadku problem braku dobrych narzędzi do klastrowania bazy przestaje tak bardzo boleć...

konto usunięte

Temat: PostgreSQL w poważnych projektach

Ja tam się zajmowałem niedużymi bazami: 300M rekordów, 100GB na dysku... z replikacją na 3 serwerach. I się sprawdza o ile masz dobrego DBA, inaczej programiści potrafią każdą maszynę zajechać.

A odnośnie pytań, to książkę można napisać (kiedyś zacząłem, ale nie mam na to czasu), tak więc odnośnie 'potencjalnych' problemów nie odpowiem, w końcu po to jest DBA co by te problemy rozwiązywać i naprawdę się da.

konto usunięte

Temat: PostgreSQL w poważnych projektach

Wojciech Zieliński:
Słyszałem jednak również o potencjalnych problemach ze skalowalnością bazy - dlatego jak cokolwiek robimy w Postgresie, to np. do procedur wbudowanych używamy wyłącznie PL/pgSQLa, który jest w 90% zgodny z Oraclowym PL/SQLem. Sam Postgres również dość mocno jest zgodny z Oracle, co nam zapewnia bezpieczeństwo, że w przypadku takiej konieczności - możemy bazy zmigrować na Oracle dość bezboleśnie. I tam już mechanizmy czy klastrowania czy gridowania baz już nie stanowią problemu.

Używacie czegoś bo coś tam słyszeliście? Bez przesady. Problemy ze skalowaniem są wszędzie i można je spokojnie rozwiązać.
Postgres ma wielką przewagę nad Oraclem: ma skalowalne DDLe (więc można w transakcji dodać indeks/kolumnę, coś tam zmienić i potem rollback i nie ma po tym śladu).
Do zmigrowania bazy na Oracla polecam EnterpriseDB, teoretycznie powinno to działać jak Oracle (przynajmniej aplikacja tak to widzi), w środku jest Postgres, a kosztuje o wiele mniej :)

Temat: PostgreSQL w poważnych projektach

Szymon G.:
Ja tam się zajmowałem niedużymi bazami: 300M rekordów, 100GB na dysku...

Ile zapytań na sekundę obsługiwała ta baza? Ciekawi mnie rząd wielkości. Jakiego typu były to gównie zapytania? Na jakim fizycznie sprzęcie to stało? Ile rekordów przypadało max na tabelę?
z replikacją na 3 serwerach.

W jaki sposób była realizowana replikacja, i jaki to był typ replikacji?
I się sprawdza o ile masz dobrego DBA,

Co masz na myśli pisząc o dobrym DBA?
inaczej programiści potrafią każdą maszynę zajechać.

W sensie, że DBA hamuje zapędy programistów, czy robi coś magicznego, dzięki czemu baza radziła sobie ze wszelkimi fanaberiami wymyślonymi przez programistów? :)

konto usunięte

Temat: PostgreSQL w poważnych projektach

Sławomir Lipowski:
W mojej ocenie dużym problemem jest skalowalność postgresa. Nie znam działającej implementacji synchronicznej replikacji multimaster. Sam mechanizm jakiejkolwiek replikacji wbudowanej w postgresa wydaje się dopiero raczkować. O ile HA da się jeszcze jakoś osiągnąć np. w oparciu o DRBD, o tyle jeśli pojedyncza maszyna nie będzie posiadać odpowiedniej wydajności, pojawia się spory problem.

Tak, replikacji multimaster nie ma... jest ładnie działająca master-multislave, co pozwala mieć kilka baz do odczytu. Wbudowana replikacja ma być (ale niestety kiedyś).

konto usunięte

Temat: PostgreSQL w poważnych projektach

Sławomir Lipowski:
Szymon G.:
Ja tam się zajmowałem niedużymi bazami: 300M rekordów, 100GB na dysku...

Ile zapytań na sekundę obsługiwała ta baza? Ciekawi mnie rząd wielkości. Jakiego typu były to gównie zapytania? Na jakim fizycznie sprzęcie to stało? Ile rekordów przypadało max na tabelę?

Różnie. bardzo różnie... nie pamiętam już tamtego projektu, ale wiem, że spokojnie Postgres obsługuje kilkaset transakcji na sekundę (na odpowiednim sprzęcie). Wszystko zależy oczywiście od zapytań i co robią, w końcu zapytanie zapytaniu nierówne.
Tabele miały tak od 0 do kilkunastu milionów rekordów.
z replikacją na 3 serwerach.

W jaki sposób była realizowana replikacja, i jaki to był typ replikacji?

Replikacja standardowo Slonym (master - multi slave).
I się sprawdza o ile masz dobrego DBA,

Co masz na myśli pisząc o dobrym DBA?

Taki, który zna bazę, wie jak działa, potrafi myśleć, potrafi pisać zaawansowanego SQLa (łącznie z procedurami), potrafi porządnie skonfigurować bazę, sprawdzić i podkręcić wydajność, napisać i używać narzędzia do analizy logów czy monitorowania bazy, potrafi trzymać topór nad programistami i użyć w razie potrzeby :), potrafi przeprowadzić wszelkie konieczne operacje, opracuje procedury i napisze do nich skrypty automatyzując wszystko itd. Ogólnie chodzi o to, że DBA dostaje bazę i ma być lepiej.
inaczej programiści potrafią każdą maszynę zajechać.

W sensie, że DBA hamuje zapędy programistów, czy robi coś magicznego, dzięki czemu baza radziła sobie ze wszelkimi fanaberiami wymyślonymi przez programistów? :)

IMHO w dobrym zespole powinien hamować zapędy i szkolić, i patrzeć przez ramię co robią co by ich opieprzyć jak trzeba (a trzeba). Tu nie chodzi tylko o fanaberie, normalne jest, że programiści (oczywiście są wyjątki, ino nieliczne) nie ma pojęcia o postaciach normalnych baz czy optymalizacji. Programiści często potrafią wyciągać wszystkie dane z tabeli po to żeby to posortować w programie i wyciągnąć 10 rekordów, wyciągają wszystkie dane z dwóch tabel i robią joiny w programie... Ogólnie to można by kolejną książkę na ten temat pisać.
Przemysław Krygier

Przemysław Krygier Specjalista Systemów
Informatycznych

Temat: PostgreSQL w poważnych projektach

Dziękuję wszystkim za opinie. Wygląda na to że PostgreSQL zasługuje na zaufanie.

Pozdrawiam

Przemek Krygier

Następna dyskusja:

zapytanie w PostgreSQL




Wyślij zaproszenie do