据我所知,火力地堡交易使一些价值的原子更新,赋予其旧值和新值什么时候应该使用火力地堡交易
但考虑到火力地堡是一个实时的数据库,我认为,一个只能使用交易谨慎,而不是在“实时功能”
这里有一个例子:
我明白,如果你在一个值进行一些数学运算(添加“喜欢”或同等学历),这是有道理的使用交易
我不明白在以下用例中使用事务是否合理:假设任何数量的用户都可以更新文本字段,并且我们对所有更新都感兴趣,因为它们都是实时发生的。 Firebase建议我们在这种情况下使用交易吗?或者,最终的“持续运营”发生在该值上,仅限于Firebase服务器时钟的每个时间戳粒度的单个“持续运营”?
此外,它是保证事件将按最终值的持续顺序传递?
是的我不打算使用交易。这里是一个例子。假设一个“评论”系统。我可以继续使用唯一的按键+某些属性将所有评论存储在“评论”根节点中。这根可以增长很大,如果我想要得到一个排序列表,我会发送一个查询与一些排序参数(时间戳)。如果我有另一个节点:CommentLatest,它存储最新评论的唯一按键。因此,每个客户端都执行两次写入操作:使用唯一的按键写入“Comment”树,并使用刚刚使用的latest = unique push key更新commentlatest树。这是否规模? – wrecktangle
(续)如果有多个客户端更新commentLatest节点,在CommentLatest节点上是否有可能发生损坏? – wrecktangle
如果您担心更新'latestCommentId'值的争用,您可能会过早进行优化。通过将时间戳记作为'latestCommentId'的值并且然后拒绝时间戳比当前时间戳更早,可以防止用较早的日期覆盖。但请注意,我们从一个令人难以置信的广泛问题转到了一个非常详细的用例。您可能首先需要花更多时间处理Firebase交易,然后使用代码和安全规则提出更具体的问题。 –