Как лучше (дешевле) хранить справочники?

Разрешите пожалуйста вопрос - в каком виде лучше хранить справочники.
Допустим имеем такого коня в вакууме - интернет магазин (на yii если это важно) с интеграцией 1с, откуда подтягиваются все данные, в т.ч. справочники цветов, размеров, производителей и т.п и т.д. Так вот как это лучше и дешевле хранить? Заводить под каждый справочник отдельную таблицу? Хранить все в одной? Или справочники хранить в виде xml(json - зависит от религии) файлов, а при необходимости их считывать? Какой способ дешевле по затратам озу/цп? Допустим у нас еще небольшой хайлоад в виде 10к+ хитов в сутки.
  • Вопрос задан
  • 1137 просмотров
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
3Д специалист. Долго, Дорого, Дерьмово.
10k в секунду, нормально - это highload, а в сутки - вообще ни о чем ~ 7 запросов в минуту
Заводить под каждый справочник отдельную таблицу - это путь в сторону битрикс и могилы.
Хранить в xml/json - зачем, если есть база данных.
Мне кажется достаточно отдельной таблицы id|name|value|type, ну пары таблиц, еще одна с описанием.
Ну и кешировать все это в redis. Считывать все при старте и загружать в него.
Ответ написан
@thyratr0n
Вижу, народ тут нормализацией увлекся. Поясню: есть 6 форм нормализации, а есть суровая реальность. Точка. И нечего тут в адрес Алексей Черемисин указывать на какие-то нарушения.

Справочники нужно хранить так, как это возможно. Если данные однотипны:
1) если данные в них однотипны, можно скидать все в одну таблицу, запилив составной РК (type, key) или по старинке одинарный - это как душе угодно (пока количество записей не более, чем 6-ти значные, разницы не будет);
2) можно то же самое запилить в разных таблицах - на вкус и цвет, как говорит.
Если же данные разнотипны, то:
1) можно в разных таблицах, если по отличающимся полям может идти фильтрация;
2) можно все в одну таблицу, запилив какое-то "сложное" поле с типом TEXT/BLOB/VARCHAR, куда писать отличающиеся данные.

Все, никакими тут нормализациями и не пахнет. Всем добра.

P.S. Дмитрий Ларин вам следует более точно формулировать свои вопросы, ибо "Без ТЗ результат ХЗ" (с)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы