Mówiąc szczerze, MySQL jest bazą danych, podczas gdy JSON nie, więc poprawną odpowiedzią jest MySQL, bez wahania. JSON to tylko język, a ledwie nawet to. JSON nigdy nie został zaprojektowany do obsługi równoczesnych połączeń lub jakiejkolwiek manipulacji danymi, ponieważ jego własną funkcją jest reprezentowanie danymi, a nie zarządzać to.
Więc idź z MySQL do przechowywania danych. Następnie powinieneś użyć jakiegoś języka programowania, aby odczytać tę bazę danych i wysłać te informacje w formacie JSON, zamiast przechowywać cokolwiek w JSON.
Jeśli przechowujesz dane w plikach, czy to w formacie JSON, czy w jakimkolwiek innym, będziesz mieć różnego rodzaju problemy, o które ludzie przestali się martwić, odkąd bazy danych zaczęły być używane do tego samego. Ograniczenia rozmiaru, zamki, nazwij to. Wystarczy, że masz jednego użytkownika, ale w momencie, gdy dodasz ich więcej, zaczniesz rozwiązywać tak wiele problemów, że prawdopodobnie skończysz na pisaniu całego silnika bazy danych tylko po to, by obsługiwał pliki za Ciebie, podczas gdy Ty mógł po prostu użyć rzeczywistej bazy danych.