Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / уникальный идентификатор для строки / 12 сообщений из 12, страница 1 из 1
05.03.2007, 17:06
    #34372060
sonne
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
Здравствуйте.

В MySQL есть функция MD5(строка произвольной длины) - возвращает 32 символьную строку по входной строке; но для строк, длина которых не превышает 256 знаков, а средняя длина в районе 60 знаков, 32 символа кажется избыточно. Вопрос: для строк указанной длины скольки битное значение обеспечит хотя бы теоретическую уникальность? И какие алгоритмы могут это реализовать? В каком направлении искать?
...
Рейтинг: 0 / 0
05.03.2007, 17:11
    #34372072
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
если не хочешь md5, можешь юзать crc32
...
Рейтинг: 0 / 0
05.03.2007, 17:13
    #34372078
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
Когда на выходе функции меньше значений, чем на входе, то уникальности не жди. Особенно теоретической.

Распиши конкретнее, что именно надо и в каком языке/среде разработки/СУБД.
...
Рейтинг: 0 / 0
05.03.2007, 23:24
    #34372785
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
Сократить длину хэша можно за счет расширения набора символов, используемого в хэше.

В первом приближении: берем все символы которые могут встречаться в исходном тексте (допустим - 40 со знаками препинания, но без учета регистра) и возведем в степень равную максимально возможной длине исходной строки (в нашем случае 256). Как результат получим количество теоретически возможных (в том числе абсолютно бессмысленных с точки зрения грамматики и т. п.) уникальных сочетаний (40^256).

Для покрытия этого количества сочетаний хэш должен обеспечивать не меньшую мощность, т. е. тоже давать 40^256 сочетаний. Уменьшая длину хэша, мы можем достигнуть увеличения его мощности за счет расширения диапазона используемых символов (если использовать все что дает один байт, то теоретически это 256 символов).

Теперь считайте сами: 256^x=40^256

К этим рассуждениям надо добавить что:

осмысленных строк состоящих из одних запятых или букв "а" не бывает, так что мощность множества исходных строк можно как то сократить.


существующая функция md5 здесь не поможет, так как она не способна расширять диапазон используемых символов.


для теоретической уникальности 32 символов недостаточно :) а для практической это то что надо (так что пользуйтесь на здоровье функцией md5 и не морочьте людям голову)
...
Рейтинг: 0 / 0
06.03.2007, 10:06
    #34373327
sonne
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
miksoftРаспиши конкретнее, что именно надо и в каком языке/среде разработки/СУБД.

Есть два множества строк, нужно из первого выбрать строки, которых нет во втором; и из второго выбрать строки, которых нет в первом. Данные лежат на MySQL, пишу на VBScript (WSH). Перебор не строк, а их 32-х символьных идентификаторов сильно скорости не прибавил. Похоже надо играться с индексами строк.
...
Рейтинг: 0 / 0
06.03.2007, 10:08
    #34373341
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
A
Код: plaintext
LEFT JOIN
применить в запросе не пробовали?
...
Рейтинг: 0 / 0
06.03.2007, 10:11
    #34373355
Палестинец
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
В MySQL есть функция MD5(строка произвольной длины)

Есть два множества строк, нужно из первого выбрать строки, которых нет во втором; и из второго выбрать строки, которых нет в первом. Данные лежат на MySQL, пишу на VBScript (WSH). Перебор не строк, а их 32-х символьных идентификаторов сильно скорости не прибавил. Похоже надо играться с индексами строк.

бляха муха.. IT мертво..
...
Рейтинг: 0 / 0
06.03.2007, 10:15
    #34373379
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
Привет, Палестинец!
Ты пишешь:

ПалестинецП> бляха муха.. IT мертво..нет.
это просто такой спецконтингент на MySQL сидит.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
06.03.2007, 10:37
    #34373463
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
sonne miksoftРаспиши конкретнее, что именно надо и в каком языке/среде разработки/СУБД.

Есть два множества строк, нужно из первого выбрать строки, которых нет во втором; и из второго выбрать строки, которых нет в первом. Данные лежат на MySQL, пишу на VBScript (WSH). Перебор не строк, а их 32-х символьных идентификаторов сильно скорости не прибавил. Похоже надо играться с индексами строк.Это делается одним или двумя SQL-запросами. Один запрос или два - зависит от постановки задачи.
В любом случае, с подробным описанием задачи и версией MySQL добро пожаловать на форум MySQL
...
Рейтинг: 0 / 0
06.03.2007, 11:01
    #34373570
sonne
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
Я двумя запросами и делаю.Только они Cel2G\1G оперативки вешают на час так, что винда как дохлый таракан. Вот и ищу способ, как запросы убыстрить. Если бы у строки был к примеру 32 битный идентификатор, так оно бы летало наверное, а так перелопать ка эти строки.
...
Рейтинг: 0 / 0
06.03.2007, 11:07
    #34373595
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
sonneЯ двумя запросами и делаю.Только они Cel2G\1G оперативки вешают на час так, что винда как дохлый таракан. Вот и ищу способ, как запросы убыстрить.Опять же на форуме MySQL приведите ваш запрос и его план, описание таблиц и индексов, версию MySQL и используемый движок. Неплохо бы еще количества записей в таблице и прогнозируемое количество записей в результате.
...
Рейтинг: 0 / 0
06.03.2007, 12:35
    #34374037
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
уникальный идентификатор для строки
поддеживаю идею насчёт индексов.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / уникальный идентификатор для строки / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]