我正在構建一個社交應用程序,該應用程序允許用戶彼此關注並獲取他們關注的用戶發佈的帖子。目前,我計劃將數據存儲爲如下所示,但是,我不確定它是否會縮放。從Firebase中的節點查詢多個用戶的帖子的有效方法
{
"users": {
"alovelace": {
"name": "Ada Lovelace",
"follows": {
"ghopper": true,
"eclarke": true,
"john": true
//+100 more maybe
},
},
"ghopper": { ... },
"john": { ... },
"eclarke": { ... }
//all the users....
},
"posts": {
"p1": {
"user": "eclarke",
"post": "Its a wonderful day today.",
"timestamp": 1459361875337
},
"p2": {
"user": "john",
"post": "The laptop seems to be malfunctioning.",
"timestamp": 9454361875332
},
"p3": {
"user": "ghopper",
"post": "The bus is late.",
"timestamp": 6593618235336
},
"p4": {
"user": "someotheuser",
"post": "The relay seems to be malfunctioning.",
"timestamp": 1459361875337
},
"p5": {
"user": "eclarke",
"post": "The relay seems to be malfunctioning.",
"timestamp": 5459361875331
},
"p6": {
"user": "alovelace",
"post": "The relay seems to be malfunctioning.",
"timestamp": 3459361875334
}
//1,000,000+ posts maybe present.
}
}
所有用戶都存儲在users
節點以及他們關注的人。所有用戶創建的所有帖子都存儲在節點帖子中。雖然平臺的用戶可能會擴展到1000年,的帖子應該很容易擴展到1,000,000+。我需要在以下幾個方面查詢數據:
對於用戶來說,
alovelace
拿到最近的用戶的用戶 後續的職位。在我們的案例中,帖子爲ghopper
,eclarke
和john
。這 必須按時間和分頁。因爲我們一次只能顯示10個帖子 。對於用戶'john',在他的個人資料中顯示他的所有帖子。
Firebase是這種用例的正確DB。結構是否遵循可伸縮性?還有什麼我需要考慮的嗎?
如果我們不扇出,將查詢職位節點上是慢? – esafwan
假設有人有500個關注者。你將不得不提出500個請求。所以是的,非常緩慢。 – theblindprophet