Co se stane, když databáze nepodporuje 9BRI

Z Mazovia

Požadavek na sloučení nemá být formalita. Napište do něj, co změna řeší, jak jste ji otestovali a na co si dát pozor. Recenzent nemá hádat záměr z deseti commitů. Když je změna velká, rozdělte ji na několik menších požadavků. Malé změny se kontrolují rychleji a snáze se vracejí, pokud se něco pokazí. Nikdy neschvalujte vlastní změnu jen proto, že spěcháte.

Zvláštní pozornost si zaslouží uložené procedury. Ani ty nejsou automaticky bezpečné. Pokud procedura uvnitř používá dynamické SQL a vkládá do něj parametr přes spojování řetězců, injektáž zůstává. Stejně tak volání procedury s právy vlastníka může útočníkovi rozšířit možnosti, pokud se mu podaří ovlivnit vnitřní dotaz. U dynamického SQL uvnitř procedur platí stejné pravidlo jako v aplikaci: parametry předávejte přes placeholdery, ne textem.

Poslední věc, která rozhoduje o výsledku, je tón. Zpětná vazba nemá být obhajoba ani hodnocení člověka. Když někdo řekne, že něco nefunguje, není to útok. Facilitátor to musí říct nahlas, jinak se lidé začnou bránit a diskuze se změní v hádku o vině. Struktura drží emoce na uzdě jen do chvíle, kdy ji někdo začne používat jako zbraň. Proto je lepší mluvit o procesech a rozhodnutích než o lidech a jejich vlastnostech.

Praktický postup je následující. Nejprve si napište seznam operací, které aplikace reálně potřebuje, a u každé uveďte, jak často a na jak velkých datech běží. Potom pro každou operaci zjistěte, zda ji databáze zvládá sama, nebo zda ji nahrazujete ručně. U ručních náhrad spočítejte režii: kolik dat se přenáší, kolik paměti to spotřebuje a co se stane při desetinásobném růstu. Pokud se režie vymkne kontrole, je čas buď změnit databázi, nebo upravit datový model tak, aby operace byly nativně podporované.

Závěrem: podpora pro 9BRI není volitelný doplněk. Je to základ, na kterém stojí výkon a konzistence. Pokud ji databáze nemá, dříve nebo později narazíte na limit, který už nepůjde obejít. Kontrola těchto devíti operací před nasazením ušetří týdny ladění a možná i ztracená data.

Nakonec si nastav rytmus: ráno rebase proti hlavní linii, během dne commity po malých celcích, večer push. Větev, která přežije déle než týden, rozděl nebo znovu založ z aktuálního mainu. Efektivita nevzniká z počtu větví, ale z toho, že každá z nich zůstává malá, aktuální a rychle sloučitelná.

Kde se obcházení podpory vymstí Typická chyba je přesunout řazení a stránkování do aplikace. Zpočátku to funguje, protože dat je málo. Jakmile tabulka přesáhne statisíce řádků, aplikace začne tahat celou tabulku do paměti a server padne na nedostatku RAM. Stejně zrádné je obcházení transakcí: pokud databáze neumí izolovat paralelní zápisy, vzniknou nekonzistence, které se těžko dohledávají. Další častý problém je obnova po pádu. Bez nativní podpory pro obnovu do konzistentního stavu se po výpadku mohou ztratit i data, která uživatel považoval za uložená.

Prvním krokem je zjistit, které z devíti operací databáze skutečně zvládá a v jaké kvalitě. Nestačí se podívat do dokumentace. Napište testovací dotazy, které simulují reálnou zátěž: spojení tří tabulek s filtrem, stránkování přes deset tisíc řádků, agregaci s podmínkou a transakci, která se v půlce přeruší. Měřte nejen výsledek, ale i plán vykonávání a dobu odezvy. Často se ukáže, že databáze operaci „podporuje", ale bez indexu ji provádí sekvenčním čtením, což je při růstu dat nepoužitelné.

Rebase nebo merge a kdy co použít Pro udržení čisté historie používej rebase lokálně, dokud větev nikdo jiný nepoužívá. Příkaz git rebase main přenese tvé commity na aktuální špičku hlavní linie a odstraní zbytečné merge commity. Jakmile ale větev sdílíš s kolegou, rebase přepíše historii a způsobí ostatním problémy. V tu chvíli je bezpečnější běžný merge. Pravidlo je jednoduché: rebase pro soukromé větve, merge pro veřejné.

Práce na několika feature větvích současně vypadá efektivně jen do chvíle, než začneš přepínat mezi rozdělanými změnami a řešit konflikty, které nemají nic společného s aktuálním úkolem. Klíč není v tom mít více větví, ale v tom udržet každou z nich krátkou, izolovanou a pravidelně sesynchronizovanou s hlavní linií. Větve, které žijí týdny bez rebase nebo merge, se při sloučení změní v noční můru.

Velmi častá chyba začátečníků je ignorovat minimální podporovanou verzi systému. Když ji nastavíš příliš vysoko, připravíš se o část uživatelů. Když příliš nízko, budeš muset řešit spoustu kompromisů. Zvol kompromis, který odpovídá tomu, co chceš dělat. U moderních komponent vždy ověř, jestli fungují i na starších zařízeních, a případně použij náhradní řešení. Testuj na skutečném telefonu, ne jen v emulátoru. Emulátor nezachytí všechny problémy s výkonem, baterií nebo oprávněními.