Должен ли я хранить проанализированный текст?Если да, то где? - PullRequest
1 голос
/ 08 февраля 2012

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

Вопрос в том, стоит ли его кэшировать?И если да, то где?Текстовый файл или база данных?

На мой взгляд, у меня есть три варианта:

  • Не кэшировать.Запускайте синтаксический анализ каждый раз, когда текст извлекается из базы данных и отображается.
    (В Symfony2 / Twig я бы просто сделал {{ text|markdown }})

  • Имеет два поля в базе данныхcontent_source и content_parsed.Каждый раз, когда текст редактируется, сохраняйте проанализированный код и при запросе просто отображайте кэшированный код.

  • Кэшируйте проанализированный код в виде файла.При запросе проверьте, существует ли файл (если нет, проанализируйте и кэшируйте его) и отобразите его.

Мысли?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Лично я бы сохранял исходный и проанализированный контент в базе данных, если только контент не станет большим. Разбор каждый раз будет большой проблемой масштабируемости.

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

2 голосов
/ 08 февраля 2012

Вариант 2: Итерация по каждой "странице", анализ текста MarkDown, повторное сохранение в таблицу как полностью проанализированный.IIRC с хорошо оптимизированным db, db будет быстрее, чем fs open / write.

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

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