Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Можно ли держать дежурный файл xml рядом с данными?  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 506
Прошу прощения за тупое название темы. Сейчас объясню что я хочу.
Есть таблица с данными о погоде за каждый день по различным городам.
Для статистики надо генерить XML-документ, который бы содержал примерную структуру:
<root>
     <record id=1>
          <city>Казань</city>    
          <temp>22.00</temp>
          <direction>north</direction>
     </record>
     <record id=100>
          <city>Саратов</city>    
          <temp>24.00</temp>
          <direction>nord-west</direction>
     </record>
...
</root>


данные обновляются не очень часто.
а вот запросы делаются регулярно. и беда в том, что SQL напрягается неимоверно. Затем, серверный код (приложение) оборачивает ответ селекта в ноды, ну и генерит xml. Это довольно расточительная операция, которая нагибает сервак на несколько минут.

Скажите, можно ли на основе текущих данных в БД сформировать средствами SQL нужный xml-файл, чтобы не генерить его каждый раз запросом кодом из приложения?
Однако, если данные в бд претерпели изменения, то это бы также отразилось на xml (т.е. добавился или удалился узел(-ы), изменилась бы информация, если к примеру, была внесена корректировка температуры по конкретному городу).
3 авг 18, 17:10    [21629027]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли держать дежурный файл xml рядом с данными?  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
автор
Скажите, можно ли на основе текущих данных в БД сформировать средствами SQL нужный xml-файл, чтобы не генерить его каждый раз запросом кодом из приложения?



сделай табличкy с xml полем и в тригере на insert/update на погоду он будет делать единый xml document на город.

A клиенты будут чисто читать уже готовый документ
3 авг 18, 17:25    [21629092]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли держать дежурный файл xml рядом с данными?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
можно через sparse, если структура подойдёт
https://www.sqlskills.com/blogs/paul/sql-server-2008-sparse-columns-and-xml-column_set/
3 авг 18, 17:57    [21629236]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли держать дежурный файл xml рядом с данными?  [new]
Col
Member

Откуда: Торонто
Сообщений: 180
palladin600,
Сервис брокер обладает нужным Вам функционалом.
Вот практически готовое рещение:
https://ajitananthram.wordpress.com/2012/05/26/auditing-external-activator/
3 авг 18, 22:54    [21629696]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли держать дежурный файл xml рядом с данными?  [new]
uaggster
Member

Откуда:
Сообщений: 827
palladin600
а вот запросы делаются регулярно. и беда в том, что SQL напрягается неимоверно. Затем, серверный код (приложение) оборачивает ответ селекта в ноды, ну и генерит xml. Это довольно расточительная операция, которая нагибает сервак на несколько минут.

Дело не в генерации хмля. Собственно, никакого различия в выводе хмл или обычной выборки - нету.
У вас тормозит запрос, который этот хмл формирует. Разберитесь с ним.
Ну, или если не получается - храните рядом предварительно просчитанные агрегаты, и вывод в xml делайте на основе них.
4 авг 18, 10:53    [21629815]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли держать дежурный файл xml рядом с данными?  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 506
uaggster
Дело не в генерации хмля. Собственно, никакого различия в выводе хмл или обычной выборки - нету.
У вас тормозит запрос, который этот хмл формирует. Разберитесь с ним.


Выделил селект из подключения к серверу, то на серваке он быстро отдаётся.
Значит дело в обёртке, которая оборачивает данные в xml-теги. Похоже, что код поочерёдно берёт запись и добавляет нужный тег полю.
По всей видимости надо делать запрос средствами SQL и возвращать уже в готовом виде как xml. Тем самым исключить из цепочки обёртку кодом приложения.
4 авг 18, 12:12    [21629858]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить