[структура базы] много данных

12
TF-Studio
На сайте с 17.08.2010
Offline
334
700

Есть чудная БД.

key - text

wordstat - int

id - int (AI)

записей больше 20кк (пока перегоняю, точно не известно).

Делаю на mysql, но есть сомнения, в правильности этого выбора

Выборки будут:

select from where key like '%some_string%'

Если вкинуть сразу 500-1000 ключей на like, то есть предположение, что все загнется.

В принципе памяти много на машине, наверное, есть какой-то вариант загнать всё в память и там уж выполнять поиск. (скопировать в таблицу type MEMORY)

Возможно есть иные технические решения для подобных размеров

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#1

like '%some_string%' и при одном ключе будет грузить все на 100% и работать медленно. сделать тыщу выборок это вообще будет нереально. нужны индексы, но хз как в такой ситуации их применить.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
Solmyr
На сайте с 10.09.2007
Offline
501
#2

А именно LIKE %some_string% ?

Может подойдет алгоритм поиска по словам?

Например если some_string = bb то

aaa bb cc - находит

bb cc - находит

aa bbc cc - не находит.

P.S. А вообще у мускуля есть индекс типа FULLTEXT именно для LIKE %some_string% только я к сожалению никогда не задумывался как именно и насколько эффективно он работает.

TF-Studio
На сайте с 17.08.2010
Offline
334
#3

пример.

Есть множество записей:

определить причину поломки ноутбука

(подобного типа)

Мне надо для сайта найти все ключи ноутбук

like - тут видится единственный вариант.

500 - просто для скорости, 1 раз закинул задачу и пусть себе скрипт ищет.

ДП
На сайте с 23.11.2009
Offline
203
#4

А в сторону всяких sphinx, elasticsearch не смотрели? Они же там и морфологию умеют и как раз для поиска по словам заточены.

D
На сайте с 14.01.2007
Offline
153
#5
Дикий пионер:
elasticsearch

должно помочь

Solmyr
На сайте с 10.09.2007
Offline
501
#6
TF-Studio:
(подобного типа)
Мне надо для сайта найти все ключи ноутбук
like - тут видится единственный вариант.

Хорошо, а если по "ноутбук" будет находить "три ноутбука", но не будет находить "три зеленыхноутбуков" - так подойдет?

TF-Studio
На сайте с 17.08.2010
Offline
334
#7

мне нужны все вхождения, потому слово режется до минимума.

Допустим для сайта по драйверам из это базы мы начнем искать: like '%драйвер%' итд...

sphinx - раньше юзал (чудная вещь), но на малых базах, не уверен, что он спокойно осилит 4Гб и будет быстрее like из memory

Соответственно и создал тему, вдруг у кого есть подобный опыт

[Удален]
#8

TF-Studio, стоит сначала с базой поработать, привести её к удобному виду, создать индексы, определить исходную форму слов...

а уже потом делать выборки и обновления :)

D
На сайте с 14.01.2007
Offline
153
#9

TF-Studio, в качестве примера: есть elasticsearch база на прим. 50кк документов. общий размер - 40ГБ. вчера нужна была выборка по префиксу ХХХ, т.е. находится

XXXYYY AAAA

AAAA XXXYYY

я делал выборки по 1000 штук, время на 1 - 0,2 секунды

сервер hetzner с 32ГБ РАМ

Оптимизайка
На сайте с 11.03.2012
Offline
396
#10

like '%xxx%' не использует индексы, поэтому никак нельзя так делать. а вот like 'xxx%' использует - поэтому вам надо бить по словам таблицу или использовать полнотекстовый поиск.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий