Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
В данных момент есть поиск в бд LIKE "%something%". Тормозит на больших обьемах данных. Fulltext search и "something%" не предлагать плз. В данном случае всё написано на MySQL 4.0. Другие БД могут справиться с этой задачей лучше? Нужно искать именно n-ое кол-во букв в строке. Длина - 2..64 символа. Может есть варианты что-то кардинально изменить, улучшив скорость? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 16:52 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
"большие объемы" это сколько в строках/гигибайтах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 17:12 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
sekos Нужно искать именно n-ое кол-во букв в строке. Длина - 2..64 символа. это значит fullscan всей таблицы, на любой субд. т.е. переход ничего не даст. sekosМожет есть варианты что-то кардинально изменить, улучшив скорость? рассказывай, что за задача, и будем тебе рассказывать почему тебе ненада n-ое кол-во букв в произвольной строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 17:16 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
Есть строки типа ez548-sek1 UZ53310SK20 БД с серийниками некого оборудования. Серийники могут быть любыми. Данных порядка 70 млн. Пользователь вводит запросв и надо что бы ему вывелось всё оборудование серийники которых содержат данный запрос. Запрос минимум 2 символа. Вот такая вот задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 17:46 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
sekosВ данных момент есть поиск в бд LIKE "%something%". Тормозит на больших обьемах данных. Fulltext search и "something%" не предлагать плз. В данном случае всё написано на MySQL 4.0. Другие БД могут справиться с этой задачей лучше? Нужно искать именно n-ое кол-во букв в строке. Длина - 2..64 символа. Может есть варианты что-то кардинально изменить, улучшив скорость? Индекс по этому полю таблицы есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 18:16 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
sekosЕсть строки типа ez548-sek1 UZ53310SK20 БД с серийниками некого оборудования. Серийники могут быть любыми. Данных порядка 70 млн. Пользователь вводит запросв и надо что бы ему вывелось всё оборудование серийники которых содержат данный запрос. Запрос минимум 2 символа. Вот такая вот задача.Сделать собственный "полнотекстовый поиск". Разделить серийник на элементы и искать среди этих элементов. поиск тогда будет по прямому соответствию, т.е. используется индекс. Но нужна денормализация БД - это вызовет сильный рост объемов данных + алгоритм актуализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 18:17 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
Привет, ну! Ты пишешь: нуня> Индекс по этому полю таблицы есть?Кхм, мсье знает ТАКОЙ вид индексов? -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 18:21 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
Если не критично использование именно SQL, то можно на каше строить индексы какие заблагорассудится. В двух словах - обычная схема - это два отображения 1) по иду получить строку таблицы 2) по значению (поле таблицы) получить ид строки Можно второй пункт написать любым образом, например при записи UZ53310SK20 делать отображение UZ53310SK20 -> id Z53310SK20 -> id 53310SK20 -> id и так далее. тогда все запросы вида %some% сводятся к виду some%. Скажем если пришло "найти содержащие Z5" то по индексу берем те которые начинаются на Z5 и вперед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 18:24 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Привет, ну! Ты пишешь: нуня> Индекс по этому полю таблицы есть?Кхм, мсье знает ТАКОЙ вид индексов? -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 А толку в моих знаниях? Пользоваться-то ему придется имеющимися серверами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 18:26 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
ну я Индекс по этому полю таблицы есть? Да VoDaСделать собственный "полнотекстовый поиск". Разделить серийник на элементы и искать среди этих элементов. поиск тогда будет по прямому соответствию, т.е. используется индекс. Дело в том что серийники абсолютно разные, разных видов и т.д. как таковой фикс.структуры у них нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 18:32 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
sekosДело в том что серийники абсолютно разные, разных видов и т.д. как таковой фикс.структуры у них нет.По условиям задачи поиск минимум по 2-м символам. Берем UZ53310SK20 и превращаем в набор: UZ Z5 53 33 31 10 0S SK K2 20 Это - поиск по 2-м символам. Аналогично по 3-м и более: UZ5 Z53 533 и т.п. Дальше строится индекс по этому полю. и ищется по ПОЛНОМУ совпадению, что быстрее LIKE "%something%" минусы я описал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 18:41 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
VoDA sekosДело в том что серийники абсолютно разные, разных видов и т.д. как таковой фикс.структуры у них нет.По условиям задачи поиск минимум по 2-м символам. Берем UZ53310SK20 и превращаем в набор: UZ Z5 53 33 31 10 0S SK K2 20 Это - поиск по 2-м символам. Аналогично по 3-м и более: UZ5 Z53 533 и т.п. Дальше строится индекс по этому полю. и ищется по ПОЛНОМУ совпадению, что быстрее LIKE "%something%" минусы я описал выше. Не совсем понял, получается 64 таблицы (длина 2..64) дублирующие данные много раз из основной таблицы? Какие конкретно минусы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 18:48 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
А быть может подключить систему полнотекстового поиска. Мы используем DTSearch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 19:03 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
Полнотекстовый не подходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 19:41 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
народ правильно предлагает насчет построения доп структуры - по другому никак. Либо выигрываешь в скорости и полный перебор с поиском подстроки, либо строй индекс и имей денормализованную схему со всеми вытекающими ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 21:08 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
чо-то не пойму, откуда у юзера кусок серийника ? это чо варезный сайт с порнухой ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 21:10 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
sekosЕсть строки типа ez548-sek1 UZ53310SK20 БД с серийниками некого оборудования. Серийники могут быть любыми. Данных порядка 70 млн. Пользователь вводит запросв и надо что бы ему вывелось всё оборудование серийники которых содержат данный запрос. Запрос минимум 2 символа. Вот такая вот задача. ну вот, скажем, решение для M-системы: ^table(idx)=серийник ^index(pos,smb,idx)= pos - позиция символа в серийнике smb - символ idx - индекс, под которым записан серийник в массиве ^table алгоритм поиска: Код: plaintext 1. 2. 3. 4. 5. 6. 7. далее в цикле до конца запроса проверяем наличие этого индекса под следующим символом запроса в позиции следующей за проверяемой. совпадение всех условий дает нам нужный индекс несколько громоздко, зато достаточно эффективно для 70 млн. записей по 64 байта все это удовольствие займет ~60Gb С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 01:25 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsovнесколько громоздко, зато достаточно эффективно для 70 млн. записей по 64 байта все это удовольствие займет ~60Gb прикинул на переменных длинах серийников (4-64), получается 11.5Gb не так уж и страшно С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 04:12 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
ну яА толку в моих знаниях? Пользоваться-то ему придется имеющимися серверами. Мусье известно о доменных индексах ? Но предлагаемый вами индекс получится гмм ... большим Скорее всего, больше самой таблицы, и не факт что по нему будет искать быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 09:05 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
sekosНе совсем понял, получается 64 таблицы (длина 2..64) дублирующие данные много раз из основной таблицы? Какие конкретно минусы? Одна таблица получается. Такая: ИД товара, Кусок серийника Каждый серийник разбиваете на куски. Тут два варианта: 1. Бьете серийник на куски по 2-3-4-... букв во всех сочетаниях. ИМХО это бесмысленно 2. Бьете серийник на куски так - каждый кусок наччинается со сследующей буквы: 123456-23456-3456-456-56 Ищите по нему like '123%', будет быстро. Единственный минус - объем этой таблицы будет раза в 2-3 больше объема серийников. Но это не страшно. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 10:33 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) ну яА толку в моих знаниях? Пользоваться-то ему придется имеющимися серверами. Мусье известно о доменных индексах ? Может быть под другим именем? Gluk (Kazan)Но предлагаемый вами индекс получится гмм ... большим Скорее всего, больше самой таблицы, и не факт что по нему будет искать быстрее Увы, да, большой. А что поиск быстрее - это факт. Проверено на нескольких приложениях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 10:46 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
ну я Gluk (Kazan) ну яА толку в моих знаниях? Пользоваться-то ему придется имеющимися серверами. Мусье известно о доменных индексах ? Может быть под другим именем? Эта такая фича Oracle, которая позволяет писать свои индексы. Например по отпечаткам пальцев или для картографии Или для контекстного поиска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 10:58 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
если он введет два символа то база ему выдасть пару другую тысяч серийников из 70 миллионов. Оно ему надо? нужно конкретизировать условие и уже в ограниченном наборе строк делать условие like по моему так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 11:09 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Мусье известно о доменных индексах ? Эта такая фича Oracle, которая позволяет писать свои индексы. Например по отпечаткам пальцев или для картографии Или для контекстного поиска Растут, однако! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 11:18 |
|
||
|
Помогите выбрать бд для поиска текста в большой бд
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) ну я Gluk (Kazan) ну яА толку в моих знаниях? Пользоваться-то ему придется имеющимися серверами. Мусье известно о доменных индексах ? Может быть под другим именем? Эта такая фича Oracle, которая позволяет писать свои индексы. Например по отпечаткам пальцев или для картографии Или для контекстного поиска В DB2 это называется INDEX EXTENSION и известно с 5 версии... сейчас уже 9 версия... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 12:05 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=33749307&tid=1553574]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 422ms |

| 0 / 0 |
