我应该使用 JSONField 还是 FileField 来存储 JSON 数据?

Should I use JSONField or FileField to store JSON datas?

我想知道我应该如何存储我的 JSON 数据以获得最佳性能和可扩展性。

我有两个选择:

  1. 第一个是使用 JSONField,这可能会在性能和处理数据方面为我提供简单的优势,因为我不必获取它们每次都出一个文件。

  2. 我的第二个选择是将我的 JSON 数据作为 json 文件存储在 FileFields 中。这似乎是最好的选择,因为大量的 JSON 不会存储在数据库中(仅存储文件的位置)。在我看来,它是可扩展性的最佳选择,但可能不是用户性能的最佳选择,因为每次在模板中显示文件之前都必须读取文件。

我想知道我的想法是否合理,存储 JSON 数据的最佳方式是什么,以便它们尽快可重用,同时又不会使数据库和可伸缩性变得复杂?

Json 字段显然会因为它的索引而具有良好的性能。它的一个非常好的特性是本机数据访问特性,这意味着您不必 parse/load json 然后查询,您可以直接从模型字段查询。现在,由于您拥有大量 json 数据,因此文件似乎是比模型字段更好的选择,但文件仅具有存储优势。 引用 google 搜索中的一些随机文章:

Postgres json field takes almost 11% extra data than the json file on your file system so test of 268mb file in json field is 233 mb (formatted json file)

存储在文件中有一些缺点,包括读取文件解析 json 和查询,这是基于磁盘的操作,非常耗时。 json 字段的可伸缩性不会成为问题,尽管您的数据库大小会很大,因此移动数据对您来说可能会变得困难。

所以除非你没有足够的数据库space你应该选择json字段。