Уникальный хэш

the_moon
Дата: 12.06.2006 20:12:28
Привет,

а вот аще адин вапрос. :) Мне надо для экспорта LOB-ов генерить имена для файлов, уникальные для таблицы, но постоянные от экспорта к экспорту, потому как ЛОБы будут чекинится в CVS, потому случайные UUID-ы в качестве имен не подойдут.

Что мне первое в голову пришло, это взять первый попавшийся уникальный индекс для таблицы, выбрать значения проиндексированных полей, преобразовать те к строкам, сложить строки в одну и сгенерить MD5 хеш. В случае отсутсвия уникального индекса будут взяты все не-LOB поля и на основе их будет генерится хэш.

Есть ли какие подводные камни в этом методе или есть метод попроще?

Спасибо
andrey_anonymous
Дата: 12.06.2006 20:22:33
Камни? Есть, конечно.
1) "Все не LOB-поля". В зависимости от назначения таблицы и бизнес-логики по ним могут ходить update...
2) Хеш MD5. Хеш - это именно хеш. Вероятность того, что для двух различных входных строк Вы получите одно и то же хеш-значение невелика, но существует.

Если в LOB лежат файлы, то, быть может, еще на этапе сохранения этих файлов в LOB назначать имена и хранить отдельным атрибутом?
Вариация на тему - создать атрибут "LobName" и генерировать значения из sequence?
the_moon
Дата: 12.06.2006 20:32:24
andrey_anonymous
Камни? Есть, конечно.
1) "Все не LOB-поля". В зависимости от назначения таблицы и бизнес-логики по ним могут ходить update...


Это не продуктивная база, это эталонная база для тестеров, потому вероятность, того что какие то данные в табличке без ключей поменяются не велика.

andrey_anonymous

2) Хеш MD5. Хеш - это именно хеш. Вероятность того, что для двух различных входных строк Вы получите одно и то же хеш-значение невелика, но существует.


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

andrey_anonymous

Если в LOB лежат файлы, то, быть может, еще на этапе сохранения этих файлов в LOB назначать имена и хранить отдельным атрибутом?
Вариация на тему - создать атрибут "LobName" и генерировать значения из sequence?


Что либо в базе менять не могу.

Надеюсь будет работать.
andrey_anonymous
Дата: 12.06.2006 20:49:37
the_moon
andrey_anonymous
Камни? Есть, конечно.

Что либо в базе менять не могу.
Надеюсь будет работать.

Кстати, а зачем Вам хеш?
Вы предполагаете существование набора уникальных атрибутов.
Почему не использовать их значения в именах файлов вместе с именем таблицы? Заодно упрощается диагностика "где найти тот лоб, из которого получился вот этот кривой файл".
Только не забудьте о разделителях :)
the_moon
Дата: 12.06.2006 20:59:05
andrey_anonymous
the_moon
andrey_anonymous
Камни? Есть, конечно.

Что либо в базе менять не могу.
Надеюсь будет работать.

Кстати, а зачем Вам хеш?
Вы предполагаете существование набора уникальных атрибутов.
Почему не использовать их значения в именах файлов вместе с именем таблицы? Заодно упрощается диагностика "где найти тот лоб, из которого получился вот этот кривой файл".
Только не забудьте о разделителях :)


Имена файлов кое где ограниченны 255 знаками, а кто его знает из чего составлен уникальный ключ. Может там текстовое поле о 2-х тысячах знаков. Потому решил я все упаковать.
andrey_anonymous
Дата: 12.06.2006 21:14:45
the_moon
Имена файлов кое где ограниченны 255 знаками, а кто его знает из чего составлен уникальный ключ. Может там текстовое поле о 2-х тысячах знаков. Потому решил я все упаковать.

Вы лучше предметно посмотрите.
Что-то я сомневаюсь в наличии уникальных ключей о 2000 знаков... Да еще в базе, где всего несколько сотен записей ;)
gpu
Дата: 14.06.2006 13:25:19
the_moon

Что либо в базе менять не могу.
Надеюсь будет работать.


Странного хочет"ся
Где можно добыт" рабочую
реализация подсчета МД5 на PL/SQL?
the_moon
Дата: 14.06.2006 13:28:48
gpu
the_moon

Что либо в базе менять не могу.
Надеюсь будет работать.


Странного хочет"ся
Где можно добыт" рабочую
реализация подсчета МД5 на PL/SQL?


Вроде в десятке уже есть готовая
gpu
Дата: 17.06.2006 00:59:07
the_moon
gpu
the_moon

Что либо в базе менять не могу.
Надеюсь будет работать.


Странного хочет"ся
Где можно добыт" рабочую
реализация подсчета МД5 на PL/SQL?


Вроде в десятке уже есть готовая


Да я уже облизался,
но что мне делат" с 9, 8?
Подумалось...
Дата: 17.06.2006 13:39:08
В девятке 'готовую реализацию MD5 на PL/SQL' добывают из sys.dbms_obfuscation_toolkit.md5