Разные варианты о том, как сохранить предпочтения сайта?

StackOverflow https://stackoverflow.com/questions/3181519

Вопрос

Я в процессе обновления наших CMS и столкнулся с ситуацией, которую я не знаю, какое решение принять. В основном каждый из наших клиентов содержится содержимое своего сайта в собственной базе данных. Это включает в себя содержание, опросы, поисковые слова, используемые посетителями, меню Strucutre и т. Д.

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

Например, CMS позволяет им отправлять электронные письма в список получателей. Они могут выбрать использовать наш сервер или они могут поставить на собственный SMTP-сервер. Однако в этом случае будет небольшой излишек для создания таблицы с столбцом для «MAILSERVICE» и имел его удерживать определенные значения, поскольку таблица удерживала только одну строку.

Вот несколько идей, которые я придумал, и поисчал немного на этом сайте и / или Google, но я не слишком уверен, что их плюсы и минусы:

  • В основном удерживайте все предпочтения в таблице, как я упомянул выше, то, что я хотел бы избежать.
  • Держите все эти «одноменные» предпочтения в файле XML, который я бы изменил, когда они изменит свои настройки.
  • Имейте таблицу под названием «Предпочтения со следующими капустами: ID, предпочтение файла, значение. Каждый раз, когда у меня будет новое предпочтение, я просто добавлю его, измените его или удалите его (мне не нравится этот вариант, потому что я чувствую, что должен был слишком много ценностей ... хотя бы с дороги Я вижу реализацию)

Я вроде прислонившись к идее XML, но я хотел бы получить некоторые отзывы от хорошего сообщества здесь в Stackoverflow :) Может быть, использование XML, будет ужасной идеей по причине, по которой я полностью упустил из виду, или есть ваш тупой -Почему - не-вы-просто-делаете-это решение. Спасибо за любой вклад!

Это было полезно?

Решение

Маршрут XML хорошо работает в том смысле, что он легко позволяет добавлять новые привлечения и позволяет группировать атрибуты. Недостатком является то, что невозможно мигрировать или обновлять данные предпочтения с использованием SQL. Это должно быть сделано в разработке. Вы также не можете запросить предпочтения для отдельных атрибутов, если необходимо возникнуть.

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

Другие советы

Я бы сказал, что используйте одну таблицу базы данных, если у вас уже есть, и разделите имена настроек в разумные категории:

mail_service:recipients
mail_service:sender
mail_service:smtp:hostname
mail_service:smtp:username
mail_service:smtp:password

Кроме того, я предпочитаю ямл к XML для этого читабельности. Это как XML, но без всякого беспорядка.

 mail_service:
     recipients:
       - recipient1@domain.com
       - recipient2@domain.com
       - recipient3@domain.com
       - recipient4@domain.com

  visuals:
    header:
      text_color: #BBCCDD
      background_color: #FFFFFF

То Symfony Yaml Class. это прекрасная автономная библиотека для анализа этого файла в массив PHP.

Вы также можете использовать простой PHP-файл.

$settings = array(
 "mail_service:recipients" => " .... ",
 "mail_service:sender" => " .... ",    
 "mail_service:smtp:hostname" => " .... ",
 "mail_service:smtp:username" => " .... ",
 "mail_service:smtp:password" => " .... ");

Я бы пошел с файлом XML (хотя его не нужно быть XML - если это была Java, я бы использовал файл свойств, пока я не нашел причины не) или таблицу одной клавиши / значения (ID поле ID не Вы больше всего не получаете, если он не является некоторым внешним ключом для дифференциации между различными установками).

Лично мне нравится универсальность SQL и имея вещи самостоятельно. Использование базы данных не добавляет никакой сложности, которая еще не там (вы получите тот же уровень кэширования бесплатно, например, когда вам придется выращивать свой собственный кеш XML, если производительность является проблемой). Я бы выбрал XML только в том случае, если значения имели действительно сложную структуру, которая сделала бы манипулирование через SQL Cumbersome.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top