Таблица SQL Server, которая сохраняет только различия - PullRequest
0 голосов
/ 01 ноября 2018

У меня небольшая задача создать таблицу регистрации в SQL Server, которая сохраняет только различия, потому что я собираю данные потока журналов каждую секунду, и в большинстве случаев разница будет довольно небольшой. [DateIndex] и изменить значение в 1 столбце.

Пример:

DateIndex C1 C2  C3 C4 C5 C6 C7
---------------------------------
1         1   2  3  4  5  6  7.0
2         1   2  3  0  5  6  7.1
3         1   0  3  4  5  6  7.3

Есть ли способ иметь таблицу, которая записывает только разницу, а не целую строку?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

В зависимости от ваших требований и версии SQL Server это звучит как задание для Сбор данных изменений (CDC), доступный в SQL Server 2008 и более поздних версиях, или Временные таблицы , доступно в SQL Server 2016 и выше.

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

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

Я бы посмотрел на оба вопроса, прежде чем идти по пути решения проблемы.

0 голосов
/ 01 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...