logo Информатика с Натальей Массальской

Детективная история про исчезающие оценки и транзакции

Одна ‎из‏ ‎самых ‎бесячих ‎особенностей ‎нынешнего ‎электронного‏ ‎журнала ‎—‏ ‎это‏ ‎исчезающие ‎оценки. ‎Ставишь‏ ‎оценки ‎за‏ ‎карусель ‎или ‎практикум ‎«в‏ ‎столбик»,‏ ‎штук ‎семь‏ ‎поставил, ‎вдруг‏ ‎бац ‎— ‎три ‎первые ‎пропали.‏ ‎Начинаешь‏ ‎ставить ‎медленно‏ ‎и ‎осмысленно:‏ ‎воткнул ‎→ ‎20 ‎секунд ‎→‏ ‎исчезло.‏ ‎Воткнул‏ ‎→ ‎15‏ ‎секунд ‎→‏ ‎опять ‎пропало.‏ ‎Тык-тык-тык‏ ‎штук ‎10‏ ‎в ‎быстром ‎темпе ‎→ ‎через‏ ‎полминуты ‎половины‏ ‎из‏ ‎них ‎нет.

🤪 Полный ‎отвал‏ ‎башки ‎—‏ ‎это ‎когда ‎часа ‎через‏ ‎два‏ ‎некоторые ‎из‏ ‎них ‎возвращаются.‏ ‎Иногда ‎в ‎двойном ‎количестве.

Бывает, ‎при‏ ‎этом‏ ‎выскакивает ‎замысловатое‏ ‎сообщение ‎об‏ ‎ошибке ‎— ‎вроде ‎того, ‎что‏ ‎на‏ ‎скриншоте,‏ ‎хотя ‎и‏ ‎не ‎конкретно‏ ‎оно. ‎Но‏ ‎чаще‏ ‎оценки ‎исчезают‏ ‎молча.

Что ‎за ‎чертовщина? ‎Мне ‎кажется,‏ ‎я ‎знаю.

Чтобы‏ ‎разобраться‏ ‎в ‎проблеме, ‎надо‏ ‎понять, ‎как‏ ‎работают ‎транзакции.

🎯 Транзакция ‎— это ‎цельный‏ ‎набор‏ ‎операций ‎работы‏ ‎с ‎данными.

Транзакция‏ ‎либо ‎обязана ‎выполниться ‎целиком ‎и‏ ‎успешно‏ ‎(при ‎этом‏ ‎целостность ‎данных‏ ‎не ‎нарушается, ‎и ‎наша ‎транзакция‏ ‎не‏ ‎зависит‏ ‎от ‎других),‏ ‎либо ‎не‏ ‎выполниться ‎вообще‏ ‎—‏ ‎и ‎данные‏ ‎никак ‎не ‎изменятся.

Транзакции ‎возникают, ‎например,‏ ‎при ‎совместной‏ ‎работе‏ ‎над ‎документами. ‎Если‏ ‎два ‎пользователя‏ ‎по ‎сети ‎пытаются ‎сохранить‏ ‎изменения‏ ‎одной ‎и‏ ‎той ‎же‏ ‎фразы, ‎транзакция ‎либо ‎совместит ‎эти‏ ‎изменения,‏ ‎либо ‎откатит‏ ‎изменения ‎с‏ ‎обеих ‎сторон, ‎либо ‎примет ‎более‏ ‎ранние‏ ‎или‏ ‎более ‎поздние‏ ‎изменения. ‎Что‏ ‎именно ‎произойдёт‏ ‎и‏ ‎как ‎—‏ ‎зависит ‎от ‎реализации ‎программы.

Ещё ‎чаще‏ ‎понятие ‎транзакции‏ ‎возникает‏ ‎в ‎финансовой ‎области.

НАПРИМЕР,

Вася‏ ‎перечисляет ‎Пете‏ ‎100 ‎р. ‎с ‎карты‏ ‎на‏ ‎карту. ‎Возможно,‏ ‎это ‎осуществляется‏ ‎такой ‎последовательностью ‎операций:

  1. баланс ‎Васи ‎уменьшается‏ ‎на‏ ‎100 ‎р.
  2. баланс‏ ‎Васи ‎сохраняется
  3. баланс‏ ‎Пети ‎увеличивается ‎на ‎100 ‎р.
  4. баланс‏ ‎Пети‏ ‎сохраняется

Если‏ ‎между ‎пунктами‏ ‎2 ‎и‏ ‎3 ‎произойдёт‏ ‎сбой,‏ ‎может ‎оказаться,‏ ‎что ‎Вася ‎100 ‎р. ‎потерял,‏ ‎а ‎Петя‏ ‎не‏ ‎получил. ‎Чтобы ‎этого‏ ‎не ‎произошло,‏ ‎вся ‎последовательность ‎операций ‎представляет‏ ‎собой‏ ‎транзакцию, ‎и‏ ‎если ‎что-то‏ ‎пошло ‎не ‎так, ‎откатывается ‎целиком.

Как‏ ‎мы‏ ‎переносим ‎файл‏ ‎из ‎одной‏ ‎папки ‎в ‎другую? ‎Точно ‎так‏ ‎же:‏ ‎сначала‏ ‎файл ‎копируется‏ ‎по ‎новому‏ ‎адресу ‎и‏ ‎только‏ ‎потом ‎стирается‏ ‎на ‎старом. ‎Если ‎скопироваться ‎он‏ ‎не ‎смог‏ ‎или‏ ‎мы ‎прервали ‎операцию‏ ‎— ‎файл‏ ‎остаётся ‎по ‎старому ‎адресу.

Получается,‏ ‎это‏ ‎тоже ‎транзакция.

Что‏ ‎же ‎происходит‏ ‎с ‎оценками ‎в ‎электронном ‎журнале?

У‏ ‎меня,‏ ‎ясное ‎дело,‏ ‎нет ‎доступа‏ ‎к ‎начинке ‎журнала, ‎но, ‎судя‏ ‎по‏ ‎симптомам,‏ ‎проблема ‎в‏ ‎том, ‎что‏ ‎транзакции ‎не‏ ‎работают.

Порядок‏ ‎операций:

  1. Я ‎ставлю‏ ‎оценку ‎и ‎сохраняю ‎её ‎на‏ ‎своём ‎рабочем‏ ‎компьютере‏ ‎(на ‎стороне ‎«клиента»).
  2. Оценка‏ ‎отправляется ‎на‏ ‎сервер ‎— ‎у ‎нас‏ ‎же‏ ‎централизованная ‎система,‏ ‎все ‎данные‏ ‎всех ‎журналов ‎хранятся ‎в ‎базе‏ ‎на‏ ‎сервере.
  3. При ‎отправке‏ ‎моя ‎оценка‏ ‎стирается: ‎примерно ‎как ‎если ‎бы‏ ‎перенос‏ ‎файла‏ ‎происходил ‎наоборот:‏ ‎сначала ‎удалили‏ ‎на ‎старом‏ ‎месте,‏ ‎потом ‎записали‏ ‎на ‎новое.
  4. На ‎сервере ‎оценка ‎почему-то‏ ‎«не ‎приживается».‏ ‎Например,‏ ‎слишком ‎много ‎одновременных‏ ‎запросов. ‎Все‏ ‎хотят ‎ставить ‎оценки ‎в‏ ‎учебное‏ ‎время, ‎странно,‏ ‎правда? ‎Особенно‏ ‎если ‎учесть, ‎что ‎строго ‎запрещено‏ ‎опаздывать‏ ‎с ‎выставлением‏ ‎😉
  5. Сервер ‎действует‏ ‎по ‎принципу: ‎я ‎не ‎принял,‏ ‎ну‏ ‎и‏ ‎ладно. ‎Это‏ ‎не ‎мои‏ ‎проблемы.

В ‎результате‏ ‎наши‏ ‎100 ‎рублей,‏ ‎верней, ‎наша ‎пятёрка ‎и ‎в‏ ‎локальном ‎журнале‏ ‎исчезла,‏ ‎и ‎до ‎базы‏ ‎данных ‎на‏ ‎сервере ‎не ‎добралась.

Что ‎с‏ ‎этим‏ ‎делать ‎бедному‏ ‎преподу?

В ‎очередной‏ ‎раз ‎писать ‎в ‎техподдержку ‎и‏ ‎через‏ ‎две ‎недели‏ ‎получать ‎очередную‏ ‎отписку, ‎увы. ‎И ‎снова ‎мучительно‏ ‎«протыкивать»‏ ‎колонку‏ ‎оценок, ‎внимательно‏ ‎следя, ‎все‏ ‎ли ‎они‏ ‎«укоренились».

А‏ ‎вы ‎—‏ ‎не ‎будьте ‎такими ‎разрабами, ‎как‏ ‎разрабы ‎электронного‏ ‎журнала.‏ ‎Используйте ‎транзакции ‎и‏ ‎не ‎теряйте‏ ‎данные! ‎🤝


Предыдущий Следующий
Все посты проекта
0 комментариев

Подарить подписку

Будет создан код, который позволит адресату получить бесплатный для него доступ на определённый уровень подписки.

Оплата за этого пользователя будет списываться с вашей карты вплоть до отмены подписки. Код может быть показан на экране или отправлен по почте вместе с инструкцией.

Будет создан код, который позволит адресату получить сумму на баланс.

Разово будет списана указанная сумма и зачислена на баланс пользователя, воспользовавшегося данным промокодом.

Добавить карту
0/2048