【发布时间】:2016-02-04 20:31:20
【问题描述】:
我看过很多针对 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,
...
}
}
我不明白的是,如果你想获得一个特定的项目,你需要先从“项目”树中下载所有项目吗?这会导致数百万个项目出现性能问题吗?
非常感谢您的帮助。 斯蒂芬
【问题讨论】:
-
存储数百万个项目是一项非常高效的操作。阅读或查询数百万个项目不是。一切都取决于您希望如何访问数据。有关模式和注意事项的详细介绍,请参阅这篇文章:highlyscalable.wordpress.com/2012/03/01/…
-
如果您知道要获取哪个项目,只需阅读:
ref.child('items').child(itemId')。 -
@Frank van Puffelen 感谢您的回答和文章。我会读的。我知道如何使用
coderef.child('items').child(itemId')code获取该项目,但我要问的是,即使您定位正确的项目,它是否必须下载所有先父树? -
如果您使用我展示的构造,则不会。下一次,显示代码,我将能够立即回答。
标签: firebase firebase-realtime-database angularfire nosql