Hlavní navigace

Názor k článku Cibulová architektura aneb jak nepřipravovat špagety od Vít Šesták - Nevím, co je to dobře „cashovatelná“ databáze, každopádně...

  • Článek je starý, nové názory již nelze přidávat.
  • 24. 1. 2020 18:45

    Vít Šesták

    Nevím, co je to dobře „cashovatelná“ databáze, každopádně i takovému PostgreSQL lze spustut separátní instanci. Kdysi jsem to ubastlil bez Dockeru (předpokládalo to volný port a nainstalovanou vhodnou verzi PostgreSQL), s Dockerem to půjde ještě lépe.

    Ano, pro účely integračních testů jsem tomu vypnul takové „zbytečnosti“ jako fsync [1], aby to bylo rychlejší. Pravda, takové nastavení se odlišovalo od produkce, kde je fsync důležité, ale za tu rychlost testů to stálo a i tak to poskytovalo mnohem věrnější výsledky než testování oproti SQLite.

    Ono testování je vždy kompromis. Vždy chceme co nejvěrnější výsledky s co nejnižším úsilím a co nejrychlejšími testy. To někdy jde proti sobě. Mít na produkci PostgreSQL a testovat na SQLite znamená používat databázi s jinými specifiky, jinými tichými defaulty (včetně řazení) apod. V době Dockerové typicky není velký rozdíl mezi náročností rozjet SQLite a rozjet PostgreSQL, takže těžko se pro to hledá dobrý důvod. Ani ORM nemusí člověka 100% odstínit od rozdílů – na to by muselo srazit možnosti všech databází na úroveň té nejméně pokročilé.

    Naproti tomu takový zakázaný fsync má celkem popsané dopady. Pokud nedojde k tvrdému vypnutí (které nás stejně nezajímá, když v takovém případě databázi zahodíme a vytvoříme novou a prázdnou), rozdíl by měl být pouze v rychlosti. To čistě teoreticky samozřejmě nějaký rozdíl může udělat (pak bychom ovšem ani nemohli použít debugger [2]), ale riziko vidím jako řádově nižší než u použití jiného RDBMS.

    [1] https://www.postgresql.org/docs/9.5/non-durability.html
    [2] https://en.m.wikipedia.org/wiki/Heisenbug