Как лучше всего обрабатывать исключения из повторяющихся событий календаря - PullRequest
3 голосов
/ 20 марта 2010

Я работаю над проектом, который потребует от меня реализации календаря. Я пытаюсь создать систему, которая будет очень гибкой: она может обрабатывать повторяющиеся события, исключения для повторов и т. Д. Я рассмотрел схему для таких приложений, как iCal, Lotus Notes и Mozilla, чтобы получить представление о том, как пойти о реализации такой системы. В настоящее время у меня возникают проблемы с выбором наилучшего способа обработки исключений для повторяющихся событий. Я использовал немного баз данных, но у меня нет большого опыта в оптимизации всего, поэтому я не уверен, какой из этих двух методов будет оптимальным с точки зрения общей производительности и возможности запроса / поиска. :

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

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

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

Спасибо за совет.

Ответы [ 2 ]

0 голосов
/ 28 марта 2010

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

0 голосов
/ 20 марта 2010

События не являются постоянными, могут быть изменены или прекращены.

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

При этом вам действительно нужно только дополнительное поле, чтобы указать, активно ли событие.

При правильной индексации это не окажет значительного влияния на ваши запросы.

Примером может быть:

SELECT * FROM events WHERE event_id = 123 AND active = 1;

В этом случае вам потребуется индексировать event_id и активные столбцы.

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