我需要不断更新应用程序使用的数据库。我到数据库的唯一链接是通过应用程序。
所以问题是,更新需要对所有用户的数据进行大量计算,而且可能有点重,我不知道在某人手机的应用程序后台运行这是否真的是最有效的方法
有没有一种方法可以在不影响应用程序效率的情况下不断访问和更新数据库?或者可能将代码托管在另一个可以持续运行的地方?这样我就不会使用用户的手机资源来进行所有的计算。
我正在使用Flutter SDK制作应用程序,并使用Firebase的Cloud Firestore作为数据库。
听起来您需要云功能。在通常有服务器处理数据的情况下,可以创建按需运行的功能,而无需管理服务器。它根据你的需求进行缩放,你为你的使用付费。
我个人发现,谷歌云功能似乎与Flutter配合得最好,但都可以。
这些系统的主要3个提供商是:
谷歌云功能
AWS Lambda
Azure功能
没有你的确切设置,但几周前我不得不解决一个非常类似的问题。
最后,我们修改了与您类似的架构:
app <==> database
数据库实际上只包含三个表,但客户要求添加几个复杂的历史统计数据。问题是不可能计算出这些统计数字;实时";根据要求(我们提出了几个解决方案,每次都需要一个新功能,这完全、谨慎地否定了我们的设置(。
最后,我们又增加了几张桌子,上面放着";当前状况";以及";最后预先计算的情况";,因此访问";LPS";真的很快。和:
app <== database[LPS]
==> database[updates] ===>
database[history] ===> big background app on another server
database[CS] <===
数据库也被云服务器上的另一个应用程序访问,该应用程序将最后的更新移动到";acquired_updates";,然后计算这些加上历史和其他数据,并预先计算下一个时间点。与此同时,用户愉快地访问了以前的版本。当CS完成时,我们交换表指针,这样从那一刻起,访问将在CS上完成,释放LPS表——然后可以安全地清除和释放LPS表,使其成为下一个CS。
目前整个计算大约需要八分钟,因此用户看到的数据平均延迟四分钟。由于他们输入的数据本身就是时间扭曲的,这没什么大不了的;屏幕顶部的彩色线显示下一次更新的时间。