Json - 完成具有重复数据的记录,或标准化

时间:2017-01-05 15:12:33

标签: javascript json performance

这是一个非常普遍的问题,但作为一个初学者,如果我能稍微挑选你的大脑,我将不胜感激。

我正在将数据提取和演示文稿分离到我的项目中,并希望以最佳方式获得一些反馈。

目前数据已“规范化”(~5MB)以避免数据重复,但我正在考虑转向另一个方向让我自己更容易,有点像Json的nosql数据库。

当前设置类似于以下示例:

{
    "Cities": [

        {
            "name": "Seattle",
            "shops": [
                "Walmart",
                "Coles",
                "Batmans Protein shop"
            ]
        }, {
            "name": "Los angeles",
            "shops": [
                "Walmart",
                "Costco"
            ]
        }
    ],
    "shops": [{
        "name": "Walmart",
        "departments": [
            "Meat",
            "Vegetables"
        ]
    }, {
        "name": "Coles",
        "departments": [
            "Meat",
            "Vegetables"
        ]
    }]
}

I ie时出现问题。想要展示拥有蔬菜区的商店的城市。在能够显示结果之前会有大量的解析。

所以我正在考虑以下替代方案:

  1. 保持数据规范化,但在页面加载时将其合并到客户端,以降低发送的数据。
  2. 在生成时将其合并,这意味着对象将更大,但客户端站点操作更少。
  3. 需要考虑的事项:

    • 在99%的情况下,应用程序将是内部的,这或多或少会使带宽成为非问题。
    • 我想避免使用数据库,因为这意味着人们更难实现我的解决方案。
    • 如果我“合并”数据,估计总数将是20MB Json数据。
    • 当前版本使用预先生成的12 + MB的html页面和5MB的Json,这需要花费很长时间才能呈现,因此它只会变得更好。 :)

    同样,非常一般,任何建议都会受到赞赏。

    /帕特里克

1 个答案:

答案 0 :(得分:1)

几个月前我也处于同样的情况,我选择了第1点。保持数据规范化,但在页面加载时将客户端合并到较低的数据发送。

现在Web客户端功能更强大,服务器具有Ram和CPU的限制,所以我们也应该利用客户端的计算机能力。

此外,您可以利用JS WebWorker以线程数分配计算,以便更快地进行计算或合并。

祝你好运。