0

我正在运行一个以 PostgreSQL 作为我的数据库的 django 应用程序。我有一个叫做建筑的建筑模型。从这个模型中,我创建了许多建筑实例。我有另一个称为森林的模型,我从中创建了许多森林实例。(假设我有更多同样适用的模型)

现在我想为一年中的每个小时为每座建筑物和每座森林添加数据(我们称之为 x)。这意味着我将为每个建筑物和森林实例提供 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 inside ArrayField。所以也许我可以为每个建筑物和每个森林保存一个字典,或者有一个单独的模型来存储这个字典,比如{hour1:value, hour2:value}

我的问题是最好的方法是设计我的想法?有没有更好的方法我不考虑?

我也在考虑选项1:对于每个值,我都会创建一个新的小时对象。这是很多情况,我担心我的数据库会变得臃肿或者 PostgreSQL 无法处理它。

我正在为此寻找一些指导。

即使我阅读了有关 InfluxDB 和 Timescale 的信息,我仍想坚持使用 PostgreSQL。我认为 PostgreSQL 非常强大,应该能够处理这个问题。我想我的问题是我必须处理的数据量是否仍然合理才能坚持使用 PostgrSQL,我希望如此。最后但并非最不重要的一点是,我还想为它编写一个可能不相关的 API,但我还是添加了它。

非常感谢任何指导、提示和帮助。提前致谢!

4

0 回答 0