Поддерживает ли база данных Firebase в реальном времени свойства ACID? - PullRequest
0 голосов
/ 13 мая 2019

Меня интересуют только атомарные транзакции и строгая согласованность. Поддерживает ли база данных Firebase в реальном времени и то и другое?

  • Я не вижу никаких блокировок транзакций в базе данных Firebase. Кроме того, требуется захватить элемент для поддержки атомарности. Это моя первая мысль, что, вероятно, база данных firebase не является атомарной базой данных.
  • Я также не знаю серверной архитектуры Firebase DB. Я не уверен, всегда ли он читает с главного узла или подчиненных узлов тоже. Так что не могу не гарантировать, является ли она строго последовательной или возможной последовательной.

1 Ответ

1 голос
/ 13 мая 2019

База данных реального времени поддерживает транзакции .Все клиенты должны договориться о сотрудничестве в отношении этих транзакций.База данных не поддерживает какие-либо операции, которые блокируют всю базу данных для сериализации доступа со всех клиентов.Вы должны понимать, как работают RTDB-транзакции, чтобы эффективно их использовать.Не для всех операций записи требуется транзакция, и вам нужно определить для себя, когда и как лучше всего использовать их в вашем конкретном приложении.

Поскольку база данных Realtime является базой данных, размещенной в облаке, вам не нужнознать (или заботиться) о любой конфигурации главного / подчиненного.На самом деле, вы можете просто предположить, что это работает так, как предполагает документация.Документация предполагает, что в конечном итоге будет согласованно, если клиент находится в автономном режиме во время операции записи (которая будет кэшироваться локально и синхронизироваться, когда она перейдет в оперативный режим).Это сразу же согласуется, если клиент уже подключен к сети, и клиент готов «подождать» последнего обновления, когда он прослушивает изменения данных в базе данных, когда они становятся доступными для клиента.(На самом деле нет никаких «реплик», о которых можно было бы говорить с базой данных реального времени, за исключением локальных кэшей, которые каждый клиент может поддерживать для себя для ранее прочитанных данных.)

...