我为firebase观看了很多非规范化结构,但无法为ebay或craigslist这样的大型网络应用找到正确的方法。
如果你以ebay或craigslist为例。如何建立数千/数百万项目/类别的效率结构?
这是正确的方法吗?
"users":{
$userID: {
...
}
},
"categories": {
$categoryID (01): {
"name": "computers"
"subcategories": {
$subCatID: {
"name": "apple"
}
}
},
$categoryID (02): {
"name": clothes
...
}
},
"items": {
$id: {
"name": "iMac 27",
"category": {
$categoryID
$subCatID
....
},
"seller": $userID,
...
}
}
我不明白的是,如果您想获得特定商品,是否需要从"商品中下载所有商品"树先?这会导致数百万项的性能问题吗?
非常感谢你的帮助。 斯蒂芬
答案 0 :(得分:1)
如果您知道要获得哪个项目,可以通过简单的阅读获得:
ref.child('items').child(itemId')
这直接访问子进程并且不要求数据库考虑所有项目,也不要求客户端下载所有项目。数据库只是直接从磁盘加载正确的项目,并仅将该项目返回给客户端。