Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6 7   вперед  Ctrl      все
 Re: Получение данных через http протокол  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Yuri Abele
Вообще IMHO это извращение из сервера БД лезть в интернет.
Не знаю ни одного клиента, админы которого меня бы не побили за такое желание :-/ .....


Интернет может и не хорошо, а вот на сторону в локальной сети сходить можно, если нужно.
9 сен 15, 11:04    [18126925]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Трость
Guest
Winnipuh,

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

Поэтому тут вопрос не в безопасности... т.к. закачка будет происходит из нашего же ресурса.
9 сен 15, 11:10    [18126972]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
ART-CODE
Member

Откуда:
Сообщений: 1092
Yuri Abele,
Да, нужно быть осторожным, применяя такие методы, например, фаерволом разрешать только нужные маршруты в сети, и быть внимательным к правам на запуск такого кода - кому можно, а кому нельзя.

вот обычный VBS скрипт, (сохранить в файл с расширением .vbs и выполнить)
этот код скачает и сохранит в файл rss с хабра
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
Set oADOStream = CreateObject("ADODB.Stream")
oXMLHTTP.Open "GET", "http://habrahabr.ru/rss/interesting/", 0 
oXMLHTTP.SendoADOStream.Mode = 3
oADOStream.Type = 1
oADOStream.Open
oADOStream.Write oXMLHTTP.responseBody
oADOStream.SaveToFile "C:\TEMP\habr.rss.xml", 2 

нужно переделать вызов с CreateObject на sp_OACreate и добавить обработку ошибок.
Ну, и сохранение в файл, очевидно - заменить на парсинг.
9 сен 15, 11:11    [18126989]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Winnipuh
Yuri Abele
Вообще IMHO это извращение из сервера БД лезть в интернет.
Не знаю ни одного клиента, админы которого меня бы не побили за такое желание :-/ .....

Интернет может и не хорошо, а вот на сторону в локальной сети сходить можно, если нужно.

Дело наверное вкуса, но кесарю кесарево. RDBMS для работы с данными. А гонять запросы между RDBMS и какими-то HTTP ресурсами должны те, кто под это лучше заточены - средства интеграции типа SSIS или PDI.
9 сен 15, 11:13    [18127006]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Трость
Guest
ART-CODE
Yuri Abele,
Да, нужно быть осторожным, применяя такие методы, например, фаерволом разрешать только нужные маршруты в сети, и быть внимательным к правам на запуск такого кода - кому можно, а кому нельзя.

вот обычный VBS скрипт, (сохранить в файл с расширением .vbs и выполнить)
этот код скачает и сохранит в файл rss с хабра
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
Set oADOStream = CreateObject("ADODB.Stream")
oXMLHTTP.Open "GET", "http://habrahabr.ru/rss/interesting/", 0 
oXMLHTTP.SendoADOStream.Mode = 3
oADOStream.Type = 1
oADOStream.Open
oADOStream.Write oXMLHTTP.responseBody
oADOStream.SaveToFile "C:\TEMP\habr.rss.xml", 2 

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


Спасибо!
А если необходимо сразу сохранить полученный файл в БД?
9 сен 15, 11:20    [18127054]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
ART-CODE
Да, нужно быть осторожным, применяя такие методы, например, фаерволом разрешать только нужные маршруты в сети, и быть внимательным к правам на запуск такого кода - кому можно, а кому нельзя.

И это тоже, но главное не это, а то, что базы данных исторически не для того делались.
Да, есть всякие расширения, а чего нет можно дописать, но блин, как-то не правильно это.
На проектах где я принимаю участие никогда даже идей таких не возникает - из базы данных к HTTP ресурсам лезть.
9 сен 15, 11:33    [18127148]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
ART-CODE
Member

Откуда:
Сообщений: 1092
Посмотрите, здесь много на эту тему было.
Смысл в том, что в результате, ответ находится в переменной, а уж переменную - куда хотите туда и insert/update.
9 сен 15, 11:35    [18127164]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
ART-CODE
Member

Откуда:
Сообщений: 1092
Yuri Abele,
Ну, разные задачи бывают.
Можно рассматривать вопросы с точки зрения:
- безопасности
- нагрузки
- производительности.

Если по всем этим вопросам все Ок, то можно и из базы дернуть HTTP.
А если это создает существенную нагрузку, создает уязвимость, или слишком медленно и не эффективно - то внешнее приложение.
Как-то так.
9 сен 15, 11:42    [18127193]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7869
Yuri Abele
Вообще IMHO это извращение из сервера БД лезть в интернет.
Не знаю ни одного клиента, админы которого меня бы не побили за такое желание :-/ .....


Категорически поддерживаю. Если сервер что-то сможет, не значит, что он должен это делать. Надо все-таки понимать - где заканчивается SQL, а где начинается коммерческое привлечение и соблазн "швейцарского ножа".

Грамотная архитектура приложения всегда состоит в специализации и изоляции отдельных компонентов.
Сервер не должен быть активным звеном во внешний мир в такой архитектуре, он должен исполнять обязанности хранилища, отвечающего на запросы.
9 сен 15, 11:52    [18127262]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Yuri Abele
ART-CODE
Да, нужно быть осторожным, применяя такие методы, например, фаерволом разрешать только нужные маршруты в сети, и быть внимательным к правам на запуск такого кода - кому можно, а кому нельзя.

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


Исторически - да, но сейчас многое изменилось и меняется.
Если бы лет 10-20 назад кто рассказал про NoSQL его бы просто посчитали малограмотным. Однако же сейчас это работает.

А как относятся админы твоих заказчиков к Service Broker?

Это тоже в общем в стороне от базы в традиционном понимании.
9 сен 15, 11:56    [18127290]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7869
Winnipuh,

дык сервис брокер относится к категории самообслуживания, как и сервер агент. Да, он может лазить наружу и даже на этом делают обновления информации на клиенте. Но я считаю, что это системы повышенной категории сложности обслуживания и сопровождения. Пусть уж оно внутри работает.
9 сен 15, 12:00    [18127321]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Winnipuh
Это тоже в общем в стороне от базы в традиционном понимании.

Забыли добавить "в традиционном понимании Microsoft".
Читал когда-то классиков от Oracle. Там основная идея - "всё что может быть реализовано в базе, должно быть в ней реализовано".
Ну, или где-то около того.
Это и понятно, если сравнить PL/SQL и T-SQL.
9 сен 15, 12:12    [18127409]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Владислав Колосов
Winnipuh,

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


Да, но дело даже не в этом, а в том, что сами Брокерские штучки тоже не являются традиционными для баз данных, однако очень полезны.
Кроме того, изнутри одного сервера-базы можно обмениваться сообещниями с другим сервером. Да и сама асинхронная обработка тоже инородное тело в базе.
Я вот сделал SQLCLR процедуру и пишу-читаю во внешний Redis сервер всякие кэши, все работает.
9 сен 15, 12:25    [18127525]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Glory
Member

Откуда:
Сообщений: 104760
Jovanny
Там основная идея - "всё что может быть реализовано в базе, должно быть в ней реализовано".

Т.е. видео-конференции, например, тоже в базе организовывать ?
9 сен 15, 12:28    [18127542]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Glory, не перегибайте. Хотя кто знает... :)
9 сен 15, 12:41    [18127650]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Glory
Member

Откуда:
Сообщений: 104760
Jovanny
Glory, не перегибайте.

Т.е. "все" - это все таки не все ?
9 сен 15, 12:44    [18127667]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Jovanny
Winnipuh
Это тоже в общем в стороне от базы в традиционном понимании.

Забыли добавить "в традиционном понимании Microsoft".
Читал когда-то классиков от Oracle. Там основная идея - "всё что может быть реализовано в базе, должно быть в ней реализовано".
Ну, или где-то около того.
Это и понятно, если сравнить PL/SQL и T-SQL.


когда найдёте этих классиков поделитесь ссылкой, а то как-то ....
9 сен 15, 12:49    [18127702]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Winnipuh
Yuri Abele
пропущено...

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


Исторически - да, но сейчас многое изменилось и меняется.
Если бы лет 10-20 назад кто рассказал про NoSQL его бы просто посчитали малограмотным. Однако же сейчас это работает.

А как относятся админы твоих заказчиков к Service Broker?

Это тоже в общем в стороне от базы в традиционном понимании.

"- Как Вы относитесь к ***?
- Я к ним не отношусь!" :-)

Да никак не относятся, точнее говоря стараются подобные решения избегать.
(Я вот тут работаю: inovex.de и это те клиенты, которые разрешают себя в portfolio упоминать, а есть такие, которые этого не разрешают.)
Ну так вот, как я сказал они ВСЕ стараются избегать подобных решений, причем тут не админы против, а архитекторы.
Бывают, конечно, асинхронные архитектуры, в которых нужно что-то такое, но это скорее исключения из-за неизбежности.

Но в нашем случае, подобное решение стоилось бы трёхсторонне:
1. Сервер БД
2. HTTP ресурсы
3. Посредник/интегратор - SSIS к примеру, хотя мне лично намного больше PDI нравится (в отдельной ветке могу эти оба продукта сравнить)
9 сен 15, 12:49    [18127706]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Glory,

Естественно, консольные приложения я писать в базе не буду. Но если надо получить данные от веб-сервисов, запустить внешнюю программу или получить перевод от Google или Microsoft Translator, к c# разработчикам я обращаться не буду. И не буду писать Windows-сервисы, которые будут опрашивать базу, не нужно ли ей чего и транслировать запросы базы в Инет. И при миграции мне будет достаточно развернуть базу, а не инсталлировать кучу Windows-сервисов.
9 сен 15, 12:53    [18127740]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Glory
Member

Откуда:
Сообщений: 104760
Jovanny
Естественно, консольные приложения я писать в базе не буду.

Почему же ? Чем они хуже ?

Jovanny
Но если надо получить данные от веб-сервисов, запустить внешнюю программу или получить перевод от Google или Microsoft Translator, к c# разработчикам я обращаться не буду. И не буду писать Windows-сервисы, которые будут опрашивать базу, не нужно ли ей чего и транслировать запросы базы в Инет. И при миграции мне будет достаточно развернуть базу, а не инсталлировать кучу Windows-сервисов.

Т.е. вы и только вы решаете, что, где и как должно будет реализовано ?
9 сен 15, 12:56    [18127755]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Jovanny,

Вы могли бы убедить, что упомянутое вами лучше (удобнее, дешевле, ETC) засунуть в базу, чем во внешнее решение/посредник?
9 сен 15, 12:57    [18127762]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Yuri Abele
Но в нашем случае, подобное решение стоилось бы трёхсторонне:
1. Сервер БД
2. HTTP ресурсы
3. Посредник/интегратор - SSIS к примеру, хотя мне лично намного больше PDI нравится (в отдельной ветке могу эти оба продукта сравнить)

Добавлю немного:
причем, если необходимо произвести обращение к внегнему HTTP сервису по изменению в таблице, то можно настроить Job, который дёргает SSIS-пакет и тот уже осуществляет все "вылозки" во вне
9 сен 15, 13:00    [18127783]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Glory
Т.е. вы и только вы решаете, что, где и как должно будет реализовано ?
Не понимаю, причём тут это.
Но часто я и менеджеры не возражают.
Всё ведь работает и претензий нет.
9 сен 15, 13:35    [18128018]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Jovanny
Glory
Т.е. вы и только вы решаете, что, где и как должно будет реализовано ?
Не понимаю, причём тут это.
Но часто я и менеджеры не возражают.
Всё ведь работает и претензий нет.

Претензии начнутся, когда через пару лет нужно будет что-то изменить, а разработчиков уже нет (скажем ушли на повышение в фирму конкурента :-) )
9 сен 15, 13:37    [18128032]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных через http протокол  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Yuri Abele
причем, если необходимо произвести обращение к внегнему HTTP сервису по изменению в таблице, то можно настроить Job, который дёргает SSIS-пакет и тот уже осуществляет все "вылозки" во вне

Т.е. всё-таки Job (SQL Server), SSIS-пакет (SQL Server), но ни в коем случае не
Glory
Напишите программу и запускайте ее
?
9 сен 15, 13:43    [18128067]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6 7   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить