Как я могу проверить, является ли SQL-запрос детерминированным? - PullRequest
2 голосов
/ 08 июля 2010

Под детерминистом я подразумеваю, что запрос всегда будет возвращать точно один и тот же набор результатов.Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 08 июля 2010

Запросы обычно не считаются детерминированными, поскольку базовые таблицы могут меняться между вызовами. Детерминизм обычно вступает в игру только тогда, когда речь идет о UDF.

0 голосов
/ 13 июля 2010

Единственный известный мне способ создания детерминированных данных в базе данных - это создать моментальный снимок необходимых данных в соответствующий момент времени. Обычно данные преобразуются и загружаются в хранилище данных вместе с отметкой времени для архивируемых строк для последующего извлечения. Для хранилища данных могут выполняться запросы аудита и другие виды отчетов, и результаты являются «детерминированными» для любого заданного периода времени, но не для разных периодов времени.

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

...