Titulek není clickbait ani hyperbola. Mám v úmyslu dokázat, že na základě návrhu i implementace je PostgreSQL objektivně a měřitelně lepší databází než cokoliv, co je v současnosti dostupné, ať už s finančními ohledy nebo bez nich.
Jak proboha mohu tvrdit a ospravedlnit tak vznešené prohlášení? Čtěte dál, něžný blbečku. Slibuji, že váš čas nebude promarněn.
Transparentní zabezpečení
PostgreSQL má bezpečnostní mailing list. Projekt PostgreSQL se učí o vektorech narušení ve stejnou dobu jako všichni ostatní. Nic není skryto a na čemkoli, co se najde, se pracuje rychlostí, z níž se komerčním prodejcům zatočí hlava. Nenechte se zmást kratšími seznamy závad publikovanými stejným dodavatelem, který poskytuje kontrolovaný software.
To znamená, že všechny známé útočné vektory jsou zpracovány, jakmile jsou zveřejněny. Tento druh bezpečnostní odezvy není na komerčním trhu ani uvažovatelný. Pro komerční prodejce je pro nápravu životně důležité mlčenlivost, dokud nebude možné problém vyřešit. PostgreSQL takovou úlevu nezíská, a to je pro vás fantastické.
Ovládání souběžnosti více verzí je pro vás dobré
PostgreSQL vybírá metodu kontroly souběžnosti, která nejlépe funguje pro vysoké zatížení INSERT a SELECT.
Je velmi snadné navrhnout pro PostgreSQL, přičemž je třeba mít na paměti omezení pro režii sledování pro
AKTUALIZOVAT a SMAZAT. Většinou, pokud respektujete svá data, měli byste se naučit milovat zabezpečení dat, které vám PostgreSQL poskytuje.
DDL se účastní transakcí pomocí PostgreSQL. Migrace fungují úplně nebo vůbec (nejhorší nefungování je téměř fungující). Zkušební postroje se staví snadno. Potřebujete resetovat testovací postroj? Jen VRATIT.
PostgreSQL podporuje formy izolace transakcí vyhovující standardům, včetně serializace, potvrzení pro čtení a opakovatelného čtení. Tyto metody zajišťují úplnou shodu s ACID.
PostgreSQL dělá všechno
Takže chcete NoSQL, Riak, REACT, Redis, Mongo atd.? To vše dělá PostgreSQL. Je pravda, že ne se všemi zvonky a píšťalkami všech původních produktů. Například PostgreSQL pro vás nevytváří nové fragmenty pro žádný z nich. To je stále ruční proces. Ale znovu, vždy je tu pg_partman. . .
Chcete úložiště dat sloupců? Co takhle hstore? Nechcete rekvalifikovat své zaměstnance? Zapojte jazyk podle svého výběru a pokračujte v přepravě. Chcete částečnou replikaci? Streaming Logická replikace je pro vás.
Těžko bych vymýšlel funkci, kterou bych chtěl, aby PostgreSQL neměl, nebo kterou by mi nedalo žádné známé rozšíření.
Chcete extrahovat data z jiných systémů? PostgreSQL má nejživější sbírku federačních objektů ze všech databází. Říkají jim cizí datové obaly a PostgreSQL můžete připojit k aligátorovi pomocí lepicí pásky a zipu. Zacházejte se vším, jako by to byla vaše data.
Připojte jej k mapě
Komunita PostGIS může být pravděpodobně větší než samotná komunita PostgreSQL. Mapovací schopnosti PostgreSQL jej řadí do třídy samo o sobě, dokonce i ve srovnání s velmi drahými alternativami.
Projekt PostGIS si vybral PostgreSQL jako platformu kvůli snadné rozšiřitelnosti a rozsáhlým možnostem obohacování dat. Tyto schopnosti jsou přímo vystaveny pro jakýkoli jiný projekt, který lze využít. Také na ně neodpovídá žádný jiný prodejce, komerční nebo open source.
Nakonec jej můžete připojit k čemukoli.
PostgreSQL se rozrůstá a je na špičce v oblasti open source
Projekt PostgreSQL je jednou z nejviditelnějších organizací v oblasti open source softwaru. S obrovskou komunitou a rostoucí astronomickou rychlostí budou všechny nedostatky, které nyní má, pravděpodobně odstraněny v časovém rámci, o kterém si ostatní prodejci mohou nechat jen zdát.
Další funkce podnikové kvality jsou oznamovány doslova každý den a zaměstnanci, kteří tyto funkce udržují, se sami vybírají ze skupiny géniů, které chce každá společnost najmout, a není jich dostatek.
PostgreSQL vytváří řešení, která jsou navždy stabilní
PostgreSQL má v jádru zabudovanou logickou replikaci. To umožňuje migraci mezi verzemi. Přečtěte si to znovu. Nejste uzamčeni na konkrétní verzi hardwaru nebo softwaru. Řešení lze upgradovat donekonečna.
PostgreSQL je také podporován na mnoha platformách, včetně superstabilních verzí Linuxu. Potřebujete řešení, které přežije typickou návratnost investic 3~5 let? PostgreSQL vám vydrží navždy, i když hardware nikdy neupgradujete. A poplatky za to lze snadno vypočítat. 0 $.
Deklarativní je lepší než imperativ
Databázové jazyky jsou obecně deklarativní. To znamená, že napíšete dotaz ve vestavěném jazyce podle vašeho výběru a popíšete výsledky, které byste chtěli vidět. Databáze se snaží dekódovat vaše záměry a poskytnout odpovídající výsledky. To je základem všech deklarativních programovacích modelů. V PostgreSQL jde o mapování funkcí na klíčová slova v jazyce SQL, někdy s několika algoritmickými volbami, jak přesně implementovat každou deklaraci.
Ve starém sporu o imperitivních versus deklarativních5 programovacích modelech mě napadá, že deklarativní programování je jen imperativní programování v tenkém přestrojení. Každý deklarativní token v databázovém dotazovacím jazyce se nakonec mapuje na jeden nebo několik algoritmů, které aplikují deklaraci v imperitivních podmínkách. Nesoulad impedance definovaný Henriettou je tedy nakonec v mysli vývojáře. To znamená, že pokud by vývojář uvažoval přesně tak, jak si myslí programátor databázových funkcí, pak by k žádné neshodě nedošlo.
Jak by tedy mohl být deklarativní model nakonec lepší než imperitivní model, když vezmeme v úvahu, že jeden je pouze volajícím rysem druhého? Jsem rád, že ses zeptal, protože tím se dostávám k mému bodu.
Vývojáři PostgreSQL jsou chytřejší než vy. Nemyslím tím, že bych byl hloupý nebo stydlivý. Doslova tisíce přispěvatelů přispěly miliony příspěvků do projektu PostgreSQL, mnoho z nich jako vylepšení příspěvků ostatních. Šance, že cokoli, co jste si na hlavě vymysleli, je lepší než to, co již bylo implementováno, je velmi nízké. A i kdyby byly vaše myšlenky lepší, měli byste je přispět do projektu PostgreSQL ve prospěch všech, čímž zvýšíte laťku pro všechny ostatní.
Co tedy dělá PostgreSQL tak úžasným? Celosvětové sdílení myšlenek bez firemních ohledů. Tisíce vývojářů pracují stovky tisíc hodin, aby udělali lepší výběr algoritmů. Váš software se tedy každým vydáním zlepšuje, většinou aniž byste museli z vaší strany něco konkrétního dělat.
Není to povaha softwaru obecně, říkáte? Dobře, ano. Ale ne v takovém rozsahu, jako když je do vašeho projektu zapojen celý svět. PostgreSQL má velmi prominentní místo v komunitě open source. Komerční prodejci nikdy nebudou schopni držet krok s rychlostí změn, kterou může open source projekt poskytnout na této úrovni. Migrace na open source (a zejména PostgreSQL) jsou tady, aby to dokázaly.
Funkce se neustále přidávají. Zbývá jen velmi málo věcí, které mohou komerční prodejci označit za výraznou výhodu. Mezi tyto věci patří podpora SMP, obousměrná replikace a externí nástroje. Hádejte, na čem komunita nyní pracuje a co velmi pravděpodobně vydá v příštích několika letech?
Rozšiřte PostgreSQL, jak chcete
PostgreSQL má živou komunitu autorů, kteří píší doplňkový software. To zahrnuje připojení libovolného jazyka, který se vám líbí, a jeho použití k rozšíření PostgreSQL jakýmkoli způsobem, který se zdá užitečný. Máte rádi manipulaci s perlovými řetězci? Ok, tak to použij. Jak je to s podporou map v Pythonu? Jasně, stačí zapojit python a jít do města. Chcete psát webové služby pomocí back-endu PostgreSQL? To je skvělé a PostgreSQL vám pomůže. JSON? OK. XML? To se vsaď. PostgreSQL má přímou podporu pro to vše a nekonečně více. Pokud vás napadne jazyk, který to dělá dobře, zapojte ho do PostgreSQL a můžete jej mít na straně serveru.
Můžete si vytvořit vlastní funkce, datové typy, operátory, agregáty, okenní funkce nebo v podstatě cokoli jiného. Nevidíte funkci, která se vám líbí? Plagiujte a přizpůsobte jej ze zdrojového kódu. Díky licenci to můžete udělat zdarma.
PostgreSQL také poskytuje některé hákové funkce, které vám umožní rozšířit databázi, aniž byste museli zacházet do programovacích extrémů.
Tato schopnost asimilovat jakoukoli vlastnost jakéhokoli jiného jazyka je jedinečná pro PostgreSQL. Můžete poskytnout jakoukoli funkci pomocí jakékoli existující standardizované knihovny. Můžete dodržovat standardy, držet krok se změnami, stále aktualizovat PostgreSQL, dokud je naživu, a to vše můžete dělat zdarma.
Jděte na maximum a rozšiřte se
PostgreSQL má několik funkcí, jak maximálně využít hardwarovou platformu, která mu byla dána. Rozdělování, paralelní spouštění, částečné indexy, tabulkové prostory, ukládání do mezipaměti a paralelní neblokovací rutiny údržby (téměř všechno v PostgreSQL v poslední době raší klíčové slovo CONCURRENTLY).
Když vám to nestačí, fyzická replikace streamování vám levně zajistí spoustu pohotovostního režimu pro čtení. Sdílení, memcache, fronty, vyvažování zátěže a sdružování připojení, to vše funguje s PostgreSQL. Stále málo? Co takhle replikace logického streamování? Chcete geoshardovat databázi po celém světě, říkáte? Vítejte v obousměrné replikaci.
A cenovka je stále na 0 $.
Indexujte vše
PostgreSQL podporuje tak obrovský seznam indexů, že to vrtá hlavou, aby zjistil, jak je všechny použít. K dispozici jsou GiST, SP-Gist, KNN Gist, GIN, BRIN a Btree. A je toho víc, co lze získat prostřednictvím systému rozšíření, jako jsou Bloomovy filtry a další.
PostgreSQL je může používat s indexy řízenými funkcemi, částečnými indexy, krycími indexy a fulltextovým vyhledáváním. A tyto rozšířené funkce se vzájemně nevylučují. Můžete je používat všechny současně.
Zahrnout, rozvinout
Několik již zmíněných technologií dělá z PostgreSQL fantastickou platformu pro integraci a distribuci dat. Různé formy replikace v kombinaci s různými formami federace poskytují technologie push i pull pro téměř jakýkoli druh datového systému.
Ty lze kombinovat v nekonečných konfiguracích pro přemostění řešení úložiště databáze. To vše bez nutnosti jakéhokoli balíčku ETL/ELT zpracování. PostgreSQL to prostě dělá. Nejrychlejší jediný zdroj databáze pravdy na planetě to dělá tak, že vůbec nepřesouvá data ze zdrojového systému. To znamená, že data jsou vždy aktuální a dobu odezvy lze spravovat.
Pokud nesnesete nespolehlivost zdrojového systému nebo byste chtěli trochu lepší výkon na straně dotazů, můžete data také pravidelně ukládat do mezipaměti s materializovanými pohledy, které lze aktualizovat, zatímco stále probíhá dotaz.
Licence je otevřená
PostgreSQL má svou vlastní licenci, která je z velké části založena na licenci BSD. To umožňuje ještě větší svobodu použití a distribuce.
Licence se vztahuje na veškerý kód hlavního projektu, rozšíření hlavních příspěvků, klientské knihovny, správce připojení a většinu souvisejících nástrojů.
Je vysoce tolerantní, napsaný v jednoduché angličtině a nelze jej zakoupit.
Fantastická dokumentace
Projekt PostgreSQL vyžaduje, aby každý vývojář předkládající kód poskytl dokumentaci k návrhu. Tento návrh se používá k vytvoření dokumentace pro funkci, která je k dispozici v několika formátech. Tato dokumentace se také používá při hodnocení samotné funkce a jako reference pro vývoj budoucích funkcí.
Dohromady to znamená, že PostgreSQL žije na dokumentaci. Existuje mnoho vývojářů pro PostgreSQL, kteří se naučili kódovat v C, jak fungují databáze a jak jsou projekty řízeny prací s projektem PostgreSQL. Tato dokumentace je bezkonkurenční.
Test řízený vývoj
PostgreSQL je důkladně testován. Ne, to neříká dostatečně důrazně. PostgreSQL je důkladně testován. Každá chyba je podrobena testu, který ověří její existenci, a kód je napsán tak, aby test splnil. Nové funkce jsou psány nejprve vytvořením testů (a dokumentace) a poté kódováním, dokud se funkce neobjeví.
Tyto testy jsou integrovány do sestavovací farmy pro regresi, takže chyby se (znovu) neobjevují v budoucích verzích PostgreSQL. To znamená, že každý test (který je stále aktuální) je spuštěn pro každou verzi PostgreSQL pro každý cyklus sestavení. To je spousta testování a zajišťuje, že PostgreSQL zůstane nejstabilnější databází, která je k dispozici.
PostgreSQL je uvolněn pouze tehdy, když projdou VŠECHNY regresní testy. To zajišťuje vydání „0 známých chyb“.
Internacionalizace a lokalizace
Vývojáři PostgreSQL pocházejí z celého světa. Pracují v mnoha rodných jazycích od vzniku PostgreSQL jako absolventského projektu vysoké školy. Internacionalizace a lokalizace byly zapečeny do PostgreSQL jako standardní postup, nikoli jako blesk, protože PostgreSQL začal přitahovat komerční globální trh.
Zatímco PostgreSQL deleguje část internacionalizace na operační systém z důvodů kompatibility, velká část překladu je zabudována do systému, což zajišťuje bezproblémový přechod mezi jazyky.
Cloudový provoz
PostgreSQL funguje v cloudových architekturách pomocí ansible, kubernetes a proprietárních nástrojů od různých cloudových dodavatelů. Na výběr je několik nativních cloudových implementací, které odpovídají vaší architektuře.
Pokud chcete se servery zacházet jako s dobytkem, ne s domácími mazlíčky, PostgreSQL vás také pokryje v cloudu.
Soulad se standardy
PostgreSQL byl standard zaměřený po celou dobu životnosti projektu. Protože PostgreSQL vznikl v rámci univerzitního absolventského programu, byl používán jako referenční implementace pro mnoho standardů SQL.
PostgreSQL implementuje SQL/Med a ANSI SQL.
Podle fantastické dokumentace „PostgreSQL podporuje většinu hlavních funkcí SQL:2016. Ze 179 povinných funkcí požadovaných pro plnou shodu s jádrem PostgreSQL vyhovuje alespoň 160.“ To je více než téměř jakýkoli jiný databázový stroj.
Jazykové funkce
PostgreSQL implementuje běžné tabulkové výrazy (CTE), struktury ovládání jazyka (if, for, case atd.), strukturované zpracování chyb a všechny vychytávky, které byste očekávali od vyspělého procedurálního jazyka.
Jste již přesvědčeni?
Stále bych mohl mluvit o fantastické komunitě uživatelských skupin, IRC kanálech, webových stránkách s řešeními, blogových článcích a mentorech. Mohl bych filozofovat o způsobu, jakým je databáze multiplatformní, mezi architekturou a kulturou. Jsou to hodiny a hodiny prezentací, videí a přednášek.
Nebo si ji můžete jít stáhnout a zjistit, jestli je větší, než vaše představy. Myslím, že budete velmi příjemně překvapeni.