Операции между группами (XG) и дальнейшее объяснение использования - PullRequest
1 голос
/ 31 октября 2011

Самая последняя версия GAE сообщает о следующих изменениях:

Datastore

Транзакции Cross Group (XG): для тех, кому нужны транзакции для сущностей в нескольких группах сущностей (и это все, верно?), XG Транзакции это просто вещь. Эта функция использует двухфазную фиксацию сделать межгрупповые записи атомарными так же, как записи в одной группе.

Я думаю, что я мог бы использовать это изменение в коде проекта, который я создал некоторое время назад, но я хотел бы получить дополнительную информацию об этом обновлении App Engine. Я не могу найти дополнительную информацию. Итак ...

Как изменились транзакции кодирования в отношении этого обновления? С точки зрения непрофессионала, как я могу реализовать межгрупповую транзакцию и есть ли еще некоторые ограничения для транзакций хранилища данных, о которых мне нужно знать?

Я знаю, что это довольно расплывчатый вопрос. Моя проблема в том, что это звучит очень полезно, но я не уверен, как правильно (и эффективно) использовать это изменение.

1 Ответ

4 голосов
/ 31 октября 2011

Вы читали какие-нибудь документы?Похоже, что вы этого не сделали (на основании того, что вы говорите: «Я не могу найти дополнительную информацию»).В этом случае просмотрите ссылки ниже и посмотрите, есть ли еще вопросы.

Концептуально выполнение транзакции между группами очень похоже на типичную транзакцию GAE, но медленнее и доступно только в HRD.Обратите внимание, что в общем случае транзакции GAE, как «обычные», так и XG, имеют разные характеристики изоляции, чем те, к которым вы привыкли приходить из базы данных SQL.Вторая ссылка обсуждает это сразу после раздела XG.

Вот выдержка из первой ссылки, показывающая, насколько простым может быть использование XG.

from google.appengine.ext import db

xg_on = db.create_transaction_options(xg=True)

def my_txn():
    x = MyModel(a=3)
    x.put()
    y = MyModel(a=7)
    y.put()

db.run_in_transaction_options(xg_on, my_txn)
...