Pull to refresh

Comments 7

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

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

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

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

Изначально глобалы проектировались под свой язык (ныне ObjectScript). В этом языке с ними работают также как с обычными переменными этого языка. Только крышечка перед именем переменной (^) говорит о том, что эта переменная хранится на диске (т.е. постоянно, персистентно), а не в RAM.
UFO just landed and posted this here
Sign up to leave a comment.

Articles