Android Firebase 数据库加载更快

标签 android performance firebase firebase-realtime-database loading

我正在使用适用于 Android 的 Firebase 数据库,但遇到了一些速度问题。检索许多自定义对象时需要很长时间(每个对象需要 1/2 - 1 秒)。我正在加载存储在 FB 中的一堆 Poll 对象。

这是我目前如何为每个民意调查做的一个例子:

pollRef = rootRef.child(getString(R.string.poll_ref)).child(myPollIds.get(polls.size()));

        pollRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (isAdded()) {
                    Poll poll = dataSnapshot.getValue(Poll.class);

我现在正在尝试单独加载下载我需要使用的投票的特定部分。它变得相当复杂。有没有更好的方法可以有效地只从数据库中获取部分对象?

例如,我只想要对象的高亮部分。 enter image description here

提前致谢! :)

最佳答案

Firebase 实时数据库无法让您像您希望的那样挑选个别属性。从更大的结构中只获取一部分数据的最有效方法是将所有相关位复制到一个完全不同的结构中,然后请求另一个结构。这种复制对于优化的 NoSQL 数据库来说是典型的——数据通常会根据需要多次复制,以针对应用程序中常见的特定查询进行优化。这样做的缺点是,当您更新其中一个复制值时,您需要注意将其复制到它可能存在的所有其他位置。

这个数据组织策略的名称叫做denormalization .

关于Android Firebase 数据库加载更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41927215/

相关文章:

java - Android XMPP Smack 在应用程序关闭时接收消息

c++ - 科学模拟中适当的类(class)成员访问

performance - MongoDB大索引构建很慢

java - 应用程序启动时在 Android 中_快速_加载(反序列化)2MB 数据

angularjs - 我应该总是通过 $push() 将新对象添加到对象列表中吗?

android - Glide 与 Room 数据库的集成,GlideApp 类未生成(Glide 4.7.1)

c# - 如何在 Xamarin.Forms 中获取嵌入文件的 URL/路径

java - 如何从 Firestore 中具有特殊字符的文档中获取数据

ios 正在将图像上传到 Firebase,但在我尝试下载时却没有?

android - 不支持 Google Play In-app Billing V.3 时