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

Откуда:
Сообщений: 84
Здравствуйте, есть задача ооочень быстро раскидать XML на базе оч сложной XML-схемы (около 400 типов) по реляционным таблицам. Каждый экземпляр документа весит примерно мегабайт. Подскажите, пожалуйста, на какой инструмент ориентироваться? Что будет быстрее при прочих равных - разобрать xml по таблицам прям внутри базы хранимками или возложить это на .NET/CLR?
Есть еще и третий вариант - Native XML Storage. Насколько эта штука зрелая, быстрая и пригодная для продакшна, при условии, что данные в документах рекурсивны и их надо будет довольно часто обновлять, и группировать данные из нескольких сотен и тысяч XML-документов?
4 июн 19, 22:19    [21901982]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30768
pbda
Что будет быстрее при прочих равных - разобрать xml по таблицам прям внутри базы хранимками или возложить это на .NET/CLR?
Быстрее всего - XML Bulk Load (SQLXML); то же самое можно сделать на .NET
"прям внутри базы хранимками" - непонятно, что конкретно имеется в виду, но любой вариант будет медленее вышеописанных.
4 июн 19, 23:28    [21902007]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
pbda
Member

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

> Быстрее всего - XML Bulk Load (SQLXML); то же самое можно сделать на .NET
Спасибо, попробовал SQLXML с попыткой автоматического создания таблиц по XSD, не взлетело: "multiple base for a derived type is not supported". Придётся делать все таблицы руками.

>"прям внутри базы хранимками" - непонятно, что конкретно имеется в виду, но любой вариант будет медленее вышеописанных.
Императивный разбор, DOM + XPath
4 июн 19, 23:57    [21902017]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30768
pbda
>"прям внутри базы хранимками" - непонятно, что конкретно имеется в виду, но любой вариант будет медленее вышеописанных.
Императивный разбор, DOM + XPath
Да, это, конечено, будет медленнее, чем Bulk
5 июн 19, 07:34    [21902070]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
многолетний опыт в BI с каждым годом всё больше убеждает, что чем сложнее исходные данные, тем менее рекомендуется решать все скриптами.
Поддерживать и развивать такое убьётесь!

Необходим графический ETL инструмент, SSIS например.
Я хоть сам и рьяный сторонник всего MICROSOFTовского, особенно .NET и MSSQL, но для такой задачи, для ETL процессов я бы взял (дело вкуса, но мне нравится он) бесплатный PDI (Pentaho Data Integration).
А как база - MSSQL.

Google Images: "pentaho data integration xml input"

P.S. просьба не бить ногами - я понимаю, что в моем постинге off-topic, но ответ в другом форуме бы, помог не сильно :-)
5 июн 19, 09:52    [21902168]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30768
Yuri Abele
многолетний опыт в BI с каждым годом всё больше убеждает, что чем сложнее исходные данные, тем менее рекомендуется решать все скриптами.
Я всегда считал ровно наоборот - для простых данных хорошо подходят графические инструменты, для сложных альтернативы коду (скриптам) нет.
Правда, у меня опыт с графическеими инструментами ETL ограничен только SSIS (DTS), возможно, другие инструменты дают больше возможности разработчикам.
5 июн 19, 10:03    [21902182]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
alexeyvg
... Я всегда считал ровно наоборот - для простых данных хорошо подходят графические инструменты, для сложных альтернативы коду (скриптам) нет.

Принципиально вот это: "Поддерживать и развивать такое убьётесь!"
Да, никто и не спорит, что скриптами можно написать гораздо более замороченную логику, но ... могу только еще раз себя любимого :-) процетировать: "Поддерживать и развивать такое убьётесь!"
5 июн 19, 10:10    [21902193]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30768
Yuri Abele
alexeyvg
... Я всегда считал ровно наоборот - для простых данных хорошо подходят графические инструменты, для сложных альтернативы коду (скриптам) нет.

Принципиально вот это: "Поддерживать и развивать такое убьётесь!"
Да, никто и не спорит, что скриптами можно написать гораздо более замороченную логику, но ... могу только еще раз себя любимого :-) процетировать: "Поддерживать и развивать такое убьётесь!"
Да, я исключительно про "развивать и поддерживать", остальное не так критично.

- Микрософт не предоставляет разумного пути для работы над пакетом нескольких девелоперов.
- Не даёт возможности хранить пакет в сорс-контроле, с просмотром в человеческом виде сделанных изменений, и привязкой изменений к требованиям, проектам и т.д. (вот чтоб можно было сказать: "видим по истории, что 05.06.2019 Вася поменял тип выходной колонки ККК с decimal(13.2) на decimal(15.2), по запросу клиента №ННН")
- Не позволяет делать нормальные ветки, которые можно отдельно развивать и мерджить (например, Вася поменял импорт в таблицу А, через 2 дня Петя в таблицу Б, но задеплоить нужно будет изменения Пети, а потом через месяц смерджить изменения Васи с основным кодом)
- Не даёт возможности делать вменяемый поиск в пакете
- Пакеты плохо поддерживают модульность, обычно обработку для разных таблиц нужно делать (рисовать млышкой) по отдельности, в крайнем случае копи-паст и замена - но как это поддерживать? Если я нашёл ошибку, или внёс изменения по требованиям, я должен мышкой кликать на каждый из 200 остальных подобных квадратиков, и менять там руками? А как убедиться, что я поменял всё одинаково? И это "удобно поддерживать и развивать"?

Всё это критично даже не для замороченной логики, а просто для более менее объёмного ETL (то есть когда логика простая, но объектов много).

Мы когда то перешли в ETL с квадратиков, просто на такск типа Script, который при выполнении создаёт пакет и его выполняет :-) Хотя, согласитесь, это извращение. Но поддерживать стало более менее приемлемо.
Но потом окончательно отказались от SSIS, потому что его поддержка - это полный трэш.
5 июн 19, 11:28    [21902307]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Владислав Колосов
Member

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

наискорейшим вариантом будет написать разборщик-загрузчик на С++/С# с применением SMO.
5 июн 19, 13:12    [21902459]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30768
Владислав Колосов
разборщик-загрузчик на С++/С# с применением SMO.
А как это, в чём идея?
5 июн 19, 13:16    [21902463]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Владислав Колосов
Member

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

я бы начал с простого: DMO + bulk операции, но веры в производительность DMO как-то нет. Возможно, пришлось бы писать разборщик файла контектстно к документу, а не универсальный. Тем более, что XML почти никогда не содержит суррогатные ключи.
5 июн 19, 13:24    [21902474]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3459
Yuri Abele
многолетний опыт в BI с каждым годом всё больше убеждает, что чем сложнее исходные данные, тем менее рекомендуется решать все скриптами.
Поддерживать и развивать такое убьётесь!

Необходим графический ETL инструмент, SSIS например.
Я хоть сам и рьяный сторонник всего MICROSOFTовского, особенно .NET и MSSQL, но для такой задачи, для ETL процессов я бы взял (дело вкуса, но мне нравится он) бесплатный PDI (Pentaho Data Integration).
А как база - MSSQL.

Google Images: "pentaho data integration xml input"

P.S. просьба не бить ногами - я понимаю, что в моем постинге off-topic, но ответ в другом форуме бы, помог не сильно :-)


ссылку можно, где его (свободный) скачать?
5 июн 19, 13:53    [21902504]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 537
alexeyvg
Микрософт не предоставляет разумного пути для работы над пакетом нескольких девелоперов.
alexeyvg
Всё это критично даже не для замороченной логики, а просто для более менее объёмного ETL (то есть когда логика простая, но объектов много)

Все так. Сами делали XSLT преобразования, чтобы DTSX пакеты работали, но их можно было сравнивать через diff, мержить и т.п. Но все равно это через ж.

alexeyvg
Если я нашёл ошибку, или внёс изменения по требованиям, я должен мышкой кликать на каждый из 200 остальных подобных квадратиков, и менять там руками?

В общем, перешли на генерацию стандартных пакетов через С#, теперь BIML, а нестандартные - делаются руками на основании стандартной заготовки и потом инжектятся в проект. Это ETL на примерно 1200 пакетов (пакет - таблица).
Такой псевдо-code-driven ETL.
5 июн 19, 14:49    [21902584]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Сон Веры Павловны
Member

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

наискорейшим вариантом будет написать разборщик-загрузчик на С++/С# с применением SMO.

Если уж ручной разбор/загрузка на С++/С#, то SMO там зачем нужны?
5 июн 19, 15:19    [21902635]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
aleks222
Member

Откуда:
Сообщений: 851
Владислав Колосов
pbda,
наискорейшим вариантом будет написать разборщик-загрузчик на С++/С# с применением SMO.

Бред.

.XSD схема + sqlXmlBulkLoad + T-SQL

- вот истинный дао.

Это - .XSD схема + sqlXmlBulkLoad - зашвырнет данные в таблицы tempdb за секунды.
Ну, если только XML не генерировали альтернативно одаренные, что, увы, случается.
Все остальное - T-SQL.
5 июн 19, 15:40    [21902663]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Сон Веры Павловны,

если не ошибаюсь, SMO умеет выполнить балк-загрузку.
5 июн 19, 17:54    [21902838]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
PDI - Pentaho Data Integration
Ролг Хупин
ссылку можно, где его (свободный) скачать?

тут: Pentaho Download - Last version
или
тут: Pentaho Download - All versions


Поддерживать и развивать такое убьётесь!

alexeyvg
- ... работа над пакетом нескольких девелоперов.
- ... хранить пакет в сорс-контроле ...
- Не даёт возможности делать вменяемый поиск в пакете

XML-Schema для SSIS пакетов плохо мержится, хотя в последних версиях Microsoft тут сильно улучшили так, что умные XML-merge инструменты могут привязываться к ID узлов и справляются сравнивать и сливать.

XML-Schema от PDI как-то проще и логичнее, ее проще MERGEить.

alexeyvg
- Пакеты плохо поддерживают модульность, обычно обработку для разных таблиц нужно делать (рисовать млышкой) по отдельности, в крайнем случае копи-паст и замена - но как это поддерживать? Если я нашёл ошибку, или внёс изменения по требованиям, я должен мышкой кликать на каждый из 200 остальных подобных квадратиков, и менять там руками? А как убедиться, что я поменял всё одинаково? И это "удобно поддерживать и развивать"?

А тут лучше в сторону BIML смотреть (это если для генерить код для SSIS или PDI)
У PDI есть еще Meta Data Injection - позволяет динамику мета данных (столбцы, к примеру) на лету
5 июн 19, 18:19    [21902875]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
... а BIML - это тот же T4 из Visual Studio, только с надстройками типа SMO, но при этом (в сравнении с T4) без отладки.
На счет надстройки над T4 движком не моя фантазия - общался тесно разработчиками BIML
5 июн 19, 18:26    [21902881]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
aleks222
Member

Откуда:
Сообщений: 851
Yuri Abele
PDI - Pentaho Data Integration
Ролг Хупин
ссылку можно, где его (свободный) скачать?

тут: Pentaho Download - Last version
или
тут: Pentaho Download - All versions


Поддерживать и развивать такое убьётесь!

alexeyvg
- ... работа над пакетом нескольких девелоперов.
- ... хранить пакет в сорс-контроле ...
- Не даёт возможности делать вменяемый поиск в пакете

XML-Schema для SSIS пакетов плохо мержится, хотя в последних версиях Microsoft тут сильно улучшили так, что умные XML-merge инструменты могут привязываться к ID узлов и справляются сравнивать и сливать.

XML-Schema от PDI как-то проще и логичнее, ее проще MERGEить.

alexeyvg
- Пакеты плохо поддерживают модульность, обычно обработку для разных таблиц нужно делать (рисовать млышкой) по отдельности, в крайнем случае копи-паст и замена - но как это поддерживать? Если я нашёл ошибку, или внёс изменения по требованиям, я должен мышкой кликать на каждый из 200 остальных подобных квадратиков, и менять там руками? А как убедиться, что я поменял всё одинаково? И это "удобно поддерживать и развивать"?

А тут лучше в сторону BIML смотреть (это если для генерить код для SSIS или PDI)
У PDI есть еще Meta Data Injection - позволяет динамику мета данных (столбцы, к примеру) на лету


Не смеши мои тапочки.
Громадье "интеллектуальных инструментов" - верный признак нищеты мозга.
5 июн 19, 18:26    [21902882]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
aleks222
Не смеши мои тапочки.
Громадье "интеллектуальных инструментов" - верный признак нищеты мозга.

Чую, что обхамили, но чё сказать-то хотел - не понятно.
5 июн 19, 18:31    [21902889]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
SISS пакеты надо уметь готовить. Для тех, кто работал с ними поверхностно, невдомёк, что почти для каждого (!) параметра задачи можно использовать подстановочную переменную. При этом изменения вносятся в одном месте - в вычисляемое выражение переменной, все 200 объектов редактировать не потребуется для изменения, например, базового каталога выгрузки.
5 июн 19, 18:34    [21902892]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
aleks222
Member

Откуда:
Сообщений: 851
Yuri Abele
aleks222
Не смеши мои тапочки.
Громадье "интеллектуальных инструментов" - верный признак нищеты мозга.

Чую, что обхамили, но чё сказать-то хотел - не понятно.

Объясняю популярно, для невежд.

Использование "интеллектуальных средств разработки" рассчитано на низкоквалифицированных программистов.
Основная цель - снизить расходы на рабочую силу.
Это печальная неизбежность. Да.

Но, на практике, такие средства ускоряют разработку только весьма шаблонных и простых вещей.
Ценой неоправданных затрат ресурсов.
Любой "шаг в сторону" приводит к усложнению кода и абсолютной его неподдерживаемости.
Плюс проблемы с производительностью и т.д. и т.п.

Основная задача MS SQL - перемалывание данных.
Так нафига костыли?
5 июн 19, 18:42    [21902898]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30768
Владислав Колосов
SISS пакеты надо уметь готовить. Для тех, кто работал с ними поверхностно, невдомёк, что почти для каждого (!) параметра задачи можно использовать подстановочную переменную. При этом изменения вносятся в одном месте - в вычисляемое выражение переменной, все 200 объектов редактировать не потребуется для изменения, например, базового каталога выгрузки.
А для изменений, например, маппинга полей источник-приёмник?
В DTS это всё было легко делать, но посре замены его на SSIS ситуация стала катастрофической, программируемость потеряна практически полностью.

Ну и сравнение версий с сорс-контроле не облегчается, при использовании "подстановочных переменных" :-)
6 июн 19, 08:11    [21903097]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5631
Владислав Колосов
Сон Веры Павловны,

если не ошибаюсь, SMO умеет выполнить балк-загрузку.

C# это тоже умеет, без SMO.
6 июн 19, 09:29    [21903156]     Ответить | Цитировать Сообщить модератору
 Re: Самый быстрый XML > таблицы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
SISS пакеты надо уметь готовить. Для тех, кто работал с ними поверхностно, невдомёк, что почти для каждого (!) параметра задачи можно использовать подстановочную переменную. При этом изменения вносятся в одном месте - в вычисляемое выражение переменной, все 200 объектов редактировать не потребуется для изменения, например, базового каталога выгрузки.
6 июн 19, 13:29    [21903453]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить