Ответ 1
Лучшей практикой хранения большой таблицы в JSON является использование массива.
Причина в том, что при разборе массива JSON в массиве памяти нет штрафа за скорость построения карты. Если вам нужно построить индекс памяти в нескольких полях для быстрого доступа, вы можете сделать это во время или после загрузки. Но если вы храните JSON так же, как и вы, у вас нет выбора для быстрой загрузки без построения карты, потому что парсер JSON всегда будет строить эту огромную карту идентификаторов на основе вашей структуры.
Структура хранения данных в памяти не обязательно должна быть (и не должна быть) такой же, как структура хранилища на диске, потому что нет возможности сериализовать/десериализовать внутреннюю структуру карты JavaScript. Если бы это было возможно, вы бы сериализовали и хранили индексы так же, как MS SQL Server хранит таблицы и индексы.
Но если структура, которую вы используете, заставляет вас иметь одну и ту же структуру в памяти и на диске, то я поддерживаю ваш выбор использования id как ключа в одном большом объекте, потому что тогда легче передавать идентификатор в запросах JSON на сервер и с сервера на делать какие-либо действия с помощью элемента электронной почты или обновлять его в пользовательском интерфейсе, предполагая, что на сервере и в браузере сохраняется значительный список элементов электронной почты в памяти.