• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Организовать поиск

  • Автор темы Delta Soft
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

Delta Soft

Добрый день.

Тут ситуация такая.

Есть БД PostgreSQL, на нее навешан интерфейс.

Нужно организовать по ней быстрый поиск (пользователь вводит строку, из базы вытаскиваются все записи, в определенных полях которых содержится данная строка) может кто-нить поделится мыслями:

В базе порядка 200000 записей
В день несколько тысяч, а то и десятков тысяч пользователей делают к ней запрос.

Из существующих вещей можно сравнить наверное с очень крупным интернет магазином. Поэтому хотелось бы чтобы ответ был виден почти моментально.

Всем заранее спасибо.
 
B

Barmutik

Нужно использовать специализированные решения для поиска в БД.. стандартными средствами врядли будет работать в таком темпе как Вам надо...

Можно посмотреть в сторону ... на правах рекламы :unsure:
 
S

sdriver

Да поисковой движок вам не помешает.


2 Barmutik
Но у гуглика быстрее :unsure:
 
B

Barmutik

Для: sdriver

Быстрее .. нет ... раскрученне да ... да и стоимость решения под конкретные нуждны отличается аж на пару порядков :unsure:
 
P

pushkin

Тут решений можно много напридумывать. Самое простое, что приходит в голову: если у вас в базе обновления самих данных происходят сравнительно редко (по отношению к количеству запросов по поиску данных), то можно попробовать накрутить всяческих индексов, чтобы ускорить сами запросы на поиск. Индекс - это как таблица, только данные в ней строго отсортированы и поиск по ним ведется не линейным способом, а бинарным (в современных БД это вообще изощренный/извращенный бинарный поиск), поэтому скорость нахождения данные возрастает разительно. А 200 тыс. записей - это не так и много для нормального индекса. Если использовать простой бинарный поиск, то нужно будет всего лишь
17-18 операций сравнения, что согласитесь для современных компьютеров вообще смешно.

Базу также можно попробовать реплицировать, если конечно ваша DB это поддерживает - разнести на несколько серверов чтобы разгрузить каждый сервер в частности.

Также можно попробовать вести статистику запросов на поиск и закэшировать результаты поисков.

А вообще, нужно знать структуру базы чтобы что-то оптимизировать.
 
B

Barmutik

Для: pushkin

Всё это будет работать если не надо делать ПОЛНОТЕКСТОВЫЙ ПОИСК!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!