Firebase实时数据库大量消耗数据

时间:2019-03-19 21:34:44

标签: android firebase firebase-realtime-database

我是数据库的唯一真实用户(目前正在测试),这是自设置FirebaseDatabase.getInstance()。setPersistenceEnabled(true);以来从数据库下载的数据。

12月12日(红线)-每天约3MB

这是我的数据库的大小:大约80ko。

enter image description here

我可以从我的帐户访问的数据大约是1/4,即20ko。

由于我使用了FirebaseDatabase.getInstance()。setPersistenceEnabled(true);,所以我真的不明白如何在一天内下载约150次我拥有的所有数据。而且我并没有发送太多或删除太多。

那么,如此庞大的消费量又如何解决呢?我曾考虑过使用SQL内部数据库,但我不明白这一点,因为firebase可以轻松地将所有数据存储在磁盘内存中。另外,我认为为了检查下载的数据,侦听器仍会检查每个数据是否有所更改……所以我真的认为这不会有所帮助。

FirebaseDatabase.getInstance()。setPersistenceEnabled(true)并不会真正减少用户支持并仍然下载预先下载的内容吗?

如果一个用户每天使用大约2 MB,那将是1GB / 500users => 1 $,这是非常昂贵的...

我该怎么办?

编辑:

我刚刚进行了测试。我清理了该应用程序的所有存储,并下载了我已经访问过的所有数据(大约20ko)

这是结果:

enter image description here

393ko ...这很奇怪。然后我再次检查了图中的数据,今天我已经下载了1 MB。

enter image description here

我看不到任何解释...唯一看到的是,举例来说,当我尝试在数据库中查找相同内容时,我并不总是使用相同的引用。 例如,在一个活动中,如果我需要获取我使用的用户名

此:

Private DatabaseReference UserRef;
UserRef = FirebaseDatabase.getInstance().getReference().child("Users");




UserRef.child(iD).child("name").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot)
        {
            String name = dataSnapshot.getValue().toString(); //do some with name

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

在其他活动中,我将使用相同的功能,但会在其上创建另一个引用。也许确实有所作为,也许下载的数据是两次,而不是一次,因为firebase不知道我在寻找相同的数据,因为我使用另一个变量名作为参考。

0 个答案:

没有答案