我幾乎在任何地方閱讀了關於構建高效查詢的Firebase Database
,但我仍然對兩種替代方法有點混淆。Firebase - 爲高效索引構造數據
例如,假設我想從過去7天左右獲取用戶的所有「maxBenchPressSessions」。
我這兩個結構之間採摘之間卡住:
在第一組合,我用的是用戶的ID作爲屬性索引是否真的還是假的。第二,我使用userId
作爲屬性NAME,其值將是用戶的ID。
其中一個比另一個更快,還是會以相對相同的方式進行索引?我對數據庫設計很陌生,所以我想確保我遵循正確的做法。
進展
我想出了將兩者打平我的數據庫,並允許我補充一個ListenerForSingleValueEvent
使用orderBy
只有一次的解決方案,但只有當我要檢查,如果用戶有一個會話保存一個特定的一天。
我可以有各自maxBenchPressSession
對象具有在userId_dateString
的格式的密鑰。但是,如果我想從最近7天獲得所有用戶的會話,我不知道如何在一個查詢中執行此操作。
任何想法?
沒有數據結構,它是固有地更快或更慢。區別取決於您如何從代碼中訪問數據。如果你顯示你想寫的查詢,它會更容易幫助。一般來說:爲您的應用程序訪問數據建模數據。看到這篇關於[NoSQL數據建模]的文章(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/) –
我會用一個值事件監聽器來做一個查詢。我會在過去7天內從用戶那裏獲得所有'maxBenchPressSessions'。 – Rafi