PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL to najlepsza baza danych na świecie

Tytuł nie jest przynętą na kliknięcia ani hiperbolą. Zamierzam udowodnić, że zarówno dzięki projektowi, jak i implementacji PostgreSQL jest obiektywnie i wymiernie lepszą bazą danych niż jakakolwiek obecnie dostępna, z uwzględnieniem pieniędzy lub bez.

Jak u licha mogę twierdzić i uzasadniać tak wzniosłe stwierdzenie? Czytaj dalej, delikatny nerd. Obiecuję, że Twój czas nie zostanie zmarnowany.

Przejrzyste bezpieczeństwo

PostgreSQL posiada listę mailingową dotyczącą bezpieczeństwa. Projekt PostgreSQL uczy się o wektorach włamań w tym samym czasie, co wszyscy inni. Nic nie jest ukryte, a wszystko, co zostanie znalezione, jest przetwarzane w tempie, które przyprawia o zawrót głowy komercyjnych sprzedawców. Nie daj się zwieść krótszym listom defektów publikowanym przez tego samego dostawcę, który dostarcza analizowane oprogramowanie.

Oznacza to, że wszystkie znane kierunki ataków są obsługiwane natychmiast po ich upublicznieniu. Ten rodzaj reakcji w zakresie bezpieczeństwa nie jest nawet brany pod uwagę na rynku komercyjnym. Dla sprzedawców komercyjnych zachowanie tajemnicy do czasu rozwiązania problemu ma kluczowe znaczenie dla naprawy. PostgreSQL nie przynosi takiej ulgi i to jest dla Ciebie fantastyczne.

Kontrola współbieżności wielu wersji jest dla Ciebie dobra

PostgreSQL wybiera metodę kontroli współbieżności, która działa najlepiej w przypadku dużych obciążeń INSERT i SELECT.

Bardzo łatwo jest zaprojektować dla PostgreSQL, pamiętając o ograniczeniach związanych z obciążeniem śledzenia dla

AKTUALIZUJ i USUŃ. Przede wszystkim, jeśli szanujesz swoje dane, powinieneś nauczyć się kochać bezpieczeństwo danych, które zapewnia Ci PostgreSQL.

DDL uczestniczy w transakcjach z wykorzystaniem PostgreSQL. Migracje działają do końca lub wcale (najgorszy rodzaj niedziałania prawie działa). Uprzęże testowe są bardzo łatwe do zbudowania. Chcesz zresetować wiązkę testową? Po prostu COFNIJ.

PostgreSQL obsługuje zgodne ze standardami formy izolacji transakcji, w tym serializację, zatwierdzenie odczytu i odczyt powtarzalny. Te metody zapewniają pełną zgodność z ACID.

PostgreSQL robi wszystko

Więc chcesz NoSQL, Riak, REACT, Redis, Mongo itp.? PostgreSQL robi to wszystko. Trzeba przyznać, że nie ze wszystkimi dzwonkami i gwizdkami wszystkich oryginalnych produktów. Na przykład PostgreSQL nie tworzy dla Ciebie nowych fragmentów dla żadnego z nich. To wciąż proces ręczny. Ale z drugiej strony zawsze jest pg_partman. . .

Chcesz magazyn danych kolumn? A może hstore? Nie chcesz przekwalifikować swoich pracowników? Podłącz wybrany język i kontynuuj transport. Chcesz częściowej replikacji? Streaming Replikacja logiczna jest dla Ciebie.

Trudno byłoby mi pomyśleć o funkcji, której chciałbym, aby PostgreSQL nie miał, lub której nie ma dobrze znanego rozszerzenia do udostępnienia.

Chcesz wyodrębnić dane z innych systemów? PostgreSQL ma najbardziej dynamiczną kolekcję obiektów federacyjnych ze wszystkich baz danych. Nazywają je obcymi opakowaniami danych, a PostgreSQL można podłączyć do aligatora za pomocą taśmy klejącej i opasek zaciskowych. Traktuj wszystko tak, jakby to były Twoje dane.

Zaczep go na mapie

Społeczność PostGIS może być prawdopodobnie większa niż sama społeczność PostgreSQL. Możliwości mapowania PostgreSQL umieszczają go w osobnej klasie, nawet w porównaniu z bardzo drogimi alternatywami.

Projekt PostGIS wybrał PostgreSQL jako platformę ze względu na łatwość rozszerzalności i szerokie możliwości wzbogacania danych. Te możliwości są bezpośrednio widoczne dla każdego innego projektu, z którego mogą skorzystać. Nie ma na nie również odpowiedzi żaden inny dostawca, komercyjny lub open source.

Ostatecznie możesz go podłączyć do wszystkiego.

PostgreSQL rozwija się i jest liderem w dziedzinie open source

Projekt PostgreSQL to jedna z najbardziej widocznych organizacji w oprogramowaniu open source. Dzięki ogromnej społeczności i rosnącej w astronomicznym tempie wszelkie braki, które ma teraz, zostaną prawdopodobnie pokonane w czasie, o którym inni dostawcy mogą tylko pomarzyć.

Dodatkowe funkcje jakości dla przedsiębiorstw są ogłaszane dosłownie każdego dnia, a personel zajmujący się ich obsługą jest sam wybierany z puli geniuszy, których każda firma ma nadzieję zatrudnić, a po prostu nie ma ich wystarczająco dużo.

PostgreSQL buduje rozwiązania, które są zawsze stabilne

PostgreSQL ma wbudowaną replikację logiczną w rdzeniu. Pozwala to na migracje między wersjami. Przeczytaj to jeszcze raz. Nie jesteś ograniczony do określonej wersji sprzętu lub oprogramowania. Rozwiązanie można aktualizować w nieskończoność.

Ponadto PostgreSQL jest obsługiwany na wielu platformach, w tym w superstabilnych wersjach Linuksa. Potrzebujesz rozwiązania, które przeżyje typowy zwrot z inwestycji od 3 do 5 lat? PostgreSQL będzie Ci służył wiecznie, nawet jeśli w ogóle nie zaktualizujesz sprzętu. A opłaty za to są łatwe do obliczenia. 0 USD.

Deklaratywny jest lepszy niż imperatyw

Języki baz danych są na ogół deklaratywne. Oznacza to, że piszesz zapytanie w wybranym przez siebie języku wbudowanym, opisując wyniki, które chciałbyś zobaczyć. Baza danych próbuje rozszyfrować Twoje intencje i dostarczyć odpowiednie wyniki. Jest to podstawa wszystkich deklaratywnych modeli programowania. W PostgreSQL sprowadza się to do mapowania funkcji na słowa kluczowe w języku SQL, czasami z kilkoma algorytmicznymi wyborami, aby dokładnie zaimplementować każdą deklarację.

W odwiecznym sporze na temat modeli programowania imperatywnego i deklaratywnego5 przychodzi mi do głowy, że programowanie deklaratywne jest po prostu programowaniem imperatywnym w cienkim przebraniu. Każdy token deklaratywny w języku zapytań bazy danych ostatecznie odwzorowuje jeden lub kilka algorytmów, które stosują deklarację w sposób imperatywny. Tak więc niedopasowanie impedancji zdefiniowane przez Henriettę jest ostatecznie w umyśle programisty. Oznacza to, że gdyby programista myślał dokładnie tak, jak myśli programista funkcji bazodanowych, nie byłoby niezgodności.

Jak więc model deklaratywny może być ostatecznie lepszy niż model imperatywny, biorąc pod uwagę, że jeden jest tylko cechą wywołującą drugiego? Cieszę się, że zapytałeś, ponieważ to prowadzi mnie do mojego punktu.

Programiści PostgreSQL są mądrzejsi od Ciebie. Nie mam na myśli żartobliwości czy nieśmiałości. Dosłownie tysiące współtwórców wniosło miliony wkładów do projektu PostgreSQL, wiele z nich jako ulepszenia wkładu innych. Szanse, że to, co wymyśliłeś na czubku głowy, jest lepsze niż to, co już zostało wdrożone, są bardzo niskie. I nawet jeśli twoje myśli były lepsze, powinieneś wnieść je do projektu PostgreSQL z korzyścią dla wszystkich, podnosząc w ten sposób poprzeczkę dla wszystkich innych.

Co zatem sprawia, że ​​PostgreSQL jest tak wspaniały? Ogólnoświatowy mindshare bez korporacyjnych względów. Tysiące programistów pracują setki tysięcy godzin, aby dokonywać lepszych wyborów algorytmicznych. Dzięki temu Twoje oprogramowanie staje się lepsze z każdym wydaniem, najczęściej bez konieczności robienia czegokolwiek w szczególności z Twojej strony.

Czy nie taka jest ogólna natura oprogramowania, mówisz? No tak. Ale nie w takim stopniu, w jakim cały świat jest zaangażowany w twój projekt. PostgreSQL zajmuje bardzo ważne miejsce w społeczności open source. Komercyjni dostawcy nigdy nie będą w stanie nadążyć za tempem zmian, jakie może zapewnić projekt open source na tym poziomie. Migracje do open source (a zwłaszcza PostgreSQL) są tutaj, aby to udowodnić.

Funkcje wciąż się pojawiają. Niewiele pozostało rzeczy, które komercyjni dostawcy mogą wskazać jako wyraźną przewagę. Wśród nich jest obsługa SMP, dwukierunkowa replikacja i narzędzia zewnętrzne. Zgadnij, nad czym teraz pracuje społeczność i najprawdopodobniej wyda w ciągu najbliższych kilku lat?

Rozszerzaj PostgreSQL w dowolny sposób

PostgreSQL ma żywą społeczność autorów, którzy piszą oprogramowanie pomocnicze. Obejmuje to podłączanie dowolnego języka i używanie go do rozszerzania PostgreSQL w dowolny sposób, który wydaje się pomocny. Czy lubisz obsługę ciągów perla? Ok, to użyj tego. A co z obsługą map w Pythonie? Jasne, po prostu podłącz Pythona i idź do miasta. Chcesz pisać usługi internetowe przy użyciu zaplecza PostgreSQL? To niesamowite, a PostgreSQL pomoże. JSON? Ok. XML? Obstawiasz. PostgreSQL obsługuje to wszystko i nieskończenie więcej. Jeśli możesz wymyślić język, który robi to dobrze, podłącz go do PostgreSQL i możesz mieć go po stronie serwera.

Możesz tworzyć własne funkcje, typy danych, operatory, agregaty, funkcje okien lub praktycznie cokolwiek innego. Nie widzisz funkcji, która Ci się podoba? Plagiatuj i dostosuj go z kodu źródłowego. Możesz to zrobić dzięki licencji.

PostgreSQL zapewnia również kilka funkcji przechwytujących, które umożliwiają rozszerzenie bazy danych bez konieczności popadania w skrajności programistyczne.

Ta zdolność do przyswojenia dowolnej funkcji dowolnego innego języka jest unikalna dla PostgreSQL. Możesz udostępnić dowolną funkcję, korzystając z dowolnej istniejącej standardowej biblioteki. Możesz przestrzegać standardów, być na bieżąco ze zmianami, nadal aktualizować PostgreSQL, gdy jest żywy, i możesz to wszystko robić za darmo.

Idź duży i szeroki

PostgreSQL ma kilka funkcji, które pozwalają w pełni wykorzystać platformę sprzętową, którą otrzymał. Partycjonowanie, wykonywanie równoległe, częściowe indeksy, przestrzenie tabel, buforowanie i równoległe, nieblokujące procedury konserwacyjne (prawie wszystko w PostgreSQL wypuszcza ostatnio słowo kluczowe CONCURRENTLY).

Jeśli to ci nie wystarczy, fizyczna replikacja strumieniowa zapewni ci taniej gotowości do odczytu. Sharding, memcache, kolejkowanie, równoważenie obciążenia i łączenie połączeń - wszystko to działa z PostgreSQL. Wciąż za mało? Co powiesz na logiczną replikację strumieniową? Chcesz geoshardować bazę danych na całym świecie, mówisz? Cóż, witamy w dwukierunkowej replikacji.

A cena nadal wynosi 0 USD.

Zaindeksuj to wszystko

PostgreSQL obsługuje tak ogromną listę indeksów, że aż zdumiewa umysł, aby dowiedzieć się, jak ich wszystkich użyć. Dostępne są GiST, SP-Gist, KNN Gist, GIN, BRIN i Btree. A dzięki systemowi rozszerzeń można uzyskać więcej, takie jak filtry Bloom i inne.

PostgreSQL może ich używać z indeksami sterowanymi funkcjami, indeksami częściowymi, obejmującymi indeksy i wyszukiwaniem pełnotekstowym. A te rozszerzone funkcje nie wykluczają się wzajemnie. Możesz ich wszystkich używać jednocześnie.

Wsuń, rozwiń

Kilka z wymienionych już technologii sprawia, że ​​PostgreSQL jest fantastyczną platformą do integracji i dystrybucji danych. Wiele form replikacji w połączeniu z wieloma formami federacji zapewnia technologie push i pull dla prawie każdego rodzaju systemu danych.

Można je łączyć w nieskończone konfiguracje, aby połączyć rozwiązania pamięci masowej bazy danych. Wszystko to bez konieczności posiadania jakiegokolwiek pakietu przetwarzania ETL/ELT. PostgreSQL po prostu to robi. Najszybsza jednoźródłowa baza danych prawdy na świecie robi to, nie usuwając w ogóle danych z systemu źródłowego. Oznacza to, że dane są zawsze aktualne, a czasem odpowiedzi można zarządzać.

Jeśli nie możesz znieść zawodności systemu źródłowego lub chcesz nieco lepszej wydajności po stronie zapytań, możesz również okresowo buforować dane za pomocą widoków zmaterializowanych, które można aktualizować, gdy nadal są wysyłane zapytania.

Licencja jest szeroko otwarta

PostgreSQL posiada własną licencję, która w dużej mierze opiera się na licencji BSD. Pozwala to na jeszcze większą swobodę użytkowania i dystrybucji.

Licencja dotyczy całego kodu głównego projektu, głównych rozszerzeń, bibliotek klienta, menedżerów połączeń i większości powiązanych narzędzi.

Jest bardzo liberalny, napisany prostym językiem i nie można go kupić.

Fantastyczna dokumentacja

Projekt PostgreSQL wymaga, aby każdy programista przesyłający kod dostarczył dokumentację do propozycji. Ta propozycja służy do tworzenia dokumentacji funkcji, która jest udostępniana w kilku formatach. Ta dokumentacja jest również wykorzystywana do oceny samej funkcji oraz jako odniesienie do opracowywania przyszłych funkcji.

Wszystko to razem oznacza, że ​​PostgreSQL żyje z dokumentacji. Jest wielu programistów PostgreSQL, którzy nauczyli się kodować w C, jak działają bazy danych i jak zarządza się projektami pracując z projektem PostgreSQL. Ta dokumentacja nie ma sobie równych.

Rozwój oparty na testach

PostgreSQL jest intensywnie testowany. Nie, to nie jest wystarczająco mocne. PostgreSQL jest wyczerpująco testowany. Każdy błąd jest poddawany testowi, aby zweryfikować jego istnienie, a kod jest pisany, aby spełnić test. Nowe funkcje są najpierw pisane przez tworzenie testów (i dokumentacji), a następnie kodowane, aż do pojawienia się funkcji.

Testy te są zintegrowane z farmą kompilacji na potrzeby regresji, więc błędy nie pojawiają się (ponownie) w przyszłych wersjach PostgreSQL. Oznacza to, że każdy test (który jest wciąż aktualny) jest uruchamiany dla każdej wersji PostgreSQL w każdym cyklu kompilacji. To dużo testów i zapewnia, że ​​PostgreSQL pozostanie najbardziej stabilną dostępną bazą danych.

PostgreSQL jest publikowany tylko wtedy, gdy WSZYSTKIE testy regresji zakończą się pomyślnie. Zapewnia to wydania „0 znanych błędów”.

Internacjonalizacja i lokalizacja

Twórcy PostgreSQL pochodzą z całego świata. Pracowali w wielu językach ojczystych od momentu powstania PostgreSQL jako projektu absolwentów uczelni. Internacjonalizacja i lokalizacja zostały wdrożone w PostgreSQL jako standardowa praktyka, a nie strzał w dziesiątkę, gdy PostgreSQL zaczął przyciągać komercyjny rynek globalny.

Podczas gdy PostgreSQL deleguje część internacjonalizacji do systemu operacyjnego ze względu na kompatybilność, znaczna część tłumaczenia jest osadzona w systemie, zapewniając płynną zmianę języka.

Działanie w chmurze

PostgreSQL działa w architekturach chmurowych przy użyciu ansible, kubernetes i zastrzeżonych narzędzi od wielu dostawców chmury. Istnieje kilka natywnych implementacji chmury do wyboru, aby dopasować je do Twojej architektury.

Jeśli chcesz traktować serwery jak bydło, a nie zwierzęta domowe, PostgreSQL ma Cię również w chmurze.

Zgodność ze standardami

PostgreSQL był standardem skupionym na czasie trwania projektu. Ponieważ PostgreSQL powstał w ramach programu studiów magisterskich na uniwersytecie, był używany jako implementacja referencyjna dla wielu standardów SQL.

PostgreSQL implementuje SQL/Med i ANSI SQL.

Zgodnie z fantastyczną dokumentacją „PostgreSQL obsługuje większość głównych funkcji SQL:2016. Spośród 179 obowiązkowych funkcji wymaganych do pełnej zgodności z Core, PostgreSQL jest zgodny z co najmniej 160.” To więcej niż prawie każdy inny silnik bazy danych.

Funkcje językowe

PostgreSQL implementuje wspólne wyrażenia tabelowe (CTE), struktury kontroli języka (jeśli, for, przypadek itp.), ustrukturyzowaną obsługę błędów i wszystkie zalety, których można oczekiwać od dojrzałego języka proceduralnego.

Czy jesteś już przekonany?

Mógłbym jeszcze mówić o fantastycznej społeczności grup użytkowników, kanałach IRC, stronach internetowych z rozwiązaniami, artykułach na blogach i mentorach. Mógłbym woskować filozoficznie sposób, w jaki baza danych jest międzyplatformowa, międzyarchitekturowa i międzykulturowa. Istnieje wiele godzin prezentacji, filmów i wykładów.

Możesz też po prostu go pobrać i sprawdzić, czy jest większy niż Twoja wyobraźnia. Myślę, że będziesz bardzo mile zaskoczony.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie docker-compose do tworzenia tabel w bazie postgresql

  2. Usuwanie rekordów ze zdalnej bazy postgresql przy użyciu lokalnie dostarczonej listy

  3. Przedstawiamy Barman 1.0, Backup and Recovery Manager dla PostgreSQL

  4. Uruchamianie i zapełnianie kontenera Postgres w Docker

  5. Domyślna lokalizacja bazy danych PostgreSQL w systemie Linux