微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过应用程序不断更新数据库,效率不高?

如何解决通过应用程序不断更新数据库,效率不高?

我需要不断更新应用程序使用的数据库。我与数据库的唯一链接是通过应用程序。

所以问题是更新是关于所有用户数据的大量计算,可能有点繁重,我不知道在某人手机的应用程序后台运行这个是否真的最有效的方法

有没有办法在不渲染应用程序效率的情况下不断访问和更新数据库?或者也许将代码托管在另一个可以持续运行的地方?这样我就不会使用用户的电话资源来进行所有计算。

我使用 Flutter SDK 制作应用程序,并使用 Firebase 的 Cloud Firestore 作为数据库

解决方法

听起来您需要云功能。在通常有服务器来处理数据的地方,您可以创建按需运行的功能,无需管理服务器。它可以根据您的需要进行扩展,您可以按使用量付费。

我个人认为 Google Cloud Functions 似乎与 Flutter 配合得最好,但一切正常。

这些系统的主要 3 个提供商是:

Google Cloud Functions

AWS Lambda

Azure Functions

,

不是您的确切设置,但几周前我不得不解决一个非常相似的问题。

最后我们修改了架构,与您的类似:

app <==> database

数据库实际上只有三张表,但是客户要求添加几个复杂的历史统计信息。问题在于无法按照要求“实时”计算这些统计数据(我们提出了几种解决方案,每次都会要求一个新功能,该功能准确地、仔细地否定了我们的设置) .

最后,我们又添加了几个表格,其中包含“当前情况”和“最后预先计算的情况”,因此访问“LPS”的速度非常快。并且:

app <== database[LPS]
    ==> database[updates]  ===> 
        database[history]  ===>  big background app on another server 
        database[CS]       <===

该数据库被云服务器上的另一个应用程序访问,该应用程序将上次更新移动到“acquired_updates”中,然后处理这些加上历史记录和其他数据并预先计算下一个时间点。同时,用户愉快地访问了以前的版本。当 CS 完成时,我们交换表指针,以便从那一刻起访问将在 CS 上完成,释放 LPS 表——然后可以安全地清除并释放它们以成为下一个 CS。

整个计算目前大约需要 8 分钟,因此用户看到数据的平均延迟为 4 分钟。由于他们输入的数据本身是有时间偏差的,这没什么大不了的;屏幕顶部的彩色线条显示下次更新的时间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?