Firebase实时数据库是否支持ACID属性?

时间:2019-05-13 04:04:14

标签: firebase-realtime-database acid

我只对原子事务和强大的一致性感兴趣。 firebase实时数据库是否支持两者?

  • 我在任何地方的firebase db中都看不到任何事务锁定。并且,需要锁定项目以支持原子性。这是我的第一个想法,可能是firebase数据库不是原子数据库。
  • 我也不知道firebase db的后端功能。我不确定它是否也总是从主节点或从节点读取。因此无法确保它是强一致还是最终一致。

1 个答案:

答案 0 :(得分:1)

实时数据库支持transactions。客户必须都同意如何就这些交易进行合作。数据库不支持任何锁定整个数据库以序列化来自所有客户端的访问的操作。您需要了解RTDB事务如何工作才能有效利用它们。并非所有写入都需要事务,因此您需要自己弄清楚何时以及如何在特定应用程序中最佳使用它们。

由于Realtime Database是一个云托管数据库,因此您无需了解(或关心)任何类型的主/从配置。实际上,您可以假设它按照文档中的建议工作。该文档建议,如果客户端在写操作时处于脱机状态(它将在本地缓存并在联机时进行同步),则最终是一致的。如果客户端已经在线,则立即保持一致,并且客户端愿意“等待”最新更新,因为只要客户端可用,它就会监听数据库中不断变化的数据。 (除了每个客户端可以为自己先前读取的数据维护的本地缓存之外,实时数据库实际上没有“副本”可言。)