Можно ли использовать алгоритм хеширования для экономии места в базе данных? - PullRequest
2 голосов
/ 01 мая 2010

В последнее время я часто использую git, и мне очень нравится концепция того, как GIT избегает дублирования похожих данных, используя функцию хеширования, основанную на sha1. Мне было интересно, если текущие базы данных делают что-то подобное, или это по какой-то причине неэффективно?

Ответы [ 2 ]

2 голосов
/ 01 мая 2010

В этом нет необходимости. У баз данных уже есть хороший способ избежать дублирования данных - нормализация базы данных.

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

1 голос
/ 01 мая 2010

Я придумал хорошую технику "повторного использования на основе хэша" (хотя, вероятно, она широко используется)

Я вычислил хеш-код всех полей в строке, а затем использовал этот хеш-код в качестве первичного ключа.

Когда я вставил, я просто сделал «INSERT IGNORE» (чтобы подавить ошибки о дублированных первичных ключах). В любом случае я мог быть уверен, что то, что я хотел вставить, присутствовало в базе данных после вставки.

Если это известная концепция, я был бы рад услышать об этом!

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