MySQL + PHP:〜500kb JSON文件-将数据作为表和字段VS加载为单个序列化变量

时间:2019-01-14 13:50:17

标签: php mysql json optimization entity-attribute-value

我正在创建一个网站,该网站通过从离线项目发送到站点的json文件与离线项目进行交互。 该站点将需要加载这些文件并处理数据。

使用现代计算能力将这些文件作为单个序列化字段简单地加载到数据库中,然后可以为每次使用进行加载和解码,是否可行?

还是将大量JSON适当地存储为表和字段并为每次使用引用它们而节省大量开销吗?

3 个答案:

答案 0 :(得分:1)

在不了解有关项目的更多信息的情况下,具有多个字段的表可能是更好的解决方案。

从长远来看,数据会有更多选择,例如,对字段建立索引,搜索字段以及许多其他MySQL命令,如果它们都存储在单个变量中则不可能。

还要考虑该项目的未来版本,例如向表中添加另一个字段的示例很容易,但是向JSON块中添加另一个字段则更加困难。

项目增长,如果增长100倍或1000倍,表将处理额外的负担。

500kb是一个相对较小的数据块,无论使用哪种方法,计算能力都不会有任何问题,尽管此处提供了更多信息,例如每位用户,每次上传500kb,每天有多少存储,通常会被访问。

调试也将更加容易。

答案 1 :(得分:0)

New MySQL外壳程序具有批量JSON加载器,该加载器不仅非常快,而且使您可以控制数据的处理方式。参见https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-json.html

答案 2 :(得分:0)

  1. 将其加载为JSON。
  2. 考虑需要执行哪些查询。
  3. 将选定的字段复制到MySQL列中,以便那些查询可以使用MySQL的WHEREGROUP BYORDER BY,而不必在客户端中处理。

数据库表包含一堆结构相似的行。每行都有一组固定的列。 (NULLs可用于指示给定行缺少的列。)JSON通过提供复杂的列使事情复杂化。上面我的建议是JSON的开放式灵活性与使用数据库服务器处理大量数据的需求之间的折衷。进一步讨论here