Как обеспечить целостность данных с помощью SQL Server?
У меня есть таблица с миллиардами строк в SQL Server. Я хочу убедиться, что данные только для чтения (неизменяемые) и всегда не будут изменены после вставки в базу данных.
Моя текущая мысль - использовать алгоритм хеширования SHA3 для создания цепочки хеширования.
HASH(current_row) = HASH(HASH(previous_row) + current_row) # as the hash content of the current row
Решение выше имеет следующие недостатки:
Это может занять слишком много времени, если есть миллиарды строк, поскольку каждый хэш записи связан с хешем предыдущей записи.
Это не позволяет вычислять параллельно.
Учитывая производительность, каков наиболее практичный способ обеспечения целостности данных?
1 ответ
Целостность данных означает что-то еще. Если вам нужно убедиться, что некоторые пользователи не будут обновлять и удалять что-либо, не предоставляйте им обновление и удалите грант.
Будет ли чтение исполнением, не имеет отношения к грантам. Вам нужно будет знать ваши сценарии получения и настроить правильные индексы. Если этого недостаточно, вам могут понадобиться другие более продвинутые методы (шардинг, чтение только с реплицированных рабов и т. Д.)