【问题标题】:orderByChild().equalTo() Firebase complexity [closed]orderByChild().equalTo() Firebase 复杂性 [关闭]
【发布时间】:2021-08-18 11:46:37
【问题描述】:

我想知道 orderByChild().equalTo() 过程的工作速度(对于 Java),以及使它更快的技巧。

因为我在我的应用程序中经常使用它。

请帮帮我。

【问题讨论】:

  • 它工作得非常快。你的情况不也是这样吗?
  • 效果很好,但是我想知道如果我的数据库中有1e6个项目和1e6个查询,它会很快工作。
  • 我不确定我是否理解。您在数据库中有 16 个项目,您想对每个项目执行一次查询吗?
  • 我有检查用户是否存在的功能,我想知道如果我在数据库中有 1000000 个用户,它的工作速度(对于一个请求)。
  • 您使用的是哪个数据库,Cloud Firestore 还是实时数据库?

标签: java android firebase firebase-realtime-database


【解决方案1】:

根据:

我很感兴趣 orderByChild().equalTo() 过程的工作速度(对于 java),以及使它更快的技巧。

还有你的评论:

我有检查用户是否存在的功能,如果我在数据库中有 1.000.000 个用户,我想知道它的工作速度(对于一个请求)。

如果您要检查包含 100 万用户的节点中是否存在用户,请使用如下所示的架构:

Firebase-root
  |
  --- users
       |
       --- $uid
            |
            --- //user data

在 Java 中使用以下代码:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
uidRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            DataSnapshot snapshot = task.getResult();
            if(snapshot.exists()) {
                Log.d("TAG", "Users already exists");
            } {
                Log.d("TAG", "Users doesn't exist");
            }
        } else {
            Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});

它会很快工作。

但是,根据官方文档关于如何Scale with Multiple Databases

在 Firebase 实时数据库中优化性能和扩展数据的最佳方法是将数据拆分到多个实时数据库实例,也称为数据库分片。除了负载平衡和性能优化之外,分片还让您可以灵活地扩展超出适用于单个数据库实例的限制。

但建议仅在您使用实时数据库并且适合以下任一场景时才使用此技术:

  • 您希望扩展到超过 200,000 个同时连接、1,000 次写入操作/秒的限制或单个数据库实例的任何其他限制。
  • 您有多个离散的数据集,并希望优化性能(例如,为单独的、独立的用户组提供服务的聊天应用)。
  • 您希望平衡多个数据库之间的负载,以提高正常运行时间并降低单个数据库实例过载的风险。

【讨论】:

  • 嘿弗拉德。我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!
猜你喜欢
  • 2017-08-22
  • 2018-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 2019-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多