Я разрабатываю свое первое веб-приложение с помощью Google App Engine и Datastore. Процесс разработки был довольно простым, но у меня есть огромная дилемма. Я хочу создать «похожий» механизм для статуса пользователя (например, нравится «Facebook» Facebook).Обновление сущности параллелизма в хранилище данных GAE
Итак, я создал объект «Статус», обладающий свойством «likeIndex» (просто хочу суммировать общее количество понравившихся). Теперь я хочу убедиться, что, когда несколько пользователей одновременно дают статус, у меня не будет проблемы с параллелизмом.
Has я узнал из моего короткого опыта с Datastore поток выглядит следующим образом:
- (по вызову функции обновления) ПользовательЫ и USERB примет ту же версию объекта statusA с likeIndex = 0 - звонки произошли в в то же время.
- пользовательA будет делать likeIndex ++;
- пользовательА обновит statusA с помощью какIndex = 1.
- пользователь будет делать likeIndex ++;
- userB обновит статусA likeIndex = 1.
Вместо того, чтобы иметь в объекте statusAat объекта с asIndes = 2, у меня есть объект с likeIndex = 1. Как я могу обработать процесс обновления, чтобы избежать проблемы параллелизма. Это звучит простая и распространенная проблема, поэтому я удивлен, что мне сложно найти решение в Интернете. (я работаю с JPA)
Спасибо!
Я наткнулся на это решение, но я хотел бы пойти с более традиционными сделок один. Вы знаете руководство для транзакций с использованием объекта EntityManager? Большое спасибо! – Ohadza