powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Быстрая выборка по маске
25 сообщений из 26, страница 1 из 2
Быстрая выборка по маске
    #36625825
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос такой, есть БД и в ней справочник улиц.
Приложение на WEB содержит выпадающий список на AJAX, в котором необходимо по первым буквам организовать поиск по маске %строка% в базе и обновление выпадающего списка. Т.е. поиск осуществляется не по началу, а по вхождению набранной пользователем строки.

Если делать в лоб, то при достаточно большом числе конкурентных запросов нагрузка на сервер значительно возрастает (у БД есть ещё и другие задачи). Кто-нибудь знает, как оптимизировать данную конструкцию, и какие решения этой проблемы используются на HighLoad-проектах?
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36625904
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-,

Кэшируйте справочник улиц в памяти на стороне Web-сервера. И синхронизируйте его с БД, например, по таймеру.
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36625946
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-,
вэб-приложения (в отличии от десктопа) на голом ЯП не пишут.
Поэтому кэш, например в хибернейте присутствует.
Посмотрите что у вас над БД сидит.
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36625985
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
На текущий момент ничего нет, я проектированием занимаюсь...
вот задумался на тему выбора типа селекторов: ComboBox на AJAX или отдельная форма с полем ввода кнопкой "Найти"... вот думаю, как комбо-бокс будет работать и прикидываю ресурсы и нагрузки.

С кэшем понятно... т.е. без дополнительного ресурса не обойтись, ок)
А что может выступать в качестве такого кэша? Есть решения?
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36625988
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Над ораклом будет или Hiber или TopLink
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36626000
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но вообще, лучше, чтоб "Кэш-машина" лезла в базу сама по соображениям производительности...
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36626106
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-
На текущий момент ничего нет, я проектированием занимаюсь...

проект ВЭБ с нуля вообще дело неблагодарное.
От наличия и квалификации плясать надо.

Я просто искал себе инфу для нового ЯП (java) с нуля, поэтому есть такая инфа:

авторHibernate по определению медленее ( iBATIS ).
Да бинд с испоьлзованием JDBC будет выполнен быстрее. (так как хибернатат использует прокси и рефлексию)
Транзакции можно использовать и без EJB ( ), тот же hibernate прекрастно справляется, да и на JDBC проблем с транзакциями нет.

Для чего может понадобится EJB? ну для масштабирования и кэширования.
Хотя и кэширование можно решить при помощи различных доп фреймворков, тот же JBoss Cache

Чем реально может помочь Hibernate, EJB так это связанные объекты и коллекции.
т.к. у меня от оракла идёт (БД уже ГОТОВА), то хибернейт будет хуже iBATIS.
Во втором я сам полностью управляю всеми запросами (полный контроль)
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36626162
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Ситуация такая, есть готовая база и есть система аналитических отчётов, которая написана в ГУЕ.
Её надо портировать на ВЭБ.
В качестве генератора отчётов выбран Jasper, репозиторий отчётов JasperServer, у которого есть открытое API. Чтобы сгенерить отчёт, нужно ввести входные параметры и дёрнуть JasperServ, чтобы тот выдал печатную форму в указанном формате или в режиме пейджинга запрашивать нужную страницу для отображения в HTML.
Я сейчас нахожусь на стадии раздумий по поводу ввода параметров. Цель примерно нарисовал такую, создать библиотеку тэгов, в которой были бы прикладные селекторы-валидаторы различных справочников и объектов существующей базы.

Работа комбо-бокса очень привлекает своей интерактивностью, сразу видно что есть ещё в БД рядом. Но для этого нужен индекс, чтобы не "бомбить" БД запросами.
Вот lucene нашёл... наверно он меня спасёт...
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36626251
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-
Ситуация такая, есть готовая база и есть система аналитических отчётов, которая написана в ГУЕ.
Её надо портировать на ВЭБ.
...


А что за ГУЙ? Самописный или какой-то продукт?

ЗЫ. Писал подобную штуку, но под BIRT reporting. Жесть... :)
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36626290
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-,
если данных реально много, наверно ты прав - средства самой БД могут не хватить.
И наклон проекта у тебя на report'инг, поэтому кэши коллекций-сущностей это не совсем то (параметров).

автора посоветуйте, пожалуйста, БД/движок для индексации _имён_, размеров, дат (но не содержимого файлов) файлов с возможностью поиска по %query%. В данный момент используется mysql, но при базе в пару гигов скорость сильно падает (с 2-3 секунд до десятка). Пару раз пробовал lucene, но на паре млн документов на %query% запросах его скорость не выше mysql'я
Удачи!
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36626406
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-Если делать в лоб, то при достаточно большом числе конкурентных запросов нагрузка на сервер значительно возрастает (у БД есть ещё и другие задачи). Кто-нибудь знает, как оптимизировать данную конструкцию, и какие решения этой проблемы используются на HighLoad-проектах?
- у БД есть собственный кэш запросов, при достаточном размере этого кэша, проблем с производительностью в описанной Вами задаче не возникает (делал аналогичные поиски по КЛАДР и по списку станций ЖД - проблем с производительностью в этом месте не было)
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36627268
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123-=*ShamaN*=-,
если данных реально много, наверно ты прав - средства самой БД могут не хватить.
И наклон проекта у тебя на report'инг, поэтому кэши коллекций-сущностей это не совсем то (параметров).

автора посоветуйте, пожалуйста, БД/движок для индексации _имён_, размеров, дат (но не содержимого файлов) файлов с возможностью поиска по %query%. В данный момент используется mysql, но при базе в пару гигов скорость сильно падает (с 2-3 секунд до десятка). Пару раз пробовал lucene, но на паре млн документов на %query% запросах его скорость не выше mysql'я
Удачи!

Спасибо, понял...
Деляю вывод, что эта технология больше подходит как раз для кнопки "Поиск", а не для создания индекса "быстрого реагирования".
Petro, Кэши коллекций-сущностей как раз и нужны, дабы не нагружать отображением ВЭБ-интерфейса основную базу)


Kachalov-=*ShamaN*=-Если делать в лоб, то при достаточно большом числе конкурентных запросов нагрузка на сервер значительно возрастает (у БД есть ещё и другие задачи). Кто-нибудь знает, как оптимизировать данную конструкцию, и какие решения этой проблемы используются на HighLoad-проектах?
- у БД есть собственный кэш запросов, при достаточном размере этого кэша, проблем с производительностью в описанной Вами задаче не возникает (делал аналогичные поиски по КЛАДР и по списку станций ЖД - проблем с производительностью в этом месте не было)

А поиск был именно по маске типа like '%ФРАЗА%'? В таком раскладе план запроса - TableScan, что не есть зер гут. + не все справочники могут влезть в горячий кэш, да и не хотелось бы драгоценную память SQL-сервера на 80% использовать для красивого Комбобокса, жирно ему будет... Я выше в посте специально указал, что на сервере и так много чего висит...


Диез-=*ShamaN*=-
Ситуация такая, есть готовая база и есть система аналитических отчётов, которая написана в ГУЕ.
Её надо портировать на ВЭБ.
...


А что за ГУЙ? Самописный или какой-то продукт?


Гуй самописный, много программ, база одна...
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36627896
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут главное не перемудрить, что в вэбе очень часто.
Узкий канал - слабое место.
Пока по каналу дойдут события мышки или открытие комба бокса - СУБД 1000 раз успеет ответить.
Попробуйте!
Почему на десктопе нет кэшей?
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36628721
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123тут главное не перемудрить, что в вэбе очень часто.
Узкий канал - слабое место.
Пока по каналу дойдут события мышки или открытие комба бокса - СУБД 1000 раз успеет ответить.
Попробуйте!
Почему на десктопе нет кэшей?

Попробовал:)
Залил реальных данных в облегчённую таблицу": 25000 строк - 2 столбца BIGINT и VARCHAR(255), FF-100
Время поиска Oracle и PG одинаково (TableScan) - 15-16ms без фетча
Время поиска по GIN-индексу PG ~300ms без фетча (зря парился, lucene скорее всего такие же результаты выдаст)

Ну вот, вскрытие показало, что больной умер от вскрытия...
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36628732
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123тут главное не перемудрить, что в вэбе очень часто.
Узкий канал - слабое место.
Пока по каналу дойдут события мышки или открытие комба бокса - СУБД 1000 раз успеет ответить.
Попробуйте!
Почему на десктопе нет кэшей?

В смысле на десктопе? не понял вопроса..
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36628833
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-В смысле на десктопе? не понял вопроса..
в том смысле, что у меня даже при полной загрузке справочника в 5000 строк каждой формой на каждом клиенте без оптимизации - пользователи не замечают неудобств.
(внутренняя сеть - клиент-сервер - Delphi). Сервер - справляется.
(пока не экономлю на спичках)
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36629282
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123тут главное не перемудрить, что в вэбе очень часто.
Узкий канал - слабое место.
Пока по каналу дойдут события мышки или открытие комба бокса - СУБД 1000 раз успеет ответить.


Вот тут я позволю себе высказать сомнения :) Если вы один сидите на сайте - то разумеется, узким местом будет сеть. Но если 1000 одновременных пользователей раз в 5 секунд делают http-запрос, имеем 200 запросов в секунду. Без кэширования это будет 200 запросов в секунду к БД, причем из десятков параллельных коннектов, за счет пула.
Petro123

Почему на десктопе нет кэшей?

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

-=*ShamaN*=-
....

Ну вот, вскрытие показало, что больной умер от вскрытия...

Если хотите реальных цифр - запускайте в параллельных потоках - например 20 потоков (коннектов) и в каждом 10 запросов в секунду, с разными параметрами, естественно.
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36629533
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-А поиск был именно по маске типа like '%ФРАЗА%'?
- да, база MySQL, размеры кэшей/буферов средненькие (скорее маленькие), задача именно поиск улицы по КЛАДР (аналогично решался поиск Ж/Д станции по списку станций) - проблем с производительностью тут не возникало
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36629583
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диез,
что значит - сидите на сайте?
При одинаковом количестве пользователей, нагрузка на БД в вэб меньше чем в десктопе.
Если в локали СУБД "держит", то в вэб сервер жалеть вообще нет смысла, даже с AJAXом
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36629843
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Диез,
что значит - сидите на сайте?
При одинаковом количестве пользователей, нагрузка на БД в вэб меньше чем в десктопе.

Тоже, кстати, не очевидно..
Если пользователь запускает поиск записи в БД, то на SQL сервер уйдут совершенно одинаковые sql-запросы как от десктоп-, так и от веб-приложения (ну, если напрямую, без кэшей).
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36630783
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В вэбе нагрузка немного меньше в том случае, когда есть отсечка данных аля "limit X offset X" для PG и "ROWNUM between Y and Y" для Oraclа и выборка идёт чётко по индексам (и то, это экономит память и процессор только при отсутсвии "order by..." в запросе)... Сервер понимает эти инструкции и выполняет "Поднятие" данных с винта заранее зная (из индекса), какие окна стораджа ему нужны.

Пока что думаю, как снизить время ответа сервера, тогда, следуя логике, число конкурентных должно понизиться. Производительность при параллельных запросах... вот что не тестил, то действительно не тестил... Проведу обязательно эти тесты без фетча, результаты опубликую.
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36630796
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Источником запросов, напомню, являются нажатия пользователем кнопок на клавиатуре...
Работать оно будет так:
пользователь нажал кнопку А, таймер начал отсчитывать 500мс, если пользователь нажал ещё одну кнопку, таймер сбросился и начал опять отсчитывать 500с. Как только 500с прошли производится AJAX запрос и генерация контента для слоя (DIV) выпадающего списка.
т.е., гипотетически от одного пользователя максимальная частота запросов может составлять 2 запроса в секунду, если пренебречь затратами на доставку Запроса-Ответа, парсинг JSON, подготовку SQL, фетч и генерацией HTML.
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36630860
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-Работать оно будет так:
- есть готовые скрипты, например плагин (не помню названия, если надо вспомню) к jQuery
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36631873
Фотография -=*ShamaN*=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov-=*ShamaN*=-Работать оно будет так:
- есть готовые скрипты, например плагин (не помню названия, если надо вспомню) к jQuery

Спасибо за помощь. Сегодня уже успел посмотреть сюда . Но у меня вопрос больше не по клиентской части, а как сэкономить ресурсы на стороне сервера при частых запросах, инициируемых набором фразы на клавиатуре.
...
Рейтинг: 0 / 0
Быстрая выборка по маске
    #36633627
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=*ShamaN*=-Но у меня вопрос больше не по клиентской части, а как сэкономить ресурсы на стороне сервера при частых запросах, инициируемых набором фразы на клавиатуре.
- уже писал Вам выше, что проблема надуманная, нет проблемы с производительностью и ресурсами на описанной Вами задаче (поиск городов, улиц, станций), так как список по меркам БД не большой.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Быстрая выборка по маске
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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