Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как лучше хешировать строку адреса? / 13 сообщений из 13, страница 1 из 1
05.08.2015, 13:27:42
    #39023483
araman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
Собсно сабж!
Есть в БД набор урлов, задача - вывести урл и сколько раз он есть в БД.
Запрос вроде бы простой, но сложности начинаются когда в БД под 2млн урлов. Понимаю, что строку нужно преобразовывать в какой то хеш, ибо группировать так - все погибает жестко. Натолкните куда двигаться!

Спасибо!
...
Рейтинг: 0 / 0
05.08.2015, 13:39:40
    #39023490
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
aramanЕсть в БД набор урловВ каком виде он там "есть"? DDL таблицы покажите.
...
Рейтинг: 0 / 0
05.08.2015, 13:40:35
    #39023492
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
aramanНатолкните куда двигаться!

1. у4итесь точнее ставить задачу:
примеры запросов, частота и вариабельность запросов.
Наблюдаемое время отклика. Желаемое время отклика.
Список имеюшихся индексов. ЕКСПЛЕЙН. ДДЛ таблиц.

2. Направление второе -- партицирование

3. ручная пред-агрегация....а потом двигатся в сторону DWH,
например бесплатные Мондриан/Пентахо и/или
свякие там КликСенсе, Микростратеги и иже с ними...
...
Рейтинг: 0 / 0
05.08.2015, 13:47:32
    #39023500
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
aramanСобсно сабж!
Есть в БД набор урлов, задача - вывести урл и сколько раз он есть в БД.
Запрос вроде бы простой, но сложности начинаются когда в БД под 2млн урлов. Понимаю, что строку нужно преобразовывать в какой то хеш, ибо группировать так - все погибает жестко. Натолкните куда двигаться!

Спасибо!

никаких сложностей с такими скромными объемами быть не должно.
создаете индекс по полю урла и дела.

Если вам надо группировать вообще 2 млн. урлов, то да, будет долго, но никакой хэш вам тут не поможет.

Если нужны более детальные советы _- таблицы, запрос, план, тогда будет разговор.
...
Рейтинг: 0 / 0
05.08.2015, 13:58:28
    #39023510
araman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
А что тут даст DDL если я говорю про урл? Наверное я его храню не в INT. Ну ладно если это так необходимо - оно имеет тип TEXT (ибо длина урла может быть очень и очень длинной).

Группировать придется, иначе как посчитать корректно кол-во совпадений?
Ну сча запрос работает около 3-5 секунд, подозреваю, что можно выполнять быстрее.

Да и вообще, если абстрагироваться то как решают такие задачи в принципе?
...
Рейтинг: 0 / 0
05.08.2015, 14:16:58
    #39023524
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
araman,

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

3- 5 секунд для такой интеграции нормально, я думал там у тебя часами она идет.
...
Рейтинг: 0 / 0
05.08.2015, 14:21:35
    #39023530
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
Сори, я может быть не достаточно сильно абстрагировался.

в принципе такие задачи решают путем постановки задачи, анализа проблем при решении, проектирования решения, реализации решения и обязательно тестирования.

Так лучше?
...
Рейтинг: 0 / 0
05.08.2015, 14:22:15
    #39023533
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
MasterZivaraman,

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

3- 5 секунд для такой агрегации нормально, я думал там у тебя часами она идет.
...
Рейтинг: 0 / 0
05.08.2015, 14:35:49
    #39023551
araman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
Ладно вопрос исчерпан. Ну не нужны хеши дак и не нужны. Поставил индекс, собственно все, что нужно было услышать.
...
Рейтинг: 0 / 0
06.08.2015, 23:39:59
    #39024689
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
А мне хэши строк нравятся как идея... Была б такая задача - делел бы через хэш

В таблице еще одно поле с чексуммой от lower строки
Составной индекс (crc32, строка) - вроде бы тяжелее, а работает существенно быстрее просто индекса по строке

Конечно, на малых объемах без разницы, хотя тоже не проиграет. Но мороки больше, а потому более лениво
...
Рейтинг: 0 / 0
07.08.2015, 01:01:06
    #39024703
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
Cygapb-007А мне хэши строк нравятся как идея... Была б такая задача - делел бы через хэш



Расскажи, чем нравится, а я расскажу, почему ты неправ.
...
Рейтинг: 0 / 0
07.08.2015, 06:58:14
    #39024733
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
MasterZivCygapb-007А мне хэши строк нравятся как идея... Была б такая задача - делел бы через хэш



Расскажи, чем нравится, а я расскажу, почему ты неправ.чем?
Скоростью поиска
Число найти быстрее, чем длинный текст
Конечно, разные строки могут дать одинаковый хэш, поэтому после найденного числа еще нужно убндиться, что и текст совпадает

Когда-то проводил тестирование и убедился в существенно более быстром нахождении искомой строки. Тестировал в MS SQL
...
Рейтинг: 0 / 0
07.08.2015, 08:54:22
    #39024755
Диклевич Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше хешировать строку адреса?
Cygapb-007,

поддерживаю. имею такой же опыт. только я пошел дальше хеша и конвертил его в bigint.
примерно вот так (MS SQL):
Код: sql
1.
ABS(CONVERT([bigint], HASHBYTES('SHA2_512', COALESCE([long_text_column], ''))))


добавляю это как вычисляемый столбец, и потом на него индекс.
на порядка 3-4 миллионах коллизий (одинаковых значений) не наблюдается. ну и соответственно при поиске использую этот столбец - все летает.

не знаю, можно ли так в MySQL.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как лучше хешировать строку адреса? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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