Влияние группы объектов на транзакцию в облачном хранилище Google в режиме хранилища данных - PullRequest
0 голосов
/ 30 сентября 2019

Я новичок в Google Cloud Firestore в режиме базы данных, и у меня возник вопрос по поводу его транзакции.

Если есть два объекта, принадлежащих к одной группе объектов, выполняется ли обновление одного объекта втранзакция запрещает обновление другого объекта в другой транзакции?

Ниже приведен пример случая.

Entity A:
    Key: 
        Kind: Foo, id: 0, Parent: "P"
    Properties:
        description: "I am A."
Entity B:
    Key:
        Kind: Foo, id: 1, Parent: "P"
    Properties:
        description: "I am B"

TRANSACTION #1 BEGIN;
A.description = "I am new A";

TRANSACTION #2 BEGIN;
B.description = "I am new B";

TRANSACTION #1 COMMIT; -- *1
TRANSACTION #2 COMMIT; -- *2

Успешно ли * 1 или * 2?

Спасибо!

1 Ответ

2 голосов
/ 30 сентября 2019

Если есть два объекта, принадлежащих к одной группе объектов, запрещает ли обновление одного объекта в транзакции обновление другого объекта в другой транзакции?

Нет иречь идет не о OR, а о AND, поэтому обе транзакции будут зафиксированы. Как я понимаю из вашей схемы, вы пытаетесь использовать транзакцию для обновления двух отдельных документов, которые всегда будут работать. Он также всегда будет работать, даже если вы попытались обновить один и тот же документ, а порядок коммитов - это порядок, в котором вы вызываете commit() для объектов транзакции. Таким образом, результат ваших коммитов будет:

Entity A:
    Key: 
        Kind: Foo, id: 0, Parent: "P"
    Properties:
        description: "I am new A."
Entity B:
    Key:
        Kind: Foo, id: 1, Parent: "P"
    Properties:
        description: "I am new B"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...