对于有经验的(Django)开发人员来说,这可能是一个简单的问题。
我的项目数据库是PostgreSQL。
我打算使用单个受保护的模型实例作为某些数据的集中存储。该实例将有一个JSONField,它将依次存储键值对的动态集合(两者都是字符串)。 “动态”是指新的键值对将不时添加到集合中,因此集合的大小将不断增加。
据我所读(例如Size limit of JSON data type in PostgreSQL),JSONField的大小限制约为1GB。这是相当多的,但仍然不是无限的。
我的问题是:如果我设法耗尽JSONField的存储容量,究竟会发生什么?有没有关于如何预测这种情况的建议(例如监控实例的存储大小)?
答案 0 :(得分:2)
由于您不打算在数据库中操作JSON值,因此应使用数据类型json
而不是jsonb
。
如果超出该限制,您将收到错误消息。但由于整个值暂时必须保存在客户端和数据库端的RAM中,我希望你在此之前遇到问题 - 你可能会从数据库中获得内存不足的消息,或者性能可能真的很糟糕。
如果要在数据库中存储的状态超过1GB,最好将其拆分为多个部分,并仅更新那些真正发生更改的部分,就像通常在关系数据库中那样。
答案 1 :(得分:1)
这几乎是你想要的。