繁体   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