@wawa

Как представить time series data если используется ORM?

Использую Django.
В понятиях бизнес логики есть объект A с характеристиками a1,a2,a3...
Он прекрасно ложится на идею ORM - создается соответствующая модель A и она прекрасно мапится в таблицу "a_table" в РСУБД (Postgres). Также по требованию бизнес-логики необходима история изменения одной некоторой характеристики x для каждого объекта A. На уровне РСУБД всё просто - создается таблица с тремя полями (a_id, value, change_time). Но не понятно как это должно быть представлено на уровне приложения с ORM. Создание модели "ИзменениеХарактеристикиИкс" кажется нелепым. Всё-таки модели должны представлять объекты бизнес логики, а она оперирует понятием "временной ряд" и не выделяет точки в этом ряду как-то отдельно в объекты.
Собственно повторю вопрос: как такие данные принято представлять в системе с ORM?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
syschel
@syschel
freelance/python/django/backend
Так как вы и поняли, так и представляйте.
Модель в джанге не означает бизнес логику, она означает именно по сути таблицу в БД. По мимо вашего варианта, в БД спокойно могут быть таблицы со списками, к примеру городов, стран, валют, цветов или характеристик.
Единственное что можете джангой ещё сделать, вроде бы не очевидного. Это переопределить метод Save() у модели А и проверять. Если объект уже есть (то есть выполняется обновление объекта, а не создание), то перед сохранением, старые значения сбросить в вашу "ChangeOptions" которая состоит из полей(связь на А, старое_значение и ДатаТайм).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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