Как стать автором
Обновить

Комментарии 7

Странно, я давным-давно читал что в Cache транзакции работают как раз магическим образом: если база обнаружила конфликт в двух транзакциях то она в одной из транзакций производит отмотку точки исполнения кода вместе с состоянием всех локальных переменных задания к месту вызова команды tstart, таким образом если процесс ничего не читал и не писал во вне он даже и не замечал что его откатили к старту транзакции. Получается такая прозрачная конкуренция, прикладник даже не задумывается о таких штуках а в итоге конфликты все разруливаются на низком уровне. Или это в GT.M только сделали, как-нибудь погуглю, интересно стало.
Да, реализация транзакций в разных БД на глобалах сильно отличается. Может быть позже напишу про GT.M.
Ну значит так и есть. Ну дак эта вот реализация, где происходит откат — это настоящая, крутая техномагия. В этом огромная сила технологии MUMPS. Вы специально такое на конец оставили?
У меня есть свой план и порядок написания статей. Я не хотел бы забегать вперёд и спойлерить, но у каждого решения есть свои плюсы и минусы. Мне ещё нужно время, чтобы понять какие.

В этой статье я не исследовал аспекты отката ошибочных транзакций, только уровень изолированности.

Лично для меня двухуровневая блокировка — тоже техномагия.

Более того в IRIS есть такие хитрые типы блокировок, которые как обезьянки умеют подниматься по деревьям данных — escalating. С ними ещё не разобрался.
НЛО прилетело и опубликовало эту надпись здесь
Языка запросов (типа SQL) для глобалов нет. Хотя SQL может быть применён, если на глобалах эмулируются таблицы.

Изначально глобалы проектировались под свой язык (ныне ObjectScript). В этом языке с ними работают также как с обычными переменными этого языка. Только крышечка перед именем переменной (^) говорит о том, что эта переменная хранится на диске (т.е. постоянно, персистентно), а не в RAM.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории