76
Vývoj / Re:Rada při návrhu db tabulek
« kdy: 01. 07. 2021, 21:30:29 »Tomu co popisuješ dobře rozumím. Čemu nerozumím je, čím podkládáš svá tvrzení, že by to nemělo jít? To v tom textu schází.
Uvedu příklad: V MySQL je taková vlastnost, že v praxi moc nejde použít view, protože implementace v MySQL jej nedokáže optimalizovat a v mnoha případech to degraduje na fullscan. Teď neřešme nakolik je můj popis problému přesný.
Vysvětli mi prosím, máš-li chuť, proč by tuto informaci o tomto zrádném chování nemohlo vědět ORM (ve svém engine pro MySQL), a zohledňovat to při vytváření dotazů? Proč by to musel, principielně umět vývojář. Proč by tato znalost této vlastnosti bylo mnohem náročnější "naučit" ORM, než to učit vývojáře?
Tak předně, úplně bych zapomněl na MySQL. To je parodie na RDBMS, která má pár drobných výhod a spoustu velkých nevýhod.
To, co popisujete, není vlastnost, ale chyba nebo nedodělek. Není dobrý nápad chybu nebo nedodělek napravovat o vrstvu výš. Jako nějaká obezlička, budiž, ale řešení to není.
Co je překážkou? To už jsem psal. Že struktura dat, tabulí, indexů a dotazů neexistuje jen jediná možná. Existuje mnoho způsobů, jak se dobrat téhož, a liší se složitostí zápisu dotazu (v případě automaticky generováného dotazu nás to netrápí), liší se náročností pro získání dat a liší se náročností pro zápis dat. ORM nedokáže rozhodnout, kterou strategii preferujete. Neví, jestli potřebujete rychle zapisovat a pomalu číst, nebo pomalu zapisovat a rychle číst. Nebo jestli něco mezi. Netuší, jestli bude výhodnější parciální index, ale rychlejší ve většině případů, nebo plný index, rychlý, ale o něco pomalejší v průměrném případě. Neví, jestli Vám jde o celkovou rychlost, nebo o zminimalizování locků...
To vše je na člověku - ne protože by to technologie nechtěla umět, ale protože člověk musí zvolit strategii pro daný projekt. Každá má svá pro a proti.
Nevím, jestli jste někdy tyto věci řešil - pokud se soustředíte na MySQL, musí to být dost vzdálené si to představit, protože tam opravdu často existuje jen jedna jediná "správná" cesta a všechny ostatní jsou úplně tragické.