|
|
|
http запрос из MySQL
|
|||
|---|---|---|---|
|
#18+
Добрый день. Возникла проблема и не получилось найти ответ самостоятельно. Собственно конструкция следующая: Есть регулярно обновляемый файл csv (2-5 минут). Где содержатся некие объекты, среди крочих характеристик которых есть GPS координаты. Информацию с этого csv надо подтягивать в на сайт (раз в 2 минуты), бд на сайте mysql. Между csv и mysql существует скрипт-прокладка на PHP, который файл csv модифицирует, берет из строки координаты, отправляет их на yandex http запросом, получает обратно XML с административной принадлежностью этих координат и записывает их в одну из ячеек этой строки. И так для каждого нового объекта. Т.к. скрипт работает не эффективно думаю как от него избавится, самым логичным (ну кроме того что бы заставить людей свои БД вести не в csv файле) мне показалось, делать запрос не из скрипта, а из MySQL (не придется весь scv каждый раз ворочать.) Внимание вопрос: можно ли из MySQL (Средствами БД или доп.библиотеками) сделать http запрос и обработать xml отвтет ? Если да то какими? Подскажите, хотя бы куда копать гуглить. Заранее спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2015, 11:19:21 |
|
||
|
http запрос из MySQL
|
|||
|---|---|---|---|
|
#18+
samolet89Между csv и mysql существует скрипт-прокладка на PHP, который файл csv модифицирует, берет из строки координаты, отправляет их на yandex http запросом, получает обратно XML с административной принадлежностью этих координат и записывает их в одну из ячеек этой строки. И так для каждого нового объекта. Т.к. скрипт работает не эффективно думаю как от него избавится, самым логичным (ну кроме того что бы заставить людей свои БД вести не в csv файле) мне показалось, делать запрос не из скрипта, а из MySQL (не придется весь scv каждый раз ворочать.)Эмм, а не проще ли будет модифицировать пхп-скрипт, чтобы он лез в базу мускля, читал оттуда данные, получал обновления по хттп и потом обновлял данные сразу в базе? ну т.е. убрать лишнюю прокладку - csv. Можно, наверное, и сам мускль научить это делать, но для этого придётся писать свои udf . Вариант с пхп мне кажется проще, тем более что половина функционала у вас уже реализована... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2015, 12:30:17 |
|
||
|
http запрос из MySQL
|
|||
|---|---|---|---|
|
#18+
Хм... действительно. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2015, 13:25:06 |
|
||
|
http запрос из MySQL
|
|||
|---|---|---|---|
|
#18+
samolet89, Добрый день. samolet89Т.к. скрипт работает не эффективно думаю как от него избавится, самым логичным (ну кроме того что бы заставить людей свои БД вести не в csv файле) мне показалось, делать запрос не из скрипта, а из MySQL (не придется весь scv каждый раз ворочать.) Не понятна эта фраза. Теперь поясню на примере (решал аналогичную задачу на PDI и делал замеры): 1) Скорость получения информации с yandex где-то 1 объект за 1 секунду или 1 строка в секунду. 2) Обработка csv порядка 5 000 - 20 000 строк за 1 секунду. 3) Вставка в СУБД 2 000 - 14 000 строк за 1 секунду (передача на удаленный сервер по локальной сети). 4) Парсинг JSON (альтернатива XML) в районе 1 400 строк за 1 секунду. Вот узкое горлышко у меня - сколько запросов посылаю к серверу yandex. В моем случае решается увеличением количества потоков, которые будут получать информацию с yandex. ИМХО Может сначала определиться с узким местом, а потом вносить изменения? Пока, как мне кажется, избавление от csv не принесет ощутимого профита в скорости, а только удобство обработки информации. PS. PDI - Pentaho Data Integration CE. С уважением, biwed.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2015, 02:58:34 |
|
||
|
http запрос из MySQL
|
|||
|---|---|---|---|
|
#18+
я ваще не понял, с чего появилась мысль что мусклом слать шттп запросы ускорит работу. и да внешние сервисы в подобных цепочках - самое узкое место... локально тысячи в секунду - что строка в файле, что запись в базе, что обьект в строке - достигаются легко, а вот 1000 запросов в секунду на удалёный АПИ...это я есчё не стречал. та даже на локалхост 1000 запросов в секунду не сделаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2015, 09:10:28 |
|
||
|
http запрос из MySQL
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Добры день. Данные БД PostgreSQL (удаленка). Таблица без индексов. Оценки справедливы только для моей задачи. На Mysql не могу протестировать, так как нет его под рукой. PS. Замеры прикрепил к сообщению. С уважением, biwed.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2015, 09:43:23 |
|
||
|
http запрос из MySQL
|
|||
|---|---|---|---|
|
#18+
samolet89Между csv и mysql существует скрипт-прокладка на PHP, который файл csv модифицирует, берет из строки координаты, отправляет их на yandex http запросом, получает обратно XML с административной принадлежностью этих координат и записывает их в одну из ячеек этой строки. И так для каждого нового объекта. Возникает вопрос - а куда эти сведения об адм. принадлежности поступают дальше? И когда? Как они вообще используются и для чего? Иными словами - а есть ли вообще смысл в том, чтобы получать их вот прям сразу, тормозя этим процесс загрузки данных? Я бы пошёл иным путём. Выполнял бы загрузку данных без этих сведений. А сами сведения об адм. принадлежности получал бы двумя путями. Первый - в плановом порядке, скрипт по шедулеру выбирает небольшую пачку не имеющих этих сведений записей, получает их и записывает в таблицу. Низкий приоритет задачи не приведёт к снижению производительности системы в части выполнения основных задач. Второй - в экстренном порядке, при обращении пользователя к данным и обнаружении, что их нет, выполнял бы запрос сведений о конкретной запрошенной пользователем записи. Задержка на секунду при интерактивном запросе - это терпимо. А если на странице есть активное содержимое - так и вовсе можно вывести "Информация запрашивается...", а по получении заменить сообщение на полученные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2015, 10:10:43 |
|
||
|
http запрос из MySQL
|
|||
|---|---|---|---|
|
#18+
2 Akina Эта информация нужна для окна-информера которое по умолчанию отображается на сайте когда пользователь на него заходит. Из последних событий нужно по ряду параметров выбрать нужное. Среди этих параметров есть и административная принадлежность. Поэтому что бы информер работал нормально, в базе должно быть на глубину примерно в 300 последних событий информация полученная с яндекса. Я решаю это так, что запрос на яндекс делаю только для новых записей. Когда csv обновляется я смотрю добавилось ли что то, или нет. И на новые записи делаю запросы до яндекса. Больше 6 объектов за раз не добавляется. В целом лопатить CSV не удобно, но для одной задачи терпимо, но недавно выяснилось, что заказчик не только добавляет записи, но и редактирует старые, и это тоже нужно вносить в базу. Вместо очередного копошения с CSV подумал сделать это нормально. Исходный csv тупо пишется во временную базу, а потом я все нужные действия произвожу, гораздо удобней чем загонять csv в массив и держать его в памяти. Поскольку все основные действия планируется между 2я базами производить, то я подумал логично было бы и запрос оттуда делать. Но если сложно, то можно оставить php прокладку, что бы временную базу модифицировать. 2 biwed.ru, alex564657498765453 Самое узкое место это действительно запросы к yandex. Что бы сократить количество этих запросов, я решил модифицировать только последние несколько записей. проблема в том, что бы при работе с csv эти записи отдельно не получить, необходимо лопатить весь csv, это неудобно, кроме того появились новые задачи (смотрите выше). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2015, 11:47:31 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=47&tid=1832987]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 320ms |

| 0 / 0 |
