Еще одно замечание: в реальном коде нужно разделять почему не получился перевод: из-за отсутствия средств на счете или из-за ошибки параллельного доступа к счету. Во втором случае код должен содержать повтор операции, о чем в статье не написано. Это применимо ко всем вариантам, кроме варианта с пессимистичной блокировкой.
Это понятно, я писал реальную банковскую систему и видел внутри еще 2-3. И там все сложнее. Понятно что там есть стадийность принятия решения, есть системы где есть остаток на начало дня и все остальное досчитывается, есть системы где есть несколько остатков (прогнозный и реальный). Если добавить карты то там еще "чудесатее" - и остаток на карте и счете - несколько дней после совершения операции разный.
Но это все не важно. Я воспринимаю статью как шаблон для того что бы показать подходы борьбы с проблемами параллельного доступа к данным в транзакционных системах. И тут важно исправить ошибки, о которых я писал выше.
Последние 2 варианта содержат ошибку в реализации - фиксация транзакции на шаге 2, до update - обнуляет все усилия. Между шагом 2 и 3 могут втиснуться любые транзакции, а блокировки уже сняты.
Вот этот текст, на мой взгляд спорный:
"Особенности: зависит от реализации: при Snapshot Isolation — аналог оптимистической блокировки с версией, при блокировках — аналог пессимистической блокировки"
В стандарте SQL, для этого уровня блокировки, при совершении обновления строк измененных с момента начала транзакции должно выдать ошибку (которую приложение должно быть готово обработать), в той же версионной СУБД PostgreSQL возникает по факту ожидание снятие блокировки изменённой другой транзакцией строки (вдруг там rollback и все же можно), что приводит нас что даже в версионниках будет ожидание как в пессимистическом варианте. Тут конечно автор может предположить о существовании другой версионной СУБД где такого ожидания не происходит, но я о такой не знаю (в другом популярном версионнике Oracle - нет Repeatable Read). В целом такие истории, наверное, лучше рассматривать в привязке к СУБД.
Да что вы заладили про "в России редкость". Я уже писал толковый разработчик, не тимлид в России зарабатывет 250-300к. Тимлид, сеньйор, архитектор умножайте на 2.
Причем, после ковида, уже регион не важен, я как то собеседовал парня из Якутии и зп ожидания были такие же. В итоге он выбрал другую компанию.
Да наверное, сельский житель зарабатывает меньше в разы, но так и в любой другой стране.
Ну тут же все от тебя самого зависит, учился, выбрал востребванную професию, так и зарабатывать будешь. А не учился, так ворочай...
Сейчас опять минусов напихают, но я правда так считаю. Да есть врачи, педагогии которым платят мало, и это не правильно. Хотя у меня приятель толковый хирург получает больше меня.
В России ни в чем не возможно быть уверенным, но сын окончил МГУ, успешно работает, я помог ему закрыть ипотеку. Дальше сам пускай, куда уж больше...
Я баланс нашел, работаю 8 часов, денег хватает, есть время на хобби/друзья/каждодневный гейминг. Никакой иллюзии... Вопрос ценностей и приоритетов.
Вот, честно давайте закончим, Вы пытаетесь меня на свои ценности натянуть, а я Вас. Изначально целеполагание разное, мне Ваши ценности не интересны, наверное и Вам мои.
А для меня глупо пытаться заработать все деньги мира, не получая от мира удовольствия: концерты, театр, общение с друзьями и др. Это не значит что я не люблю свою работу, но это просто треть моей жизни не больше и не меньше. Для меня баланс важнее. Вот честно сильно в сторону ушли, давайте закончим. Сильно оффтопик.
С определенного уровня ЗП, начинает играть роль не только она. Например, насколько работа интересная, чему новому на ней научишься и наличие постоянных переработок тоже.
Ни одна ЗП в мире не компенсирует мне время проведенное с семьей или друзьями и занятия другими любимыми вещами.
Понятно, что когда семье нечего есть, я буду вкалывать 25 часов в сутки. Но если семья накормлена, ипотека уплачена и денег на хобби хватает, любой работодатель с постоянными переработками идет подальше не взирая на ЗП.
Творчество и инициатива - разные вещи. Тут конечно вопрос терминологии.
В моем понимании у рядового программиста в проекте где участвует больше 3-5 человек творчество минимально. Он конечно может и должен предлагать идеи (инициатива), но финальную схему решения определяет тимлид/архитектор, а остальные должны ее закодировать. При этом он должен быть в рамках стиля кодирования, согласованных фреймворков и алгоритмов. Где здесь творчество?
Конечно бывают задачи, которые хорошо делятся на на части и там 1-2 человека на задачу, тут рамки творчества расширяются. Но в целом в кровавом энтерпрайзе такое редко. Возможность творить - это скорее АСУ ТП или вендоры системного софта. Но их крайне не много.
Ну и да, у меня наверное искажение про прикладное программирование.
Тогда все понятно, есть все же разница в переработках наемного рабочего о чем статья и работе хозяина бизнеса.
Я иногда для себя программирую свои пет проекты, но не отношу это к работе, или переработкам, а считаю хобби. Все что я писал, строго про наемный труд.
Я считаю, что промышленная разработка ПО не про творчество, а про планомерную инжененую работу, само кодирование вообще среднетехническое образование.
Мне в команде не нуже творец, мне нужен человек планомерно дающий результат, я безусловно за более-менее свободный график работы или удаленку, но я считаю что программист должен быть готовым работать каждый ден,ь а для этого он не должен быть задрочен переработками, выспавшийся, и вовремя приходящий на синки.
Я просто не понимаю, зачем мне 2 часа в понедельник, я настроился работать в понедельник. А тут 2 часа... Поспать больше? И самое главное у меня обычно планы на выходные... зачем их прерывать? Я понимаю, что мне в понедельник скажем нужно куда то сходить, тогда в субботу нормально сделать и выделить время в понедельник.
Возможно это профдеформация я архитектор, и с утра у меня будет в какая-нибудь встреча, а вечером еще какая то активность... и посередине дня мне эти 2 часа не нужны, да и могут их тупо занять встречей... Если Вы фрилансер и не зависите от команды и что самое главное команда не зависит от Вас, то вольны планировать время как удобнее...
А что делать, если озарения нет? Стоим курим? То что Вы пишите, это какой то бред, ну натворил ты за дофига денег по 12 часов в день пару лет. А потом что? Сможете продуктивно работать так лет 20-30? И задачу решать надо когда надо, а не когда будет творческое настроение и озарение. Разработчик должен быть выспавшийся и готовый к работе в рабочее время.
P.S. "Творцы нам тут нафиг не нужны ..." (С) Пелевин ;-)
У меня с утра самые свежие мозги, поэтому я обычно занимаюсь с утра большими и творческими задачами. А на мелочь и рутину оставляю 2-3 часа вечером, когда мозги уже не нужны.
Если начинать с мелочи и рутины, то она пожрет все. Тут главное, для себя определится, и вовремя остановится с большой задачей, когда наступает время рутины.
Но все конечно зависит от рода деятельности. Если ямы копать, то пофиг. А если программировать, то нет.
Ну и любая попытка планировать вызывает у меня уважение...
Вам платят за работу, если за субботу не платят, Вы не работаете
Вам платят за работу, если за будние платят, Вы работаете, не халявите
Начальник увидел, и сделал выводы, что Вы можете работать в субботу и в следующий раз придет, а что такого
Оно еще раз, я понимаю интересно, сам такой, но на перспективе 10-20 лет, эти переработки это взаймы у себя будущего, и поверьте возврат этого долга ой какой страшный.
Еще одно замечание: в реальном коде нужно разделять почему не получился перевод: из-за отсутствия средств на счете или из-за ошибки параллельного доступа к счету. Во втором случае код должен содержать повтор операции, о чем в статье не написано. Это применимо ко всем вариантам, кроме варианта с пессимистичной блокировкой.
Это понятно, я писал реальную банковскую систему и видел внутри еще 2-3. И там все сложнее. Понятно что там есть стадийность принятия решения, есть системы где есть остаток на начало дня и все остальное досчитывается, есть системы где есть несколько остатков (прогнозный и реальный). Если добавить карты то там еще "чудесатее" - и остаток на карте и счете - несколько дней после совершения операции разный.
Но это все не важно. Я воспринимаю статью как шаблон для того что бы показать подходы борьбы с проблемами параллельного доступа к данным в транзакционных системах. И тут важно исправить ошибки, о которых я писал выше.
Последние 2 варианта содержат ошибку в реализации - фиксация транзакции на шаге 2, до update - обнуляет все усилия. Между шагом 2 и 3 могут втиснуться любые транзакции, а блокировки уже сняты.
Вот этот текст, на мой взгляд спорный:
"Особенности: зависит от реализации: при Snapshot Isolation — аналог оптимистической блокировки с версией, при блокировках — аналог пессимистической блокировки"
В стандарте SQL, для этого уровня блокировки, при совершении обновления строк измененных с момента начала транзакции должно выдать ошибку (которую приложение должно быть готово обработать), в той же версионной СУБД PostgreSQL возникает по факту ожидание снятие блокировки изменённой другой транзакцией строки (вдруг там rollback и все же можно), что приводит нас что даже в версионниках будет ожидание как в пессимистическом варианте. Тут конечно автор может предположить о существовании другой версионной СУБД где такого ожидания не происходит, но я о такой не знаю (в другом популярном версионнике Oracle - нет Repeatable Read). В целом такие истории, наверное, лучше рассматривать в привязке к СУБД.
Да что вы заладили про "в России редкость". Я уже писал толковый разработчик, не тимлид в России зарабатывет 250-300к. Тимлид, сеньйор, архитектор умножайте на 2.
Причем, после ковида, уже регион не важен, я как то собеседовал парня из Якутии и зп ожидания были такие же. В итоге он выбрал другую компанию.
Да наверное, сельский житель зарабатывает меньше в разы, но так и в любой другой стране.
Ну тут же все от тебя самого зависит, учился, выбрал востребванную професию, так и зарабатывать будешь. А не учился, так ворочай...
Сейчас опять минусов напихают, но я правда так считаю. Да есть врачи, педагогии которым платят мало, и это не правильно. Хотя у меня приятель толковый хирург получает больше меня.
В России ни в чем не возможно быть уверенным, но сын окончил МГУ, успешно работает, я помог ему закрыть ипотеку. Дальше сам пускай, куда уж больше...
Я баланс нашел, работаю 8 часов, денег хватает, есть время на хобби/друзья/каждодневный гейминг. Никакой иллюзии... Вопрос ценностей и приоритетов.
Вот, честно давайте закончим, Вы пытаетесь меня на свои ценности натянуть, а я Вас. Изначально целеполагание разное, мне Ваши ценности не интересны, наверное и Вам мои.
Ну я немного занимался АСУ ТП в 90е, там все же есть задачи на оптимизацию, как затолкать программу в мизерный объем...
Возможно уже не актуально ...
А для меня глупо пытаться заработать все деньги мира, не получая от мира удовольствия: концерты, театр, общение с друзьями и др.
Это не значит что я не люблю свою работу, но это просто треть моей жизни не больше и не меньше. Для меня баланс важнее.
Вот честно сильно в сторону ушли, давайте закончим. Сильно оффтопик.
P.S. я базу закрыл
Ну тут главное, что Вы выводы сделали правильные.
Я бы понимал, что если бы Вы были хозяином и получили прибыль от контракта, а так вас просто грамотно поимели за мотивацию.
Как было в старом анекдоте:
- Бабушка, а что такое любовь?
- Это русские придумали, чтобы не платить...
А зачем в таком аду работать? Платят больше? Другой работы не найти? Удаленки нет?
Какая мотивация?
С определенного уровня ЗП, начинает играть роль не только она. Например, насколько работа интересная, чему новому на ней научишься и наличие постоянных переработок тоже.
Ни одна ЗП в мире не компенсирует мне время проведенное с семьей или друзьями и занятия другими любимыми вещами.
Понятно, что когда семье нечего есть, я буду вкалывать 25 часов в сутки. Но если семья накормлена, ипотека уплачена и денег на хобби хватает, любой работодатель с постоянными переработками идет подальше не взирая на ЗП.
Творчество и инициатива - разные вещи. Тут конечно вопрос терминологии.
В моем понимании у рядового программиста в проекте где участвует больше 3-5 человек творчество минимально. Он конечно может и должен предлагать идеи (инициатива), но финальную схему решения определяет тимлид/архитектор, а остальные должны ее закодировать. При этом он должен быть в рамках стиля кодирования, согласованных фреймворков и алгоритмов. Где здесь творчество?
Конечно бывают задачи, которые хорошо делятся на на части и там 1-2 человека на задачу, тут рамки творчества расширяются. Но в целом в кровавом энтерпрайзе такое редко.
Возможность творить - это скорее АСУ ТП или вендоры системного софта. Но их крайне не много.
Ну и да, у меня наверное искажение про прикладное программирование.
Тогда все понятно, есть все же разница в переработках наемного рабочего о чем статья и работе хозяина бизнеса.
Я иногда для себя программирую свои пет проекты, но не отношу это к работе, или переработкам, а считаю хобби. Все что я писал, строго про наемный труд.
Я считаю, что промышленная разработка ПО не про творчество, а про планомерную инжененую работу, само кодирование вообще среднетехническое образование.
Мне в команде не нуже творец, мне нужен человек планомерно дающий результат, я безусловно за более-менее свободный график работы или удаленку, но я считаю что программист должен быть готовым работать каждый ден,ь а для этого он не должен быть задрочен переработками, выспавшийся, и вовремя приходящий на синки.
Я говорю о том что знаю...
Погодите вы пишите про разработчиков или "неайтишечку"?
В России разработчик, не тимлид, 250-300к, если хороший, больше...
Причем ковид стер города, и теперь не важно где, удаленка работает ...
Про неайтишку не знаю...
На себя это контрактная разработка в команде или фриланс?
Творчество то в чем? Изобретаете новые алгоритмы? Придумываете новые фреймворки?
Я просто не понимаю, зачем мне 2 часа в понедельник, я настроился работать в понедельник. А тут 2 часа... Поспать больше? И самое главное у меня обычно планы на выходные... зачем их прерывать?
Я понимаю, что мне в понедельник скажем нужно куда то сходить, тогда в субботу нормально сделать и выделить время в понедельник.
Возможно это профдеформация я архитектор, и с утра у меня будет в какая-нибудь встреча, а вечером еще какая то активность... и посередине дня мне эти 2 часа не нужны, да и могут их тупо занять встречей... Если Вы фрилансер и не зависите от команды и что самое главное команда не зависит от Вас, то вольны планировать время как удобнее...
А что делать, если озарения нет? Стоим курим?
То что Вы пишите, это какой то бред, ну натворил ты за дофига денег по 12 часов в день пару лет. А потом что? Сможете продуктивно работать так лет 20-30? И задачу решать надо когда надо, а не когда будет творческое настроение и озарение. Разработчик должен быть выспавшийся и готовый к работе в рабочее время.
P.S. "Творцы нам тут нафиг не нужны ..." (С) Пелевин ;-)
Ну это зависит от интересности досуга ;-)
Нее, так тоже не работает.
У меня с утра самые свежие мозги, поэтому я обычно занимаюсь с утра большими и творческими задачами. А на мелочь и рутину оставляю 2-3 часа вечером, когда мозги уже не нужны.
Если начинать с мелочи и рутины, то она пожрет все. Тут главное, для себя определится, и вовремя остановится с большой задачей, когда наступает время рутины.
Но все конечно зависит от рода деятельности. Если ямы копать, то пофиг. А если программировать, то нет.
Ну и любая попытка планировать вызывает у меня уважение...
Тут сразу три вещи:
Вам платят за работу, если за субботу не платят, Вы не работаете
Вам платят за работу, если за будние платят, Вы работаете, не халявите
Начальник увидел, и сделал выводы, что Вы можете работать в субботу и в следующий раз придет, а что такого
Оно еще раз, я понимаю интересно, сам такой, но на перспективе 10-20 лет, эти переработки это взаймы у себя будущего, и поверьте возврат этого долга ой какой страшный.