Как обеспечить целостность данных с помощью SQL Server?

У меня есть таблица с миллиардами строк в SQL Server. Я хочу убедиться, что данные только для чтения (неизменяемые) и всегда не будут изменены после вставки в базу данных.

Моя текущая мысль - использовать алгоритм хеширования SHA3 для создания цепочки хеширования.

HASH(current_row) = HASH(HASH(previous_row) + current_row) # as the hash content of the current row

Решение выше имеет следующие недостатки:

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

  2. Это не позволяет вычислять параллельно.

Учитывая производительность, каков наиболее практичный способ обеспечения целостности данных?

1 ответ

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

Будет ли чтение исполнением, не имеет отношения к грантам. Вам нужно будет знать ваши сценарии получения и настроить правильные индексы. Если этого недостаточно, вам могут понадобиться другие более продвинутые методы (шардинг, чтение только с реплицированных рабов и т. Д.)

Другие вопросы по тегам