Hlavní navigace

Názor ke článku Napsal jsem si databázi v C++ od Ondřej Novák - Tak pokud jsi četl celý článek, tak víš,...

  • 24. 7. 2023 11:24

    Ondřej Novák

    Tak pokud jsi četl celý článek, tak víš, že to nebylo cílem, cílem bylo jen přesunout kritické indexy co nejblíže k aplikačním serverům. Jiný přístup, který se běžně používá a který samozřejmě znám, je replikace main databáze na aplikační servery, takže ty si chodí pro indexy právě tam. Replikace není nic jiného než rozesílání updatů z hlavní databáze do těch replik, což je přesně to co se tady dělo. Mimochodem, naslouchání updatů z main db tam bylo od začátku, v zásadě to byl hlavní mechanismu jak se rozesílaly herní stavy mezi jednotlivé uzly. Takže zase tolik práce v tom nebylo, stačilo jen na místo, kam přicházela tahle data strčit nějakou mapu.

    Využívalo se toho, že hráč, který hraje hru, si bude chodit pro zadání jednotlivých úkolů na server v řádově několika sekund až minut, takže v paměti byla cache pro všechny aktuálně hrající hráči, takže ve výsledku aplikační servery nechodily na databázi skoro vůbec, jen když se stalo, že některý stav vypadl z cache. Do databáze se posílaly jen updaty herních stavů.

    Další možnou refaktorizací by pak už byl jen clusterizace hračů, jako že hra nepotřebovala kombinovat stavy mezi hráči - ne na realtime úrovni. Kromě finále, kde se tedy hrálo hromadně a kde byla potřeba jakási interakce mezi hrajícími a kde zase nehrálo tolik hráčů. Clusterizace by znamenala, že by vzniklo víc "datacenter", a každý hráč by měl přidělený vlastní centrum, kde by hrál, což by ale přineslo komplikace na non-realtime interakci, třeba vyhodnocování pořadí ve hře, statistiky a rozdávání cen a bodů.

    Všechno to bylo backlogu, kdyby to televize v Covidové době nezrušila.