【问题标题】:Scaling with Firebase使用 Firebase 进行扩展
【发布时间】:2017-02-24 11:23:59
【问题描述】:

我不熟悉从数据库中存储和检索大量数据。我有一个使用 Firebase 存储数据的 iOS 应用,一切正常,但我担心一旦数据越来越多,性能会受到影响。

例如,在创建个人资料时,用户必须选择尚未使用的用户名。为此,我检索所有现有用户名并检查新用户名是否已经存在。那么我的问题是,如果现有用户名有数千甚至数百万,我该如何测试会发生什么?

提前致谢。

【问题讨论】:

  • 无需收集所有用户数据来查看用户名是否存在 - 对其进行查询。如果您遵循典型的设计模式,例如非规范化数据、利用查询来查找特定数据但不要过度使用它们、在需要时复制数据等,您会发现 Firebase 可以处理数十万(数百万)条数据而不会降级在性能上。 *如果您拥有数百万个用户名...为​​此欢呼!
  • 这里的关键就在 Jay 的第一句话中:存储数据是无限可扩展的。访问该数据中的单个节点几乎是可扩展的。但是查询一百万个节点以检查其中是否存在一个值。所以解决方案是选择一个不需要查询的数据结构。另请参阅:stackoverflow.com/questions/39712833/…

标签: ios firebase firebase-realtime-database


【解决方案1】:
Root
    Profiles
        [username1]
             ...
        [username2]
             ...
        [username3]
             ...

    let ref = FIRDatabase.database().reference().child("Profiles").child("\(username)")
    ref.observeSingleEvent(of: .value, with: {snapshot in
            if snapshot.exists() {
                print("user exists")
            } else {
                print("user not exists")
            }
        })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 2016-09-26
    • 2020-06-15
    • 2023-01-19
    • 2012-10-27
    • 2011-05-07
    • 2013-11-19
    • 1970-01-01
    相关资源
    最近更新 更多