在 Firebase 中存储 10,000 多个字符串的最佳实践是什么?
long_lists/
<user1>/
string1
string2
...
string15000
<user2>/
string1
string2
...
string15000
根据The Firebase Blog – Best Practices: Arrays in Firebase ,数组是一个很大的禁忌。
现在,看起来像是使用 push()为每个项目生成唯一 key 的方法(key1:string1,key2:string2,...)最有意义:
firebase.database().ref('long_lists/<uid>').push().key
我理解这个问题看似主观的本质,但我猜实际上只有一两种方法可以以高性能的方式为用户存储长单级列表。
最佳答案
TL;DR这取决于...
我个人将我的数据构建为一个复杂的对象:
firebaseKey: "abcde"
name: "test"
order: 0
并按顺序获取它们。当一个对象被删除时,我保留它原样(仍然排序),当添加一个对象时,我增加最后一个对象的顺序(保持它仍然排序)。显然,当事情需要改变时,我会重新调整所有索引。
话虽如此,您确实指出您的用例是每个用户超过 10k 个字符串。那么,如果它们不经常修改,甚至可能不可变,我会做一个由唯一字符分隔的长字符串,并在客户端完成繁重的工作。
firebaseKey: "abcde"
value: "string1#string2#string3#string4"
这样,您就可以节省 Firebase 存储空间,并让客户完成相关工作,甚至可以为您节省资金(云中空间更少,使用的云电源更少)。
关于firebase - 最佳实践 : Angularfire database structure for 10, 000+ 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45466105/