@Lelouch

Как лучше хранить сотни миллионов значений в Wordpress для быстрого поиска?

Взбрело мне тут в голову добавить на Wordpress-сайт функционал, который потребует частый поиск по сотням миллионов пар вида "значение : значение". И то и другое - строки.

Обращений к этой таблице будет много (каждый посетитель может генерировать тысячи поисков, если активно использует функционал). Большинство запросов будут довольно простыми: поиск значения или списка значений.

Вопрос - есть ли смысл хранить это все в базе WP или это будет не эффективно по производительности? Если смысл есть, то как именно это лучше сделать, чтобы работало максимально быстро?

А если хранить в отдельной таблице или БД - как лучше работать с ней на стороне WP, чтобы это было максимально нативно? Даст ли это ощутимый прирост по производительности?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Обычная InnoDB таблица в MySQL:
id не нужен
ключ VARCHAR - первичный ключ
значение VARCHAR
Вполне рабочая схема и работает хорошо на сотнях миллионов записей.

SELECT значение FROM пары
WHERE ключ=?

SELECT значение FROM пары
WHERE ключ IN (?, ?, ..., ?)

Для экономии обращений к СУБД можно добавить прослойку кэширования Memcached с теми же ключ-значение и ограниченным сроком жизни.

P.S. ElasticSearch лишнее звено
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix
Java Software Engineer
Подключите к вашему сайту WordPress - ElasticSearch и постройте индексы.
Так будет лучше в плане производительности
https://www.elastic.co/

Или же можете подключить -
sphinxsearch.com
Ответ написан
Комментировать
al_gon
@al_gon
Мне понравилось от azerphoenix я бы добавил Solr. https://de.wordpress.org/plugins/solr-power/
Но если поиск по key в key-value чистый 1:1 match, то key value store лучшу.
Если value комозитный то я бы взял cassandra
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы