Я запускаю приложение 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 для него, который, вероятно, не имеет значения, но я все равно добавляю его.
Любое руководство, советы и помощь очень ценится. Заранее спасибо!