Как обеспечить уникальность для большого (BLOB) поля базы данных - PullRequest
0 голосов
/ 10 декабря 2010

Я проектирую базу данных (SQLite, SQL Server и DB2), в которой таблица содержит большой двоичный объект размером 32 КБ, который должен быть уникальным. Таблица обычно содержит около 20000 строк.

Я могу придумать два решения,

1 - сделать блоб уникальным индексом.

2 - Рассчитать хеш-индекс большого двоичного объекта, использовать его как неуникальный индекс и написать код, обеспечивающий уникальность большого двоичного объекта.

Решение 1 является более безопасным, но достаточно ли недостаточно места для хранения и снижения производительности, чтобы сделать решение 2 лучшим выбором?

1 Ответ

1 голос
/ 10 декабря 2010

Я бы остановился на # 2, частично в качестве меры экономии места, но больше потому, что некоторые СУБД не допускают индексы для больших объектов (на ум приходит Oracle, но это может быть старым ограничением).* Я бы, вероятно, создал два столбца для значений хеша, MD5 и SHA1 (оба обычно поддерживаются в клиентских языках).Затем добавьте уникальный составной индекс, который охватывает эти два столбца.Вероятность столкновения с обоими хэшами бесконечно мала, особенно учитывая ваши ожидаемые размеры таблиц.Однако у вас должна быть стратегия восстановления (которая может быть такой же простой, как установка одного из значений на 0).

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