В каком виде в БД/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...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы