Сомневается, как проектировать данные с помощью Django и PostgreSQL, когда они имеют значение для каждого часа года - PullRequest
0 голосов
/ 11 октября 2019

Я запускаю приложение django с PostgreSQL в качестве базы данных. У меня есть модель здания под названием здание. Из этой модели я создаю много экземпляров зданий. У меня есть другая модель, которая называется леса, из которой я создаю много экземпляров леса. (Предположим, у меня есть еще больше моделей, к которым применимо то же самое)

Теперь я хочу добавить данные (назовем их х) для каждого здания и для каждого леса за каждый час года. Это означает, что у меня будет 8760 значений для каждого здания и экземпляра леса.

For instance: 
Hour1 : 234
Hour2 : 667
...
HourX : x
...
Hour8760: 34

Эти 8760 значений будут добавляться, приблизительно, 10-15 раз в день, что может привести к 131400 значениям в день.

Теперь у меня есть сомнения относительно того, как спроектировать это. Я думал, что смогу использовать такую ​​модель:

class Hour(models.Model):
    building                = models.ForeignKey(Building, on_delete=models.CASCADE)
    forest                  = models.ForeignKey(Forest, on_delete=models.CASCADE)
    hour                    = models.IntegerField(...)
    value                   = models.FloatField(...)
    timestamp               = models.CharField(max_length=200, null=True, blank=True)

Моя вторая мысль - создать ее с JSONField, как обсуждалось здесь: Django JSONField внутри ArrayField . Поэтому, возможно, я мог бы сохранить словарь для каждого здания и каждого леса ИЛИ иметь отдельную модель, которая хранит этот словарь, например {hour1:value, hour2:value}

Мой вопрос: каков наилучший способ создать то, что я имею в виду? Есть ли лучший способ, который я не рассматриваю?

Я также думаю о варианте 1: для каждого значения я бы создал новый объект часа. Это много случаев, и я боюсь, что моя база данных раздута или что PostgreSQL испытывает проблемы с ее обработкой.

Я ищу руководство для этого.

Я бы хотел придерживаться PostgreSQL, хотя я читал о InfluxDB и Timescale. Я думаю, что PostgreSQL очень мощный и должен справиться с этим. Я предполагаю, что прикрепленный к моему вопросу также, если это все еще разумно с количеством данных, которые я должен обработать, чтобы придерживаться PostgrSQL, который я надеюсь. И последнее, но не менее важное: я также хочу написать API для него, который, вероятно, не имеет значения, но я все равно добавляю его.

Любое руководство, советы и помощь очень ценится. Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...