Хранение подписи SHA1 как первичный ключ в SQL пост-ГРЭС

Существует также timeit , который является частью стандартной библиотеки и действительно прост в использовании. Помните: не изобретайте велосипед!

11
задан Steve Schnepp 28 October 2009 в 17:06
поделиться

3 ответа

Будьте осторожны с тем, что это может сделать с вашими индексными b-деревьями. Поскольку SHA1 не будет последовательным, ваши записи будут очень медленными из-за всех скачков в btree.

Если последовательность не работает, я обычно рекомендую последовательный GUID / UUID (см. SQL Server NEWSEQUENTIALID () например).

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

1
ответ дан 3 December 2019 в 10:44
поделиться

В частности, если вы вводите двоичные параметры в базу данных (например, через libpq), используйте bytea. Если вы хотите проделать множество манипуляций с помощью простых текстовых запросов, конвертируйте в шестнадцатеричный и сохраните в текстовом или в столбце varchar.

PostgreSQL, конечно, не будет иметь никаких проблем в целом с 20-байтовыми ключами, за исключением того, что накладные расходы на производительность составляют конечно больше, чем с последовательностью.

5
ответ дан 3 December 2019 в 10:44
поделиться

Вы можете либо преобразовать в шестнадцатеричный, либо в base64 и использовать столбец varchar , либо попытаться просто сохранить его в столбце с типом bytea . Я бы попробовал создать таблицы с множеством случайных значений в обоих форматах и ​​посмотреть, как они работают.

См. документацию PostgreSQL по bytea для получения информации об этом типе.

2
ответ дан 3 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: