Слишком мало предметов для стола? - PullRequest
0 голосов
/ 14 апреля 2019

Я создаю веб-сайт, и одна из вещей, которую пользователь должен указать, это его / ее страна. Я предполагаю, что есть около 200 стран. Какой подход лучше хранить 200 стран в Списке / Массиве в приложении (следовательно, немного больше оперативной памяти) или хранить их в виде таблицы в базе данных? Как вообще решаются подобные проблемы?

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Наличие небольшого количества строк не является проблемой.Если таблица небольшая, сервер базы данных может кэшировать все это в памяти.Базы данных хороши с небольшими таблицами.

Если вы храните страны в таблице, вы всегда можете настроить кэш уровня приложения, который хранит копию содержимого в памяти.При необходимости легко добавлять новые записи в базу данных, вы можете установить время истечения срока действия в кэше, чтобы новые записи могли быть получены.

Мой предпочтительный способ создания приложения - иметь кэш уровня приложения, который отделен от кода приложения, чтобы я мог настроить его без изменений кода.Таким образом, я знаю, что позже я могу настроить кеш без изменения кода, и мне не нужно кодировать с учетом кеширования.

1 голос
/ 14 апреля 2019

Таблица из 200 строк сама по себе неплохая практика. Основной проблемой является техническая сложность того, чтобы столбец вашей страны был внешним ключом для этой таблицы. Страны приходят и уходят на регулярной основе? Часто ли они меняют имена таким образом, что требуется централизация всех имен в одной таблице?

Мой обычный подход - просто сохранить двухбуквенный код страны страны в столбце char(2). Это дает вам возможность быстро вывести фактическое название страны (в отличие от проверки того, что означает идентификатор страны 37) без фактического введения дополнительной таблицы, дополнительного объединения.

Теперь, если ваша заявка фактически сконцентрирована на данных такой страны, имеет смысл иметь таблицу стран с несколькими столбцами для хранения информации о стране, но тогда я бы рекомендовал использовать двухбуквенный код страны в качестве первичного ключа. для этой таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...