Выбор базы данных и сортировка по времени (панель инструментов Python в реальном времени) - PullRequest
2 голосов
/ 26 сентября 2011

У меня есть панель для обновлений в режиме реального времени и последних уведомлений.

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

  1. Последние сообщения
  2. Последние комментарии

Представьте, что я хочу, чтобы при загрузке панели мониторинга отображалось только 10 обновлений (позже я получаю обновления через ajax). Как запросить базу данных и как отсортировать результаты?

Я думал о том, чтобы запросить 2 таблицы (сообщения и комментарии) для данных, на которые я подписан, добавить эти данные в список и отсортировать результаты по дате и времени, а затем вернуть последние 10, но я чувствую, что это не так очень хорошее решение, поскольку для сортировки этих таблиц (и моих подписок) потребуется много времени.

Каковы ваши ответы / мысли по этой проблеме?

1 Ответ

2 голосов
/ 26 сентября 2011

Запросите порядок упорядочения первой таблицы, уменьшив время вставки и ограничив результаты до 10. Затем запросите вторую таблицу таким же образом.Затем объедините результаты в python и верните первые 10 из них.

Пример django может выглядеть так:

from operator import attrgetter

recent_posts = Post.objects.order_by('-created')[:10]
recent_comments = Comment.objects.order_by('-created')[:10]
both_combined = list(recent_posts) + list(recent_comments)
both_sorted = sorted(both_combined, key=attrgetter('created'), reverse=True)
most_recent = both_sorted[:10]
...