Я использовал базу данных Master/Slave для предыдущих проектов App Engine, но мое новое приложение определено как хранилище данных с высоким уровнем репликации (я не верю, что этот параметр можно изменить после его определения).
То, что я делал до сих пор, вызывал detachedCopy
для объекта после обновления, чтобы последующее обновление обязательно работало с недавно обновленным графом объекта.
Однако у хранилища данных с высоким уровнем репликации есть характеристика, которую я не совсем понимаю, но которая меня беспокоит, а именно «в конечном счете непротиворечивая». Что я слышал от некоторых людей Python в группе Google App Engine, так это то, что они будут выполнять обновление объекта «модель», но поскольку хранилище данных с высоким уровнем репликации не возвращает обновленный граф объекта, пока не почувствует себя так, любые последующие обновления к этому объекту теперь может не синхронизироваться с базовым хранилищем данных.
Если это так, то это как бы портит то, как я использовал detachedCopy
в Datanucleus JDO - в базе данных Master/Slave я никогда не сталкивался с ситуацией, когда отсоединенный объект не согласовывался с хранилищем данных. Стоит ли об этом беспокоиться сейчас, и есть ли способ избежать катастрофы с хранилищем данных с высоким уровнем репликации? Или я должен просто запускать все свои приложения в конфигурации Master/Slave, чтобы избежать этой проблемы, если для нее нет обходного пути JDO?