什么时候应该使用Firebase交易

时间:2016-06-29 22:56:42

标签: firebase firebase-realtime-database

我知道Firebase事务会根据旧值和新值

启用某些值的原子更新

但鉴于Firebase是一个实时数据库,我认为,必须谨慎使用交易而不是实时功能

这是一个例子:

  1. 据我所知,如果您对某个值执行某些数学运算(添加'喜欢&等等),则使用交易是有意义的

  2. 我不明白在以下用例中使用事务是否有意义:假设文本字段可以由任意数量的用户更新,并且我们对所有更新感兴趣,因为它们实时发生。 firebase建议我们在这种情况下使用交易吗?或者是最终的持续运作'在值上发生,仅限于单个“持续”操作'每个时间戳Firebase服务器时钟的粒度?

  3. 此外,是否可以保证事件将按照最终值的持续顺序传递?

1 个答案:

答案 0 :(得分:17)

每当您在数据库上使用事务时,您都会牺牲一些可伸缩性,以便获得更强的数据一致性保证。 Firebase数据库上的事务没有什么不同,除非开发人员倾向于在更高并发的情况下使用Firebase。

对于任何事务系统:保持系统可扩展性的关键是最小化竞争更新相同数据的客户端数量。对于Firebase,您可以通过在JSON树中尽可能低地运行事务来实现此目的。即计数器是在交易下可以很好地运作的一个例子。

对于较大的数据,例如文本编辑示例,使用事务将无法很好地扩展。对于这种用例,最好找到一种完全避免冲突的方法。通常,这归结为存储每个用户正在进行的增量,而不是存储更新的状态。一个很好的例子是Firepad example,它使用操作转换在Firebase数据库之上创建高度并发的协作编辑器。