Самый быстрый способ хранения данных комментариев Python - PullRequest
1 голос
/ 22 апреля 2009

Привет, у меня на сервере запущен процесс cgi типа «маленький комментарий», и в настоящее время, когда кто-то оставляет комментарий, я просто форматирую этот комментарий в html, т.е.

<p class="title">$title</p> <p class="comment">$comment</p>

и хранить в плоском файле. Было бы быстрее и приемлемо низким в LOC переопределить хранилище в xml или json, в моей собственной простой спецификации, или придерживаться простого html-маршрута ?.

Я не хочу использовать для этого реляционную базу данных.

Ответы [ 3 ]

3 голосов
/ 22 апреля 2009

Если плоский файл достаточно быстрый, то соглашайтесь, так как он очень прост и доступен. Хранение в формате XML и JSON, но с использованием плоского файла, вероятно, очень сопоставимо по производительности.

Возможно, вы захотите рассмотреть (не обращайте на это внимание, если вы просто оставили вопрос вне вопроса) санацией / фильтрацией текста, чтобы пользователи не могли разбить ваш HTML, например, введите "

" в тексте комментария.
1 голос
/ 22 апреля 2009

Плоский файл - самая быстрая форма настойчивости. Период. Там нет форматирования, кодирования, индексации, блокировки или чего-либо еще.

JSON (и YAML) накладывают некоторые накладные расходы. Они будут медленнее. Там должно быть какое-то форматирование.

XML накладывает больше накладных расходов, чем JSON / YAML. Это будет еще медленнее. Существует достаточное количество форматирования, которое должно быть сделано.

Чем больше накладных расходов, тем медленнее будет.

Ни один из них не имеет никакого отношения к очистке ввода комментариев, чтобы он отображался как действительный HTML. Вы должны использовать cgi.escape для экранирования любых HTML-подобных последовательностей символов в комментарии перед сохранением текста в файл.

1 голос
/ 22 апреля 2009

XML - это хороший, чистый способ хранения данных такого типа. В Python вы можете использовать lxml для создания / обновления файла:

from lxml import etree

P_XML = 'xml_file_path.xml'

def save_comment(title_text, comment_text):
  comment = etree.Element('comment')
  title = etree.SubElement(comment, 'title')
  title.text = title_text
  comment.text = comment_text
  f = open(P_XML, 'a')
  f.write(etree.tostring(comment, pretty_print=True))
  f.close()

save_comment("FIRST!", "FIRST COMMENT!!!")
save_comment("Awesome", "I love this site!")

Это простое начало, но вы могли бы сделать гораздо больше (то есть установить идентификатор для каждого комментария, прочитать XML с помощью анализатора lxml и добавить его вместо простого добавления файла).

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