Здравствуйте. Сейчас проводится рефакторинг кода нашей системы, и всё-таки возник вопрос как же лучше организовать хранение динамических настроек в БД. Два варианта. Реализация не важна, важен вопрос как грамотней, и как посоветуют профессионалы.. 1. Таблица в БД и под каждый параметр заводится столбец, то есть в таблице 1 строка. Плюсы: - Запрос и имеем массив Ключ/значение - Не нужен цикл для построения Ключ/Значение -Обновление нескольких параметров - тоже можно уложиться в 1 запрос. Минусы: - Нет возможности создавать группы настроек, напр. для определённого модуля - Модулей и самих настрое тоже может быть Очень много и таблица с 400 столбцами - тупость полная - и тд. Второй вариант (к которому в принципе мы склоняемся) Это таблица где для каждого параметра создаётся своя строка. Колонки (id, key, value, module) Плюсы: - Более гибкое управление группами настроек, например при удалении модуля можно быстро снести группу конфига, и тд.. думаю нет смысла перечислять все плюсы - думаю понятно. Минусы: - Это все таки - цикл для построения ключ/Значение (при большом кол-ве не гуд) - Обновление нескольких полей - тоже либо цикл либо (WHEN code = 1 THEN 123 И т.д.. Очень прошу дать совет профессионала - как же лучше сделать, и правильнее. Спасибо..
2. Цикл там не нужен никакой, все можно сделать одним запросом. Если частые селекты, то вообще перенесите их на хранилище ключ-значение, а субд оставьте под актуальный эталон настроек для периодической сверки с хранилищем в памяти.
Да, я думал как можно такой запрос построить, если подскажете буду очень благодарен. Хоть какой нибудь пример что бы зацепить суть. Видимо опыта пока у меня маловато Я даже уже, склонялся к хранимой процедуре, да хочется что бы быстро и просто было. Да, можно например делать запрос, получать массив и его хранить (например в файле) в серриализованном виде, здесь есть варианты. Обновлять файл только когда меняется конфиг.