Javascript Json-使用重复数据完成记录,或规范化

Javascript Json-使用重复数据完成记录,或规范化,javascript,json,performance,Javascript,Json,Performance,这是一个非常笼统的问题,但作为一个初学者,如果我能给你点建议,我将不胜感激 在我的一个项目中,我正在将数据提取和表示分离开来,并希望获得一些关于如何以最佳方式实现这一点的反馈 目前,数据已“规范化”(约5MB)以避免数据重复,但我正在考虑向另一个方向发展,以简化自己的工作,类似于一个nosql数据库,即Json 当前设置类似于此示例: { "Cities": [ { "name": "Seattle", "shops":

这是一个非常笼统的问题,但作为一个初学者,如果我能给你点建议,我将不胜感激

在我的一个项目中,我正在将数据提取和表示分离开来,并希望获得一些关于如何以最佳方式实现这一点的反馈

目前,数据已“规范化”(约5MB)以避免数据重复,但我正在考虑向另一个方向发展,以简化自己的工作,类似于一个nosql数据库,即Json

当前设置类似于此示例:

{
    "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"
        ]
    }]
}
当我想展示有蔬菜区商店的城市时,问题就出现了。在能够显示结果之前,需要进行大量的解析

因此,我正在考虑以下备选方案:

{
    "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"
        ]
    }]
}
  • 保持数据规范化,但在页面加载时将其合并到客户端,以降低发送的数据
  • 在生成对象时将其合并,这意味着对象将更大,但客户端站点操作更少
  • 需要考虑的事项:

    {
        "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"
            ]
        }]
    }
    
    • 在99%的情况下,应用程序都是内部的,这或多或少使带宽成为一个问题
    • 我希望避免使用数据库,因为这意味着人们更难实现我的解决方案
    • 如果我“合并”这些数据,估计总数将是20MB的Json数据
    • 当前版本使用12+MB的预生成html页面和5MB Json,这需要很长时间才能呈现,因此它只能变得更好。:)
    同样,非常笼统,任何建议都将不胜感激


    /帕特里克

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

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

    此外,您可以使用JSWebWorker以线程的数量分布计算,以加快计算或合并速度


    祝你好运。

    好建议,萨钦!我测试了一下,结果证明这是个坏主意。我的数据量太大了。谢谢你的建议!