Je to kompromis mezi přidáním nové zásadní změny architektury - schémata, search_path a zachování zpětné kompatibility pro aplikace, které schémata explicitně nepoužívají. A jako každý kompromis to má nějaké nevýhody, zvlášť pro uživatele, kteří databázi používají mechanicky (bez znalostí, jak funguje), a takových je v praxi asi dnes většina (bohužel - a také nelze rozumět všemu).
U jednoho zákazníka jsem narazil na "těžké" problémy s administrací PG, právě proto, že v databázích neměl public schéma, nicméně člověk, který tomu rozuměl, a nakonfiguroval search_path z té firmy odešel, a jeho nástupci o Postgresu nevěděli téměř nic a bez "publicu" jim nefungovaly a rady postupy z Stack Overflow.
Souhlasím, - schéma public jde proti účelu schémat v Postgresu (bacha je to něco jiného než v Oraclu), ale je to tam proto, aby se udržela rozumná úroveň zpětné kompatibility. Taková řešení málokdy jde udělat bez kompromisů u kterých 100% víte, že to není ideální. Ale bez alespoň rozumné garance zpětné kompatibility by Váš produkt téměř nikdo nepoužíval. A opravdu je potřeba spíš předpokládat nulové znalosti uživatelů a tím pádem téměř minimální inteligenci při používání produktu (spíš nulovou).
Postgres měl v jedné verzi feature flagy, a bylo to něco, co uživatelé vůbec nezvládali. U produktu, který je 25 let starý najdete víc takových kompromisů - třeba v Postgresu pekelná past pro začátečníky je výchozí celočíselné dělení pro celá čísla. Na druhou stranu v tomhle ohledu jsou starší a tím pádem horší produkty. Oracle bude letos 45.
20. 5. 2020, 11:04 editováno autorem komentáře