Podle mých zkušeností to do značné míry závisí na datech, která jsou uložena. Oba způsoby mají výhody i nevýhody. Pokud se jedná o MMORPG webgame a poté řekněte, že máte PC která má pásek. A PC může do opasku vložit lektvary pro rychlý přístup během bitvy. Takže chceme uložit ID lektvarů, které jsou uloženy v opasku postavy.
Nejčastějším požadavkem by bylo „získej všechny lektvary, které má postava X“. A to by v obou případech běželo docela rychle.
Výhody uložení těchto lektvarů jako samostatné tabulky:
- Můžete vyhledat konkrétní ID lektvaru a je to velmi rychlé. Příklad ve hře:administrátoři odstranili ze hry nějaký lektvar, a proto musíte všem aktualizovat opasky
- Můžete získat pěkné statistiky. Příklad ve hře:hledejte nejpoužívanější lektvar mezi všemi hráči
- Databáze zachová integritu dat. Příklad ve hře:nikdy se nesetkáte se situací, kdy byste použili lektvar a hra vám řekla „Jejda, lektvar s tímto ID neexistuje“
- Je to dobré pro konzistenci. Příklad ve hře:vzali jste lektvar z opasku a vložili ho do batohu. Hra to může implementovat voláním transakce pomocí dvou jednoduchých jasných příkazů SQL.
- Můžete se připojit. Příklad ve hře:potřebujeme získat seznam lektvarů v opasku spolu s jejich názvy, hmotností a obrázky, které jsou uloženy v samostatné tabulce.
- Můžete aktualizovat jednu položku, aniž byste museli aktualizovat celý pás. Příklad vynucený ve hře:v opasku máte milion lektvarů a jeden jste vypili.
Výhody ukládání jako json:
- Pokud se jedná o prohlížečovou hru, která na straně klienta používá javascript, pak objekt Belt json získáte jediným jednoduchým požadavkem namísto provádění Select-query a následného převodu na json
- Je mnohem jednodušší udržovat pořadí položek, protože pole json jsou již seřazena. S tabulkovým přístupem byste potřebovali další sloupec nazvaný "objednávka" a pokaždé jej aktualizovali a zkontrolovali, zda dvě položky nemají stejnou objednávku atd.
- Můžete provést řadu změn v pásu na straně klienta, poté klikněte na „Použít“ – bum, jedním dotazem můžete aktualizovat celý pás. Zatímco s tabulkovým přístupem byste k tomu potřebovali alespoň dva dotazy (DELETE + INSERT)
- kromě toho mají populární DBMS pluginy které podporují funkce json v databázi
Sečteno a podtrženo:ty nejsou hlavní výhody a nikoli kritické problémy. Všechny jsou řešitelné a při správném návrhu aplikace budou obě řešení fungovat dobře. Než se rozhodnete, jak data uložit, zeptejte se sami sebe, jaké jsou nejčastější případy použití těchto dat, a poté si vyberte řešení.