这个NoSql架构是否正确?

时间:2016-10-08 17:48:16

标签: firebase firebase-realtime-database nosql

我开始使用Firebase和NoSql,我想了解最佳实践,因此我尝试使用orders,order_rows和文章创建此模式。主要查询是显示特定顺序,所以我创建了这个:

    {
    "orders": {
        "1": {
            "date": "1/1/2016",
            "row_order": {
                "1": true,
                "2": true
            }
        },
        "2": {
            "date": "1/1/2016",
            "row_order": {
                "3": true
            }
        }
    },
    "articles": {
        "1": {
            "name": "a"
        },
        "2": {
            "name": "b"
        }
    },
    "row_orders": {
        "1": {
            "quantity": 7,
            "id_article": 1
        },
        "2": {
            "quantity": 2,
            "id_article": 2
        },
        "3": {
            "quantity": 4,
            "id_article": 2
        }
    }
}

当我必须显示订单号1时,我可以找到订单行,然后从行订单中检测文章。

我不使用经典的sql架构(带有id_article和id_order的row_orders)来简化获取数据。

这是对的吗?或者我该怎么做?

1 个答案:

答案 0 :(得分:0)

没有办法说NoSQL数据结构正确。如果您想了解NoSQL,我建议您阅读Firebase documentation on structuring dataNoSQL data modeling上的这篇文章以及Firebase博客上的一些较旧的博客文章(例如this one)。

数据结构中的一个直接问题是您使用伪数组索引作为数据的键。这将导致困难时期,因为Firebase将尝试将它们解释为实际数组索引(意味着您返回具有空第一元素的数组),并且它不会扩展到可能脱机的许多用户或用户。请在blog post on arrays中了解详情。