Oracle Relational Database Management System (RDBMS) je široce používán velkými organizacemi a je považován za zdaleka nejpokročilejší databázovou technologii dostupnou na trhu. Je to obvykle nejčastěji srovnávané RDBMS s jinými databázovými produkty, které slouží jako standardní „de-facto“ toho, co by měl produkt nabízet. Podle db-engines.com je hodnocena jako #1 RDBMS, která je dnes na trhu dostupná.
PostgreSQL je hodnocen jako #4 RDBMS, ale to neznamená, že migrace na PostgreSQL nemá žádné výhody. PostgreSQL existuje od roku 1989, v roce 1996 byl otevřen jako open-source. PostgreSQL vyhrál DBMS roku ve dvou po sobě jdoucích letech od roku 2017 a 2018. To jen naznačuje, že nic nenasvědčuje tomu, že by přilákal velký počet uživatelů a velkých organizací.
Jedním z důvodů, proč PostgreSQL přitahuje velkou pozornost, je to, že lidé hledají alternativu k Oracle, aby mohli organizacím snížit vysoké náklady a uniknout uzamčení dodavatele.
Přechod z fungující a produktivní databáze Oracle může být náročný úkol. Obavy, jako jsou TCO (Total Cost of Ownership) společnosti, jsou jedním z důvodů, proč společnosti táhnou své rozhodnutí, zda se vzdát Oracle nebo ne.
V tomto blogu se podíváme na některé z hlavních důvodů, proč se společnosti rozhodly opustit Oracle a přejít na PostgreSQL.
Důvod první:Jde o skutečný projekt s otevřeným zdrojovým kódem
PostgreSQL je open-source a je vydáván pod PostgreSQL License, liberální Open Source licencí, podobnou licencím BSD nebo MIT. Získání produktu a podpory nevyžaduje žádné poplatky.
Pokud chcete využít databázový software, znamená to, že můžete získat všechny dostupné funkce databáze PostgreSQL zdarma. PostgreSQL je ve světě databází vyspělý více než 30 let a od roku 1996 je založen na doteku jako open-source. Už desítky let se těší vývojářům pracujícím na vytváření rozšíření. To samo o sobě vede vývojáře, instituce a organizace k výběru PostgreSQL pro podnikové aplikace; pohání přední obchodní a mobilní aplikace.
Organizace se opět probouzejí a uvědomují si, že databázová řešení s otevřeným zdrojovým kódem, jako je Postgres, nabízejí větší kapacitu, flexibilitu a podporu, která není zcela závislá na jedné společnosti nebo vývojáři. Postgres, stejně jako předtím Linux, byl (a nadále je) navržen oddanými uživateli řešícími každodenní obchodní problémy, kteří se rozhodli vrátit svá řešení komunitě. Na rozdíl od velkého vývojáře, jako je Oracle, který může mít různé motivy vývoje produktů, které jsou ziskové nebo podporují úzký, ale lukrativní trh, je komunita Postgres odhodlána vyvíjet ty nejlepší možné nástroje pro každodenní uživatele relačních databází.
PostgreSQL tyto úkoly často provádí bez přílišné složitosti. Jeho design je zaměřen výhradně na práci s databází, aniž by bylo nutné plýtvat zdroji, jako je správa dalších IT prostředí prostřednictvím přidaných funkcí. Je to jedna z věcí, kterou mají spotřebitelé tohoto open-source softwaru rádi při migraci z Oracle na PostgreSQL. Trávit hodiny studiem složité technologie o tom, jak funguje databáze Oracle nebo jak ji optimalizovat a vyladit, může skončit s její drahou podporou. To láká instituce nebo organizace k nalezení alternativy, která může být méně nákladná a přináší zisk a produktivitu. Podívejte se prosím na náš předchozí blog o tom, jak dokáže PostgreSQL sladit přítomnost syntaxe SQL se syntaxí Oracle.
Důvod druhý:Žádná licence a velká komunita
Pro uživatele platformy Oracle RDBMS je obtížné najít jakýkoli typ podpory komunity, který by byl zdarma nebo bez vysokých poplatků. Instituce, organizace a vývojáři často nakonec najdou alternativní informace online, které mohou zdarma nabídnout odpovědi nebo řešení jejich problémů.
Při používání Oracle je obtížné rozhodnout se pro konkrétní produkt nebo zda se obrátit na podporu produktu, protože jde (obvykle) o hodně peněz. Můžete vyzkoušet konkrétní produkt, abyste ho otestovali, nakonec si ho koupíte, jen abyste si uvědomili, že vám nemůže pomoci. S PostgreSQL je komunita bezplatná a plná odborníků s rozsáhlými zkušenostmi, kteří vám rádi pomohou s vašimi aktuálními problémy.
Můžete se přihlásit k odběru mailing listu přímo zde na https://lists.postgresql.org/ a začít oslovovat komunitu. Začátečníci nebo zázraky PostgreSQL touch se sídlem zde, aby mohli komunikovat, předvádět a sdílet svá řešení, technologie, chyby, nová zjištění nebo dokonce sdílet svůj vznikající software. Můžete dokonce požádat o pomoc z IRC chatu pomocí irc.freenode.net a připojením ke kanálu #postgresql. Komunitu můžete oslovit také prostřednictvím Slacku, když se připojíte na https://postgres-slack.herokuapp.com/ nebo https://postgresteam.slack.com/. Existuje mnoho možností a mnoho organizací s otevřeným zdrojovým kódem, které vám mohou nabídnout otázky
Další podrobnosti a informace o tom, kde začít, naleznete zde https://www.postgresql.org/community/.
Pokud si chcete vyzkoušet profesionální služby v PostgreSQL, máte na výběr z mnoha možností. I když se podíváte na jejich webovou stránku https://www.postgresql.org/support/professional_support/northamerica/, najdete tam velký seznam společností a některé z nich jsou za nízkou cenu. Dokonce i zde v Somenines nabízíme také podporu pro Postgres, která je součástí licence ClusterControl nebo DBA Consultancy.
Důvod třetí: Široká podpora pro shodu SQL
PostgreSQL se vždy snažil přizpůsobit a přizpůsobit se SQL jako de facto standardu pro svůj jazyk. Formální název standardu SQL je ISO/IEC 9075 „Databázový jazyk SQL“. Jakékoli následné revidované verze standardních vydání nahrazují předchozí, takže prohlášení o shodě s dřívějšími verzemi nemají žádnou oficiální hodnotu.
Na rozdíl od Oracle jsou stále přítomna některá klíčová slova nebo operátory, které neodpovídají standardu ANSI SQL (Structured Query Language). Například operátor OUTER JOIN (+) může připisovat záměny s jinými správci databází, kteří se nedotkli nebo jsou nejméně obeznámeni s Oracle. PostgreSQL se řídí standardem ANSI-SQL pro syntaxi JOIN, což ponechává výhodu snadného a jednoduchého přeskakování s jinými open-source databázemi RDBMS, jako jsou databáze MySQL/Percona/MariaDB.
Další syntaxí, která je u Oracle velmi běžná, je použití hierarchických dotazů. Oracle používá nestandardní syntaxi START WITH..CONNECT BY, zatímco v SQL:1999 jsou hierarchické dotazy implementovány prostřednictvím rekurzivních běžných tabulkových výrazů. Například níže uvedené dotazy se liší svou syntaxí v souladu s hierarchickými dotazy:
Oracle
SELECT
restaurant_name,
city_name
FROM
restaurants rs
START WITH rs.city_name = 'TOKYO'
CONNECT BY PRIOR rs.restaurant_name = rs.city_name;
PostgreSQL
WITH RECURSIVE tmp AS (SELECT restaurant_name, city_name
FROM restaurants
WHERE city_name = 'TOKYO'
UNION
SELECT m.restaurant_name, m.city_name
FROM restaurants m
JOIN tmp ON tmp.restaurant_name = m.city_name)
SELECT restaurant_name, city_name FROM tmp;
PostgreSQL má velmi podobný přístup jako ostatní špičkové open-source RDBMS, jako je MySQL/MariaDB.
Podle manuálu PostgreSQL se vývoj PostgreSQL zaměřuje na shodu s nejnovější oficiální verzí standardu tam, kde taková shoda neodporuje tradičním funkcím nebo zdravému rozumu. Mnoho funkcí požadovaných standardem SQL je podporováno, i když někdy s mírně odlišnou syntaxí nebo funkcí. To je ve skutečnosti to, co je na PostgreSQL skvělé, protože je také podporováno a spolupracují na něm různé organizace, ať už jsou malé nebo velké. Krása zůstává na shodě jazyka SQL s tím, co se prosadilo ve standardu.
Vývoj PostgreSQL se zaměřuje na shodu s nejnovější oficiální verzí standardu, kde taková shoda není v rozporu s tradičními funkcemi nebo zdravým rozumem. Mnoho funkcí požadovaných standardem SQL je podporováno, i když někdy s mírně odlišnou syntaxí nebo funkcí. Postupem času lze očekávat další posuny směrem ke shodě.
Důvod čtvrtý:Paralelnost dotazů
Abychom byli spravedliví, paralelní dotazování PostgreSQL není tak bohaté ve srovnání s paralelním prováděním příkazů SQL od Oracle. Mezi vlastnosti paralelismu Oracle patří řazení příkazů do fronty s radami, schopnost nastavit stupeň paralelismu (DOP), nastavit politiku paralelního stupně nebo adaptivní paralelismus.
PostgreSQL má jednoduchý stupeň paralelismu na základě podporovaných plánů, ale to nedefinuje, že Oracle převyšuje open source PostgreSQL.
Paralelismus PostgreSQL se neustále zlepšuje a neustále vylepšuje komunitou. Když byl vydán PostgreSQL 10, přidal další atraktivitu pro veřejnost, zejména vylepšení podpory paralelismu pro slučovací spojení, skenování bitmapové haldy, skenování indexu a skenování pouze indexu, shromažďování sloučení atd. Vylepšení také přidává statistiky do pg_stat_activity.
Ve verzích PostgreSQL <10 je paralelismus ve výchozím nastavení zakázán, což je potřeba nastavit proměnnou max_parallel_workers_per_gather.
postgres=# \timing
Timing is on.
postgres=# explain analyze select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Seq Scan on movies (cost=0.00..215677.28 rows=41630 width=68) (actual time=0.013..522.520 rows=84473 loops=1)
Filter: ((birthyear >= 1980) AND (birthyear <= 2005))
Rows Removed by Filter: 8241546
Planning time: 0.039 ms
Execution time: 525.195 ms
(5 rows)
Time: 525.582 ms
postgres=# \o /dev/null
postgres=# select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;
Time: 596.947 ms
Plán dotazu ukazuje, že skutečná doba může být kolem 522,5 ms, poté se skutečná doba provedení dotazu pohybuje kolem 596,95 ms. Zatímco povolení paralelismu,
postgres=# set max_parallel_workers_per_gather=2;
Time: 0.247 ms
postgres=# explain analyze select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------
Gather (cost=1000.00..147987.62 rows=41630 width=68) (actual time=0.172..339.258 rows=84473 loops=1)
Workers Planned: 2
Workers Launched: 2
-> Parallel Seq Scan on movies (cost=0.00..142824.62 rows=17346 width=68) (actual time=0.029..264.980 rows=28158 loops=3)
Filter: ((birthyear >= 1980) AND (birthyear <= 2005))
Rows Removed by Filter: 2747182
Planning time: 0.096 ms
Execution time: 342.735 ms
(8 rows)
Time: 343.142 ms
postgres=# \o /dev/null
postgres=# select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;
Time: 346.020 ms
Plán dotazů určuje, že dotaz potřebuje používat paralelismus, a pak používá uzel Gather. Je to odhad skutečného času na 339 ms se 2 pracemi a odhady na 264 ms, než byl agregován plánem dotazů. Nyní skutečná doba provádění dotazu trvala 346 ms, což je velmi blízko odhadovanému skutečnému času z plánu dotazu.
To jen ilustruje, jak rychlé a přínosné je s PostgreSQL. Ačkoli PostgreSQL má své vlastní limity, kdy může dojít k paralelismu nebo když plán dotazů určí, že je rychlejší než použít paralelismus, nečiní jeho funkce tak velký rozdíl než Oracle. Paralelismus PostgreSQL je flexibilní a lze jej povolit nebo správně používat, pokud váš dotaz odpovídá sekvenci požadované pro paralelismus dotazu.
Pátý důvod:Pokročilá podpora JSON a neustále se zlepšuje
Podpora JSON v PostgreSQL je vždy na stejné úrovni ve srovnání s jinými open source RDBMS. Podívejte se na tento externí blog z LiveJournal, kde podpora PostgreSQL JSON odhaluje, že je vždy pokročilejší ve srovnání s ostatními RDBMS. PostgreSQL má velké množství funkcí a vlastností JSON.
Datový typ JSON byl zaveden v PostgreSQL-9.2. Od té doby prošel řadou významných vylepšení a mezi hlavní přírůstky, které se objevily v PostgreSQL-9.4, byl přidán datový typ JSONB. PostgreSQL nabízí dva datové typy pro ukládání dat JSON:json a jsonb. S jsonb je to pokročilá verze datového typu JSON, která ukládá data JSON v binárním formátu. Toto je hlavní vylepšení, které výrazně změnilo způsob vyhledávání a zpracování dat JSON v PostgreSQL.
Oracle má také rozsáhlou podporu JSON. Naproti tomu PostgreSQL má rozsáhlou podporu a také funkce, které lze použít pro získávání dat, formátování dat nebo podmíněné operace, které ovlivňují výstup dat nebo dokonce data uložená v databázi. Data uložená s datovým typem jsonb mají větší výhodu ve schopnosti používat GIN (Generalized Inverted Index), který lze použít k efektivnímu vyhledávání klíčů nebo párů klíč/hodnota vyskytujících se ve velkém počtu dokumentů jsonb.
PostgreSQL má další rozšíření, která jsou užitečná pro implementaci TRANSFORM FOR TYPE pro typ jsonb do podporovaných jazyků procedur. Tato rozšíření jsou jsonb_plperl a jsonb_plperlu pro PL/Perl. Zatímco pro PL/Python jsou to jsonb_plpythonu, jsonb_plpython2u a jsonb_plpython3u. Například pomocí hodnot jsonb k mapování polí Perl můžete použít rozšíření jsonb_plperl nebo jsonb_plperlu.
ArangoDB zveřejnil srovnávací test porovnávající výkon PostgreSQL JSON spolu s dalšími databázemi s podporou JSON. Ačkoli je to starý blog, stále ukazuje, jak si JSON PostgreSQL vede ve srovnání s jinými databázemi, kde je JSON hlavní funkcí v jejich databázovém jádru. Díky tomu má PostgreSQL svou vlastní výhodu i s vedlejší funkcí.
Důvod šest:Podpora DBaaS od hlavních dodavatelů cloudu
PostgreSQL je široce podporován jako DBaaS. Tyto služby pocházejí od Amazonu, Microsoftu s Azure Database for PostgreSQL a Cloud SQL od Google pro PostgreSQL.
Ve srovnání Oracle je k dispozici pouze na Amazon RDS pro Oracle. Služby nabízené hlavními hráči začínají za dostupnou cenu a lze je velmi flexibilně nastavit podle vašich potřeb. To pomáhá institucím a organizacím odpovídajícím způsobem se nastavit a ulevit od vysokých nákladů vázaných na platformu Oracle.
Důvod sedm: Lepší zpracování velkého množství dat
PostgreSQL RDBMS nejsou navrženy tak, aby zvládaly analytické a datové sklady. PostgreSQL je řádkově orientovaná databáze, ale má schopnost ukládat velké množství dat. PostgreSQL má následující omezení pro práci s úložištěm dat:
Limit | Hodnota |
Maximální velikost databáze | Neomezené |
Maximální velikost tabulky | 32 TB |
Maximální velikost řádku | 1,6 TB |
Maximální velikost pole | 1 GB |
Maximální počet řádků na tabulku | Neomezené |
Maximální počet sloupců na tabulku | 250–1600 v závislosti na typech sloupců |
Maximální indexy na tabulku | Neomezené |
Pokud chcete používat základní funkce PostgreSQL, můžete ukládat velké množství dat pomocí jsonb. Například velké množství dokumentů (PDF, Word, Tabulky) a ukládat to pomocí datového typu jsonb. Pro geolokační aplikace a systémy můžete použít PostGIS.
Důvod osmý:škálovatelnost, vysoká dostupnost, redundance/geografická redundance a levná řešení odolná vůči chybám
Oracle nabízí podobná, ale výkonná řešení, jako jsou Oracle Grid, Oracle Real Application Clusters (RAC), Oracle Clusterware a Oracle Data Guard, abychom jmenovali alespoň některé. Tyto technologie mohou zvýšit vaše rostoucí náklady a jejich nasazení a stabilizace jsou nepředvídatelně drahé. Je těžké se těchto řešení vzdát. Školení a dovednosti musí být posíleny a rozvíjeny osoby zapojené do procesu zavádění a implementace.
PostgreSQL má masivní podporu a má spoustu možností na výběr. PostgreSQL zahrnuje streamování a logickou replikaci zabudovanou do základního balíku softwaru. Můžete také nastavit synchronní replikaci pro PostgreSQL, aby měl klastr s vyšší dostupností, a přitom zpracovávat vaše dotazy na čtení v pohotovostním uzlu. Pro vysokou dostupnost vám doporučujeme přečíst si náš blog Top PG Clustering High Availability (HA) Solutions for PostgreSQL, který pokrývá spoustu skvělých nástrojů a technologií, ze kterých si můžete vybrat.
Existují také podnikové funkce, které nabízejí řešení s vysokou dostupností, monitorováním a zálohováním. ClusterControl je jednou z těchto technologií a nabízí za dostupnou cenu ve srovnání s řešeními Oracle.
Důvod devět: Podpora několika procedurálních jazyků:PL/pgSQL, PL/Tcl, PL/Perl a PL/Python.
Od verze 9.4 má PostgreSQL skvělou funkci, kde můžete definovat nový procedurální jazyk podle svého výběru. Ačkoli nejsou podporovány všechny různé programovací jazyky, existuje řada jazyků, které jsou podporovány. V současné době se základní distribucí zahrnuje PL/pgSQL, PL/Tcl, PL/Perl a PL/Python. Externí jazyky jsou:
Název | Jazyk | Web |
PL/Java | Java | https://tada.github.io/pljava/ |
PL/Lua | Lua | https://github.com/pllua/pllua |
PL/R | R | https://github.com/postgres-plr/plr |
PL/sh | Prostředí Unix | https://github.com/petere/plsh |
PL/v8 | JavaScript | https://github.com/plv8/plv8 |
Skvělá věc na tom je, že na rozdíl od Oracle mohou vývojáři, kteří nově přešli na PostgreSQL, rychle poskytnout obchodní logiku svým aplikačním systémům, aniž by se museli dále učit o PL/SQL. PostgreSQL usnadňuje a zefektivňuje prostředí pro vývojáře. Tato povaha PostgreSQL přispívá k tomu, proč vývojáři milují PostgreSQL a začínají se odklánět od podnikových platformových řešení k open source prostředí.
Důvod desátý: Flexibilní indexy pro velká a textová data (GIN, GiST, SP-GiST a BRIN)
PostgreSQL má obrovskou výhodu, pokud jde o podporu indexů, které jsou výhodné pro práci s velkými daty. Oracle má mnoho typů indexů, které jsou výhodné i pro práci s velkými datovými sadami, zejména pro fulltextové indexování. Ale pro PostgreSQL jsou tyto typy indexů vytvořeny tak, aby byly flexibilní podle vašeho účelu. Například tyto typy indexů jsou použitelné pro velká data:
GIN – (Generalized Inverted Indexs)
Tento typ indexu lze použít pro sloupce datových typů jsonb, hstore, range a arrays. Je to užitečné, když máte datové typy, které obsahují více hodnot v jednom sloupci. Podle dokumentů PostgreSQL je „GIN navržen pro zpracování případů, kdy položky, které mají být indexovány, jsou složené hodnoty a dotazy, které má index zpracovat, musí hledat hodnoty prvků, které se objevují ve složených položkách. Položky mohou být například dokumenty a dotazy mohou být hledání dokumentů obsahujících konkrétní slova.“
GiST – (Zobecněný vyhledávací strom)
Výškově vyvážený vyhledávací strom, který se skládá z uzlových stránek. Uzly se skládají z indexových řádků. Každý řádek listového uzlu (listový řádek) obecně obsahuje nějaký predikát (booleovský výraz) a odkaz na řádek tabulky (TID). Indexy GiST jsou nejlepší, pokud to použijete pro typ geometrických dat, jako je například, chcete-li zjistit, zda dva polygony obsahovaly nějaký bod. V jednom případě může být konkrétní bod obsažen v rámečku, zatímco jiný bod existuje pouze v rámci jednoho polygonu. Nejběžnější datové typy, kde chcete využít indexy GiST, jsou typy geometrie a text při fulltextovém vyhledávání
Při výběru typu indexu, který chcete použít, GiST nebo GIN, zvažte tyto rozdíly ve výkonu:
- Vyhledávání indexů GIN je asi třikrát rychlejší než GiST
- Vytváření indexů GIN trvá asi třikrát déle než GiST
- Indexy GIN se aktualizují mírně pomaleji než indexy GiST, ale asi 10krát pomaleji, pokud byla zakázána podpora rychlých aktualizací
- Indexy GIN jsou dvakrát až třikrát větší než indexy GiST
Obecně platí, že indexy GIN jsou nejlepší pro statická data, protože vyhledávání jsou rychlejší. U dynamických dat se indexy GiST aktualizují rychleji.
SP-GiST – (Space Partitioned GiST)
Pro větší datové sady s přirozeným, ale nerovnoměrným shlukováním. Tento typ indexu využívá stromy rozdělující prostor. Indexy SP-GiST jsou nejužitečnější, když vaše data obsahují přirozený shlukovací prvek a také nejsou stejně vyváženým stromem. Skvělým příkladem toho jsou telefonní čísla, například v USA používají následující formát:
- 3 číslice pro kód oblasti
- 3 číslice pro předčíslí (historicky související s přepínačem telefonního operátora)
- 4 číslice pro číslo řádku
To znamená, že máte nějaké přirozené shlukování kolem první sady 3 číslic, kolem druhé sady 3 číslic, čísla se pak mohou rozprostřít rovnoměrněji. Ale u telefonních čísel mají některá předvolby mnohem vyšší saturaci než jiná. Výsledkem může být, že strom je velmi nevyvážený. Kvůli tomuto přirozenému shlukování dopředu a nerovnoměrné distribuci dat by data, jako jsou telefonní čísla, mohla být dobrým důvodem pro SP-GiST.
BRIN – (Index rozsahu bloku)
Pro opravdu velké datové sady, které se seřadí sekvenčně. Rozsah bloků je skupina stránek vedle sebe, kde jsou v Indexu uloženy souhrnné informace o všech těchto stránkách. Indexy rozsahu bloků se mohou zaměřit na některé podobné případy použití jako SP-GiST v tom smyslu, že jsou nejlepší, když existuje nějaké přirozené uspořádání dat a data bývají velmi velká. Máte tabulku s miliardami záznamů, zvláště pokud se jedná o data z časových řad? BRIN může pomoci. Pokud se dotazujete na velkou množinu dat, která jsou přirozeně seskupena, jako jsou data pro několik PSČ (která se pak stočí k nějakému městu), BRIN pomáhá zajistit, aby podobná PSČ byla na disku umístěna blízko sebe.
Pokud máte velmi velké datové sady, které jsou uspořádány, jako jsou data nebo PSČ, indexy BRIN vám umožňují velmi rychle přeskočit nebo vyloučit mnoho nepotřebných dat. BRIN jsou navíc udržovány jako menší indexy vzhledem k celkové velikosti dat, což z nich dělá velkou výhodu, když máte velký soubor dat.
Závěr
PostgreSQL má některé hlavní výhody, když konkuruje podnikové platformě a podnikovým řešením Oracle. Je rozhodně snadné označit PostgreSQL za vaši oblíbenou volbu open source RDBMS, protože je téměř výkonný jako Oracle.
Oracle je těžké porazit (a to je těžká pravda, kterou lze přijmout) a také není snadné zbavit se podnikové platformy technického obra. Když vám systémy poskytují výkon a produktivní výsledky, může to být dilema.
Někdy však nastanou situace, kdy je třeba učinit rozhodnutí, protože pokračující nadměrné investování do nákladů na platformu může převážit náklady na vaše další obchodní vrstvy a priority, což může ovlivnit pokrok.
PostgreSQL a jeho základní platformová řešení mohou být volbou, která vám pomůže snížit náklady a zmírnit vaše rozpočtové problémy; vše s mírnými až malými změnami.