最佳实践:10,000多个字符串的Angularfire数据库结构

时间:2017-08-02 16:20:28

标签: firebase firebase-realtime-database angularfire

在Firebase中存储10,000多个字符串的最佳做法是什么?

long_lists/
    <user1>/
        string1
        string2
        ...
        string15000
    <user2>/
        string1
        string2
        ...
        string15000

根据The Firebase Blog – Best Practices: Arrays in Firebase,数组是一个很大的禁忌。

现在,看起来使用push()方法为每个项目生成唯一键(key1:string1,key2:string2,...)最有意义:

firebase.database().ref('long_lists/<uid>').push().key

我理解这个问题看似主观的本质,但我猜测实际上只有一种或两种方法可以高效地为用户存储长单级列表。

1 个答案:

答案 0 :(得分:2)

TL; DR 取决于......

我个人将我的数据结构化为一个复杂的对象:

firebaseKey: "abcde"
name: "test"
order: 0

按照顺序取出它们。当一个对象被删除时,我保持原样(仍然排序),当添加一个对象时,我增加最后一个对象的顺序(保持它仍然排序)。显然,当事情需要四处移动时,我会重新调整所有指数。

话虽如此,你确实指出你的用例是每个用户超过10k的字符串。那么,如果它们不经常修改或者甚至不可变,我会用一个独特的字符分隔一个长字符串,并在客户端做繁重的工作。

firebaseKey: "abcde"
value: "string1#string2#string3#string4"

通过这种方式,您可以节省自己的火力存储空间,并让客户完成工作,这样可以为您节省资金(云中空间更少,使用的云电量更少)。