java - Firebase 并发锁定/解锁写访问多个设备

标签 java android firebase

我正在寻找一些关于如何在多个设备的 android 并发访问中锁定/解锁 firebase 写访问的提示

我希望能够做这样的事情:

  • 获得写入权限并锁定
  • 可运行的进程 -> 从 firebase 获取一些数据,对其进行处理
  • runnable process -> 从之前的runnable 中取回数据,将一些数据写入firebase
  • 可运行进程 -> 从另一个可运行进程取回数据,获取另一个数据,处理它们
  • 可运行的进程 -> 写入一些数据
  • 某某某某
  • 任务执行所有同步runnable,将一堆数据写入firebase
  • 解锁写入权限

我的第一个想法是添加超时。如果您在提供允许的数量之前未解锁以确保没有设备可以阻止访问,则锁定写入可能会单独过期。

我阅读了有关 Transaction 的内容,但我认为它不适合我的需求。因为我在处理时需要访问多个路径。

任何人都知道如何实现设备在能够写入之前应该获得的锁定/解锁写入访问权限?

谢谢你的想法。

PS:我的可运行同步任务已经完美地完成了工作,我只是在寻找如何锁定和解锁 firebase 的写访问权限,以确保在我处理一些数据时没有其他设备可以破坏数据。

最佳答案

Realtime Database 和 Cloud Firestore 都没有一种机制可以让您在处理数据库时强制锁定整个数据库,甚至只是锁定其中的一部分任意时间。像这样的东西在现实世界中根本无法扩展。

这两个数据库都提供了事务机制,这是唯一以原子方式和一致地执行读写的方法。如果您对某些其他形式的锁定有绝对的要求,那么云托管数据库可能不是您的最佳选择。要么,要么您通过您控制的单个中间件汇集所有访问权限,这也不会很好地扩展。

关于java - Firebase 并发锁定/解锁写访问多个设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157986/

相关文章:

java - java中如何查找并获取字符串内的多个子字符串,以及是否需要正则表达式

java - 深入研究 Android JSON 数据数组

ios - iOS 共享扩展上的 Firebase Analytics

.net - 如何处理服务器端的多个 firebase 项目?

java - Camel "activemq component"的性能问题

java - 如何创建一个逐步返回输出的网络脚本?

java - (安卓工作室) E/Surface : getSlotFromBufferLocked: unknown buffer: 0xae6b28f0

java - 在Netbean中使用unirest发送短信

java - Android:检查Firebase数据库中是否存在数据列表

java - 预期为 BEGIN_ARRAY,但使用 GSON 时为 BEGIN_OBJECT