firebase - 最佳实践 : Angularfire database structure for 10, 000+ 字符串

标签 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()为每个项目生成唯一 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/

相关文章:

javascript - 如何将信息传递给 stripe.checkout.sessions.create() 函数

Swift 使用子字典设置 firebase 字典的值

google-oauth - Firebase Google OAuth 重定向错误

android - 我在 build.gradle(Project) 中找不到 buildscript

javascript - Firebase 身份验证需要两次 'Login' 调用

swift - 使用 Swift 3.0 从随机子路径从 Firebase 检索数据

javascript - 使用 Promise 循环获取 Firebase 对象

android - FirebaseDatabase.getInstance().setPersistenceEnabled(true) 到底做了什么?

ios - Swift 3 - 尝试从 FirebaseSnapshot 检索数据时的 SIGABRT

angular - 如何在 Angular 10 应用程序仪表板中包含 firebase 分析?