В каком виде в БД/Elasticsearch оптимальнее хранить интервальное расписание, чтобы делать разного рода выборки?

Здравствуйте, UI добавления расписания выглядит примерно так:
59ec7c24cbda1203495490.png
На выходе мы имеем такой json
[
 {
  "times": [
    {"start": "10:00", "end": "11:30"},
    {"start": "14:00", "end": "15:30"},
    {"start": "16:00", "end": "17:30"}
   ], 
   "dates": {
     "start": "21.10.2017",
     "end": "25.10.2017"
   }
]

Его я сохраняю в jsonb поле postgresql.

Для бека стоит задача выбирать из бд:
1. Те сеансы которые будут сегодня учитывая что:
1.1. Бывают сеансы у которых начало сегодня (например в 23:30), а окончание завтра (в 01:00)
1.2 Бывают сеансы у которых начало в 00:30 или даже в 04:00 следующего дня, но их хотелось бы показывать как сеансы на сегодня

Интересует мнение как бы арихтектурно вы решили подобную задачу?
Использовали ли бы elasticsearch или обошлись одним лишь postgresql? И если only postgre, то хранили бы вы преподготовленные данные в отдельной таблице или искали бы по jsonb полю?
  • Вопрос задан
  • 553 просмотра
Пригласить эксперта
Ответы на вопрос 1
@kn0ckn0ck
Продюсер
Раньше ругали за то, что языки/библиотеки расточительно относятся к памяти - не экономят ее. Сейчас ругают за то, что расточительно относятся к сервисам/технологиям - шлеп sql, шлеп nosql и готово.

Описанная задача не является архитектурно значимой, это к вопросу дизайна вашего кода. Почему бы не хранить дату/время в линейном формате, например, аналогично UNIX_TIMESTAMP? На этом пространстве легко решаются описанные задачи даже на обычном калькуляторе, не говоря об elasticsearch...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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