Android的火力地堡如何处理实时服务器本地数据库连接

本垒打 :

至于有关这个主题类似的问题和ChildEventListener,也没有相关的答案,所以我的继承人。

我有一个地方SQLite它包含所有DB的数据,我也有我的新条目或所有用户实时变化更新火力地堡实时数据库。我目前正在使用的做ChildEventListener如下:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getDatabase().getReference();
    DatabaseReference childRef = rootRef.child("my_root");

    ChildEventListener eventListener = new ChildEventListener()
    {
        ....
    };
    childRef.addChildEventListener(eventListener);

至于功能,有了这个代码,我可以拿到孩子的实时变化,得到新的条目,删除孩子的一切我需要的,但有一个问题。当听众负载了这个特定的活动中,onChildAdded听众被调用的次数巨额关于这根每一个孩子,在文件上所述:

child_added每一个新的子项被添加到指定的路径时触发一次为每个现有子,然后再

所以,我虽然获得焦点,我真的很需要和我有做过的项目:

rootRef.orderByKey().startAt("-WhatTF123456789")...

但后来因为它听新条目,而不是所有的人我已经失去了我的CRUD功能。

所以,我想出了一个解决方案。保持节点与所有已经取得的火力点数据库,并与所有已经阅读并所做的更改到本地数据库知道谁需要更新的用户节点的变化,然后用addChildEventListener这个特定的节点。但是,这似乎是多余的。

什么是我的选择来处理这种情况?

亚历克斯·马莫:

onChildAdded监听器被调用的次数巨额查找有关此根每一个孩子。

正如你已经提到并作为文档状态,这是预期的行为。通常情况下,不建议附加ChildEventListener的节点(根节点)在包含数据的巨大的量。请注意这个做法,因为下载大量数据的时候,你可以得到误差修改,如:OutOfMemoryError错误这是发生,因为你暗中下载您正在收听的整个节点,它下面的所有数据一起。该数据可能存在简单属性,或作为复杂的对象。因此,它可以被认为是资源和带宽的浪费。在这种情况下,最好的办法是扁平化数据库尽可能。如果你是新的NoSQL数据库,这种做法被称为非规范化和通常的做法是,当涉及到火力地堡。为了更好地理解,我建议你看看:

另请注意,当你复制数据,有一两件事是必须牢记。在您添加数据以同样的方式,你需要保持它。随着换句话说,如果你想更新/ detele一个项目,你需要做的是在每一个地方,它的存在。

我还建议你看到从下面的帖子我的回答的最后一部分:

这是云计算公司的FireStore,但同样的规则也适用于火力地堡实时数据库。

但后来因为它听新条目,而不是所有的人我已经失去了我的CRUD功能。

在火力地堡的一切都是关于听众。你不能在节点内获取物体实时更新,除非你正在听他们。所以,你不能限制结果,并期望得到的对象,你是不是听更新。如果你需要得到一个节点中的所有对象的更新,你要听他们。因为这种做法是不切实际的,你可以使用非规范化如上或限制使用的查询,可以帮助你限制了数据的,你从数据库中获取的量的结果解释。关于您的解决方案,第二个是更喜欢,但你也可以考虑另一种方法,它能够在加载数据小块按照timestamp根据任何其他财产,你需要财产,或。

编辑:根据您的评论:

能否请您为每个解决方案(1.denormalization,2.my溶液)审查使用的带宽和资源,其中一个是真正的首选测试?

所有的数据建模,允许使用情况,一个应用程序需要。不幸的是,我不能这样做测试,因为这真的取决于应用程序的使用情况和数据,它所包含的量。这意味着,对于一个应用程序是什么在起作用,可能是不够的另一个应用程序。因此,测试可能并不适合每一个人正确的。非规范化过程或您的解决方案是完全依赖于你打算如何查询数据库。在上面的列表中,我添加了一个新的资源这是我的有关答复的NoSQL数据库非规范化tehnique希望它也将帮助功能参观者。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获得从火力地堡实时数据库中的信息与火力地堡管理员SDK

火力地堡实时数据库更新数据 - 的Android的Java

如何将本地数据库服务器连接到SQL Azure数据库服务器

如何阅读从不同的密钥相同的节点值火力地堡实时数据库?

如何构建一个火力地堡实时的数据库的?

如何构建写用户信息到火力地堡实时数据库?

如何处理离线时使用本地mongodb数据库并在线时同步到远程mongodb服务器的流星应用程序?

如何从巴顿的onClick监听器删除火力地堡数据库

如何使用将桥连接到本地服务器的 Django 构建数据库 API?

插入整数,如果不存在,增量如果火力地堡实时数据库的Android已经存在

如何正确地构建Java代码来命名的项下的值保存到火力地堡实时数据库

如何保存当前的日期/时间当我添加新的价值火力地堡实时数据库

从在线服务器更改为本地服务器时,数据库连接(wordpress)

将 MySQL 数据库从实时服务器 MySQL 数据恢复到本地服务器 MySQL 数据

火力地堡数据库孩子参考

如果在没有互联网连接的情况下卸载了启用gcm的android应用,如何处理在线数据库服务器中我的registraion_id的删除

Python:如何连接到服务器数据库?

如何在实时服务器上部署Spring Boot应用程序并使用mysql建立数据库连接

无效的火力地堡数据库路径:1.0。火力地堡数据库路径不能包含 '', '#', '$', '[' 或 ']'

连接数据库服务器失败。如何使用Powershell和集成的安全性连接到不在本地主机上的数据库?

如何使用API将Flutter应用程序连接到本地sql服务器数据库?

如何将外部服务器上的网站连接到本地主机上运行的 Xaamp 数据库?

如何将本地数据从服务器数据库保存到本地数据库?

如何处理仅由服务层/业务逻辑使用的数据库连接?

从本地计算机连接到GoDaddy服务器数据库

将本地机器上的 SSIS 连接到远程服务器 oracle 数据库

连接到本地数据库服务器时出错

使用php将在线mysql数据库与本地xampp服务器连接

EF Code First:无法连接到本地 SQL 服务器数据库