@SHUstri

Как построить график активных сессий на основании данных о начале окончании каждой сессии?

Здравствуйте.

Есть источник данных с информацией типа:
ID сессии; Время начала сессии; Время окончания сессии

На основании этих данных необходимо отрисовать график числа активных сессий.
Т.е. нужно получить для каждой точки Х в интервале [А;В] число активных сессий.

Потенциальное число сессий за день ~70к, интервалы для графика: 1 день (интервал 10мин) и 1 неделя (интервал 1 час)

Есть два решения, оба мне не нравятся:
1. Делать 24*60/10 или 7*24 запросов к базе, для каждого момента времени Х: "верни чило сессий где время старта <= Х и время окончани > Х".
2. Делать один запрос к базе, для интервала [А;В] "верни все сессии, у которых время старта <= В и время окончания > А" и дальше уже вести подсчет на стороне клиента.

Кто знает более элегантное решение задачи?
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
@SHUstri Автор вопроса
Придумал решение сам:
1. Запросом к эластику строим временную гистограмму по вемени начала сессии, т.е. получаем, сколько новых сессий установилось в течении интервала Х
2. В запрос из п.1 добавляем временную гистограмму по времени окончания сессии, т.е. получаем, сколько сессий завершилось в течении интервала Х
3. Сложив(вычив) п.1 и п.2 получим, на сколько изменилось числоактивных сессий в течении интервала Х
4. Одним запросом получаем число активных сессий на момент времени А (начало интервала для графика)
5. Складываем п.3 и п.4 и получаем число активных сессий на каждый интервал времени Х
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы