Odpověď na názor

Odpovídáte na názor k článku Přestaňte už používat MySQL, není to skutečný open source. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.

  • 15. 1. 2026 12:07

    Pavel Stěhule

    Nevím, co myslíte systémovou databází? Postgres žádnou systémovou databázi nemá.

    Tohle má historické pozadí - Postgres je databáze navržená primárně pro Unix a Unix má integrovanou podporu collation v knihovně libc - tady jde o primárně o řazení. Nicméně se ukázalo (a to relativně pozdě - ani ne 10 let zpátky), že implementace těchto řadících algoritmů není stabilní. Což samozřejmě vede k riziku curruptnutí indexu. A když už jsem u historického pozadí - je to databáze z US, do které se podpora 8bit kódování dodělávala hodně pozdě, a nikomu v té době nedocvaklo, jaké problémy s glibc mohou nastat - libicu ještě neexistovala - a implementace vlastní podpory collations ve stylu MySQL se zdála šílenost - když byla podpora v libc (v POSIXu).

    Nicméně vlastní implementace collation také není absolutní řešení. Jakmile jednou vydáte nějaké collation - už ho nemůžete fixnout. Můj první patch paradoxně nebyl do Postgresu, ale do MySQL - opravovali jsme řazení pro češtinu. Mám pocit, že nikdy nebylo commitnuté - právě, že byl potřeba rebuild indexů.

    Ten ALTER můžete dělat až po rebuildu indexů - ne dříve. A rebuild indexů může být dost zdlouhavá záležitost - nic co byste chtěli, aby systém udělal automaticky. Navíc tohle může být také falešný alarm - glibc nemá sémantické verzování collations, takže je na vás abyste se rozhodl - jestli budete reindexovat nebo to ignorovat.

    V tom je lepší libicu, která má sémantické verzování pro collation - takže už nedojde k falešným alarmům. Bohužel - realita je taková, že collation nemůže být neměnné - dochází k opravám, mění se normy, ... Jediné 100% immutable colllation bude C, případně C UTF8, tam by tento problém neměl nastat.