Как хранить комментарии к уценке


Я хочу использовать Markdown для системы комментариев моего веб-сайта, но я столкнулся со следующей проблемой: что я должен хранить в базе данных - исходный комментарий в Markdown, проанализированный комментарий в HTML или и то, и другое?

Мне нужна версия HTML для просмотра и версия уценки, если пользователю нужно отредактировать свой комментарий. Если я сохраню версию Markdown, мне придется анализировать комментарии во время выполнения. Если я сохраняю HTML-версию, мне нужно преобразовать комментарий обратно в уценку, когда пользователю необходимо отредактировать его (я нашел Уценку для этого, но это не безупречно). Если я сохраняю обе версии, я удваиваю используемое пространство.

Какой был бы лучший вариант? Кроме того, как с этим справляется переполнение стека?

Author: liviucmg, 2010-02-06

3 answers

Храните оба. Это противоречит правилам нормализации базы данных, но я думаю, что в данном случае это того стоит для оптимизации скорости - разбор больших объемов текста - очень медленная операция.

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

 16
Author: Mark Byers, 2010-02-05 21:45:15

Сохраните исходную уценку и проанализируйте ее во время выполнения. Существует несколько проблем с хранением преобразованной версии в базе данных.

  1. Если пользователь хочет отредактировать свой комментарий, вы должны преобразовать его в обратном порядке в исходную уценку
  2. Место в базе данных (всегда следуйте правилу, что если вам не нужно его хранить, не делайте этого)
  3. Изменения, внесенные в синтаксический анализатор markdown, должны выполняться для каждого комментария в базе данных, а не просто отображаться в время выполнения.
 12
Author: Corey Hart, 2010-02-06 00:49:35

Просто отобразите уценку в HTML во время выполнения.

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

Просто взгляните на средство визуализации JavaScript в реальном времени, которое использует SO. Это быстро.

Редактировать: Извините, я должен был выразиться яснее. Я имел в виду просто визуализацию на PHP. Вы избавите себя от большой головной боли - и у вас, вероятно, есть более важные дела, чтобы беспокойся об этом.

 4
Author: sumeet, 2010-02-06 04:46:08