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

Откуда: Москва
Сообщений: 115
Добрый день!

Требуется реализовать передачу информации о некоторых объектах (ORDERS) между филиалами и центральным офисом.

Планируется реализовать это дело путём обмена xml-файликами.

Структура несложная: головные объекты ORDERS и несколько дочерних объектов (ORDER_DETAILS и CUSTOMER_ADDRESSES).

Как лучше структурировать xml-структуру?

Концептуально правильнее вроде бы так:
<RootName>
  <ORDERS элементы...
         <ORDER_DETAILS элементы.../>
         <CUSTOMER_ADDRESSES элементы.../>
   </ORDERS>
...
</RootName>


Но реализация такой схемы требует от меня перебора данных в цикле по ID_ORDER.

Второй вариант - выгружаем все данные каждой из таблиц в отдельную секцию.

<RootName>
   <ORDERS элементы.../>
   <ORDER_DETAILS элементы.../>
   <CUSTOMER_ADDRESSES элементы.../>
</RootName>


Если же поделитесь своим опытом реализации подобных задач, то будет просто отлично.
4 июн 12, 13:38    [12661463]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
Glory
Member

Откуда:
Сообщений: 104751
zenk
Но реализация такой схемы требует от меня перебора данных в цикле по ID_ORDER.

Почемы вы так решили ?

zenk
Как лучше структурировать xml-структуру?

Лучше для чего ?
С точки зрения скорости лучше плоские файлы
4 июн 12, 13:54    [12661578]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
zenk
Member

Откуда: Москва
Сообщений: 115
Glory,

А как без цикла?
4 июн 12, 13:57    [12661609]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
zenk, имхо надо выгружать в том виде,в котором проще загружать
на мой взгляд проще загружать, когда
<RootName>
   <ORDERS элементы.../>
   <ORDER_DETAILS элементы.../>
   <CUSTOMER_ADDRESSES элементы.../>
</RootName>

Загрузил клиентов,загрузил шапку документа,загрузил тело документа.
4 июн 12, 13:58    [12661614]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
Glory
Member

Откуда:
Сообщений: 104751
zenk
А как без цикла?

Запросом, как же еще
4 июн 12, 13:59    [12661618]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
zenk
Member

Откуда: Москва
Сообщений: 115
Glory,

С точки зрения некой абстрактной "правильности".

Объёмы данных небольшие, проблем со скоростью поэтому не будет.
4 июн 12, 14:09    [12661695]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
Glory
Member

Откуда:
Сообщений: 104751
zenk
С точки зрения некой абстрактной "правильности".

Объёмы данных небольшие, проблем со скоростью поэтому не будет.

Зачем создавать некий дополнительный формат ?
Чтобы просто больше времени уходило на формирование и парсинг ?
4 июн 12, 14:11    [12661714]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
zenk
Member

Откуда: Москва
Сообщений: 115
Glory
zenk
А как без цикла?

Запросом, как же еще


Так ведь у меня несколько дочерних объектов.

Поэтому вывести дочерние простым JOIN не получится.

Формально, конечно, можно вывести через UNION,
но ведь в этом случае придётся в запросы для дочерних объектов добивать немеряное число фиктивных полей
для синхронизации структуры выходного массива со структурой всех дочерних объектов.
4 июн 12, 14:17    [12661778]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
Glory
Member

Откуда:
Сообщений: 104751
zenk
Так ведь у меня несколько дочерних объектов.

Поэтому вывести дочерние простым JOIN не получится.

Не получится и у меня не получается - это разные вещи.

zenk
Формально, конечно, можно вывести через UNION,
но ведь в этом случае придётся в запросы для дочерних объектов добивать немеряное число фиктивных полей

И поэтому давайте использовать цикл ?
4 июн 12, 14:20    [12661821]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
zenk,

Создайте БД с неоходимой структурой , скопируйте в неё днанные, перенесите на другой сервер.
Только запросы, только бэкапы, ничего лишнего.
4 июн 12, 14:22    [12661833]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
zenk
Member

Откуда: Москва
Сообщений: 115
Glory
zenk
Так ведь у меня несколько дочерних объектов.

Поэтому вывести дочерние простым JOIN не получится.

Не получится и у меня не получается - это разные вещи.


Так есть ли способ, отличный от UNION?

Glory
zenk
Формально, конечно, можно вывести через UNION,
но ведь в этом случае придётся в запросы для дочерних объектов добивать немеряное число фиктивных полей

И поэтому давайте использовать цикл ?


Ну, с точки зрения простоты кода и его логичности я бы предпочёл именно курсор, даже в ущерб производительности.
4 июн 12, 15:08    [12662144]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
Glory
Member

Откуда:
Сообщений: 104751
zenk
Так есть ли способ, отличный от UNION?

Откуда я знаю. Вы же не привели ни исходных данных, ни желаемого результата

zenk
Ну, с точки зрения простоты кода и его логичности я бы предпочёл именно курсор, даже в ущерб производительности.

Т.е. цикл из -цати строк проще и логичнее одного запроса ? Пусть даже и с UNION ?
4 июн 12, 15:21    [12662264]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
shaden
Member

Откуда: Башкортостан
Сообщений: 165
Я бы SSIS использовал для подобной задачи.
5 июн 12, 10:28    [12665937]     Ответить | Цитировать Сообщить модератору
 Re: Передача объектов через XML  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
zenk, совершенно неважно в каком формате. Фиолетово какой XSD вы подадите провайдеру для закачки/выкачки. Скорость будет сопоставимая. Данные будут примерно одинакового размера.

На самом деле тут всё просто. Т.к. это будет делается 100500 раз автоматически (по таймингу или событию) и формат не меняется часто, то можно налабать XSD + стандартный кусок скрипта. Положить и забить.

Всякое мышкодрочество через SSIS тут нафиг не нужны. Но как вы знаете на вкус и цвет - всё равно фломастеры.

Пример: 12410359

Почему XML? Кошерно? Православие моска?
Если MS SQL то почему не остановились на обычных flat файлах через BCP?
Или вы думаете что поменять БД это проще чем поменять формат файла?
5 июн 12, 16:24    [12669425]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить