За последние 24 часа нас посетили 21740 программистов и 1065 роботов. Сейчас ищут 624 программиста ...

Хранение пользовательских настроек сайта

Тема в разделе "Решения, алгоритмы", создана пользователем Dedov_Evgeniy, 14 май 2015.

  1. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Здравствуйте.
    Сейчас проводится рефакторинг кода нашей системы, и всё-таки возник вопрос как же лучше организовать хранение динамических настроек в БД.
    Два варианта. Реализация не важна, важен вопрос как грамотней, и как посоветуют профессионалы..
    1. Таблица в БД и под каждый параметр заводится столбец, то есть в таблице 1 строка.
    Плюсы:
    - Запрос и имеем массив Ключ/значение
    - Не нужен цикл для построения Ключ/Значение
    -Обновление нескольких параметров - тоже можно уложиться в 1 запрос.
    Минусы:
    - Нет возможности создавать группы настроек, напр. для определённого модуля
    - Модулей и самих настрое тоже может быть Очень много и таблица с 400 столбцами - тупость полная
    - и тд.

    Второй вариант (к которому в принципе мы склоняемся) Это таблица где для каждого параметра создаётся своя строка. Колонки (id, key, value, module)
    Плюсы:
    - Более гибкое управление группами настроек, например при удалении модуля можно быстро снести группу конфига, и тд.. думаю нет смысла перечислять все плюсы - думаю понятно.

    Минусы:
    - Это все таки - цикл для построения ключ/Значение (при большом кол-ве не гуд)
    - Обновление нескольких полей - тоже либо цикл либо (WHEN code = 1 THEN 123;)
    И т.д..

    Очень прошу дать совет профессионала - как же лучше сделать, и правильнее.
    Спасибо..
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Второй вариант
     
  3. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    2.
    Цикл там не нужен никакой, все можно сделать одним запросом.
    Если частые селекты, то вообще перенесите их на хранилище ключ-значение, а субд оставьте под актуальный эталон настроек для периодической сверки с хранилищем в памяти.
     
  4. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Да, я думал как можно такой запрос построить, если подскажете буду очень благодарен. Хоть какой нибудь пример что бы зацепить суть. Видимо опыта пока у меня маловато :(
    Я даже уже, склонялся к хранимой процедуре, да хочется что бы быстро и просто было.

    Да, можно например делать запрос, получать массив и его хранить (например в файле) в серриализованном виде, здесь есть варианты. Обновлять файл только когда меняется конфиг.