Классика баз данных - статьи

       

Полный ответ на этот вопрос


Полный ответ на этот вопрос содержится в [13] и [14]. При небольшом упрощении основная идея состоит в том, что (a) вычисляются выражения из правых частей индивидуальных присваиваний (в произвольном порядке, поскольку порядок не является существенным), а затем (b) выполняются присваивания переменным из левых частей в том порядке, в каком они написаны.

  • Ваш алгоритм перезаписи для устранения нескольких ссылок на одну и ту же переменную порождает больше проблем, чем разрешает.

    Работы [13] и [14] действительно включают некоторый «алгоритм перезаписи» для объединения – не устранения! – «нескольких ссылок на одну и ту же переменную». Если этот алгоритм действительно порождает «больше проблем, чем разрешает», было бы полезно привести конкретные черты этих проблем.

  • В лучшем случае, можно было бы предположить, что между индивидуальными присваиваниями отсутствуют побочные эффекты, так что порядок не имеет значения.

    Фраза «можно было бы предположить» здесь, по-видимому, относится к алгоритму перезаписи. В этом алгоритме, конечно, не предполагается, что «между индивидуальными присваиваниями отсутствуют побочные эффекты». На самом деле, все наоборот: основная суть алгоритма состоит в том, чтобы точно соблюсти действие побочных эффектов, а не в том, чтобы их утратить.

  • Если принять это предположение, то, очевидно, будут существовать некоторые упорядоченные множества присваиваний (обычно оформляемые в виде транзакций), которые невозможно переписать в виде множественного присваивания, поскольку это приведет к результату, отличному от ожидаемого …

    Я не могу слегка не упрекнуть Критика B за его использование фразы «упорядоченные множества» … Однако более важно то, что мы хотели бы увидеть пример последовательности присваиваний, которую было бы нельзя переписать в виде множественного присваивания. Очевидно, что можно было бы попытаться написать что-то вроде следующего:

    X := x ;

    Y := f(X) ;

    Но следующее множественное присваивание приведет к тому же ожидаемому результату:

    X := x ,

    Y := f(x) ;

  • Мне нравится идея множественного присваивания, но не за счет отказа от транзакций и, следовательно, не за счет отказа от отложенной проверки ограничений.

    Нам тоже нравится множественное присваивание; на самом деле, мы считаем эту операцию абсолютно обязательной. Однако обратите внимание, что мы не предлагаем ее в качестве замены транзакций. В [1] Хью говорит следующее (и я согласен с этими замечаниями):

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


    Содержание  Назад  Вперед