簡體   English   中英

Firebase中有序列表的性能

[英]Performance of an ordered list in Firebase

如果我想在Firebase中維護一個有序列表,似乎最好的方法是手動為列表中的每個項目分配優先級。 這意味着如果我從列表中插入或刪除項目,我必須更新其后的所有項目的優先級。 對於列表開頭的項目,這意味着更新列表中的每個項目。 在這種情況下,是否有更好的數據結構或算法?

您可以通過適當設置元素的優先級來創建有序列表。 列表中的項目按優先級排序,或者如果可以通過數值將優先級解析為數字。

如果要將項目插入現有列表的中間,修改現有項目的優先級將起作用,但效率可能非常低。 更好的方法是在要插入值的兩個項目之間選擇優先級,並為新項目設置該優先級。

例如,如果元素1的優先級為“a”,元素2的優先級為“b”,則可以在兩者之間插入元素3,優先級為“aa”(或“aq”,“az”等)。

根據我們的經驗,大多數情況下,當您創建有序列表時,您不一定知道列表中要預先插入項目的位置。 例如,如果你正在為游戲創建一個Leader Board,你事先並不知道你想在列表中放置第3個新分數,而是你知道你想要將它插入任何10000分獲得你的位置(可能恰好是第三位)。 在這種情況下,只需將優先級設置為分數即可完成此操作。 請參閱我們的領導板示例: https//www.firebase.com/tutorial/#example-leaderboard

Ruby gem ranking_model對此問題有一個有趣的方法。 它像許多其他“充當列表”實現一樣使用位置整數,但它不依賴於重寫每個位置移動的所有整數。 相反,它將整數分開很遠,因此每次更新可能只影響一行或兩行。 可能值得查看自述文件和代碼,看看這種方法是否適合這里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM